Adam / ora /__init__.py
t.me/xtekky
added ora x-signed-token header
8350bc6
raw
history blame
No virus
2.38 kB
from ora.model import CompletionModel
from ora.typing import OraResponse
from requests import post
from time import time
from random import randint
from ora._jwt import do_jwt
user_id = None
session_token = None
class Completion:
def create(
model : CompletionModel,
prompt: str,
includeHistory: bool = True,
conversationId: str or None = None) -> OraResponse:
extra = {
'conversationId': conversationId} if conversationId else {}
cookies = {
"cookie" : f"__Secure-next-auth.session-token={session_token}"} if session_token else {}
json_data = extra | {
'chatbotId': model.id,
'input' : prompt,
'userId' : user_id if user_id else model.createdBy,
'model' : model.modelName,
'provider' : 'OPEN_AI',
'includeHistory': includeHistory}
response = post('https://ora.sh/api/conversation',
headers = cookies | {
"host" : "ora.sh",
"authorization" : f"Bearer AY0{randint(1111, 9999)}",
"user-agent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
"origin" : "https://ora.sh",
"referer" : "https://ora.sh/chat/",
"x-signed-token": do_jwt(json_data)
},
json = json_data).json()
if response.get('error'):
raise Exception('''set ora.user_id and ora.session_token\napi response: %s''' % response['error'])
return OraResponse({
'id' : response['conversationId'],
'object' : 'text_completion',
'created': int(time()),
'model' : model.slug,
'choices': [{
'text' : response['response'],
'index' : 0,
'logprobs' : None,
'finish_reason' : 'stop'
}],
'usage': {
'prompt_tokens' : len(prompt),
'completion_tokens' : len(response['response']),
'total_tokens' : len(prompt) + len(response['response'])
}
})