t.me/xtekky commited on
Commit
8350bc6
1 Parent(s): 600525e

added ora x-signed-token header

Browse files
Files changed (4) hide show
  1. ora/__init__.py +12 -7
  2. ora/_jwt.py +75 -0
  3. ora/model.py +7 -5
  4. testing/ora_test.py +15 -0
ora/__init__.py CHANGED
@@ -3,6 +3,7 @@ from ora.typing import OraResponse
3
  from requests import post
4
  from time import time
5
  from random import randint
 
6
 
7
  user_id = None
8
  session_token = None
@@ -19,6 +20,15 @@ class Completion:
19
  cookies = {
20
  "cookie" : f"__Secure-next-auth.session-token={session_token}"} if session_token else {}
21
 
 
 
 
 
 
 
 
 
 
22
  response = post('https://ora.sh/api/conversation',
23
  headers = cookies | {
24
  "host" : "ora.sh",
@@ -26,14 +36,9 @@ class Completion:
26
  "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",
27
  "origin" : "https://ora.sh",
28
  "referer" : "https://ora.sh/chat/",
 
29
  },
30
- json = extra | {
31
- 'chatbotId': model.id,
32
- 'input' : prompt,
33
- 'userId' : user_id if user_id else model.createdBy,
34
- 'model' : model.modelName,
35
- 'provider' : 'OPEN_AI',
36
- 'includeHistory': includeHistory}).json()
37
 
38
  if response.get('error'):
39
  raise Exception('''set ora.user_id and ora.session_token\napi response: %s''' % response['error'])
 
3
  from requests import post
4
  from time import time
5
  from random import randint
6
+ from ora._jwt import do_jwt
7
 
8
  user_id = None
9
  session_token = None
 
20
  cookies = {
21
  "cookie" : f"__Secure-next-auth.session-token={session_token}"} if session_token else {}
22
 
23
+ json_data = extra | {
24
+ 'chatbotId': model.id,
25
+ 'input' : prompt,
26
+ 'userId' : user_id if user_id else model.createdBy,
27
+ 'model' : model.modelName,
28
+ 'provider' : 'OPEN_AI',
29
+ 'includeHistory': includeHistory}
30
+
31
+
32
  response = post('https://ora.sh/api/conversation',
33
  headers = cookies | {
34
  "host" : "ora.sh",
 
36
  "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",
37
  "origin" : "https://ora.sh",
38
  "referer" : "https://ora.sh/chat/",
39
+ "x-signed-token": do_jwt(json_data)
40
  },
41
+ json = json_data).json()
 
 
 
 
 
 
42
 
43
  if response.get('error'):
44
  raise Exception('''set ora.user_id and ora.session_token\napi response: %s''' % response['error'])
ora/_jwt.py ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import jwt
2
+ from datetime import datetime, timedelta
3
+ # from cryptography.hazmat.primitives import serialization
4
+ # from cryptography.hazmat.primitives.serialization import load_pem_private_key
5
+ # from cryptography.hazmat.backends import default_backend
6
+
7
+
8
+ def do_jwt(json_data: dict):
9
+
10
+ private_key = b'''-----BEGIN RSA PRIVATE KEY-----
11
+ MIIJKAIBAAKCAgEAxv9TLZP2TnsR512LqzT52N6Z9ixKmUA11jy0IXH0dEbdbfBw
12
+ eeWrXoTuIYcY8Dkg/+q33ppfujYfb0z22bs/CZ63+jBL2UmxG/0XIzmsQlHSgJd/
13
+ rnbERwIt7/ZjOHAcNrAzI0N11AI8AT0+M3XFOGRoIKzoc3Juxl7eyyPPEkNZMkEv
14
+ lYfDN5AMD/+4pZ+7SCEzUCyGtBejW2P+NwTvjBxhLjIoG+m7yh81RoIBnO+Z1o5X
15
+ ZtospuWZe1L6GNh+zezeHIyBGYgGgYbPboQ8QeHhoh+n0PuZB0GQqorqfxHjB38t
16
+ yB4qsRGi10UNcohvFhglZk8kdMYBTd0M5ik5t4sx/ujjF57gX7dCKipHimDy7McY
17
+ ElVLTDoSkwD/Lg3tV0utky42dL/iIMePlHfMrw/m2oAm33/dCaiAW8grNkJPjcwo
18
+ Y8pnqpFGgAZX+6WalQCfoSStV4kYYlaq11DB6dZjDYoKLRIyH7MCAmMxms9569qe
19
+ 5gFuyQWTZgXlKoj2Zd7XIaIs5s/A6PFt7sxk8mOY/DspSbygZZCnMH3+or/8trH2
20
+ p0fGEkqpzMKAY6TYtdYhOyTbup3VOKQwhk8b5CPuEWZutE6pT0O2O81MkuEEl/Zw
21
+ /M1MJERTIjGAThsL0yvEn1Gi5HXl7s/5E61Yvc0ItORqio70PZcToRII27ECAwEA
22
+ AQKCAgEAle0H3e78Q2S1uHriH7tqAdq0ZKQ6D/wwk5honkocwv4hFhNwqmY/FpdQ
23
+ UjJWt6ZTFnzgyvXD6aedR13VHXXVqInMUtLQUoUSyuOD6yYogk7jKb76k5cnidg6
24
+ g/A+EOdmWk2mOYs52uFUFBrwIhU44aPET9n1yAUPMKWJdcMk372eFh7GmwIOMm50
25
+ qBkiJKaTk2RwJJdnZYfpq5FKlmlBkW5QSV3AmkcfFMkuelC4pmReoyfa8cKuoY+a
26
+ cy+w/ccewkcTkK7LFVFGlY/b+IfoXjqwpFT1Op5UTQM420SOJ+5x/dPzyjHwODfx
27
+ V/7OgtwH1b2bb9lwvgnwMZm5fi7RLAOC5BaSrZUb8WtVaaKURzXgdE+5LO/xXYCy
28
+ JECbRQ5o4H4CwOc3mvJZL0O/dwPKoTccjELc8HOcogdy+hrJPXFl+oXy3yKUmf5L
29
+ Lx13hh/kO4960TcGVQsUPV9oYB8XU5iYC1cMdlMVZAOwoLE1h/Tro0blisq6eafx
30
+ +4ZS+COJEM+A7UgFacxdQ9C4bL5ZgjgLxMEsCIjwBN1i/bMEKpj46ulH23I57F1S
31
+ jr6/UtMPO73c2bGcxdzRRQSI/LW5Qnb4USQsOIjYDVReLM9hDvI4OyQ2pfcgXlTL
32
+ ODky2qivbP6WA4GKCBhaDEaeKFNDiyCqx9ObftCbRk1fWu7IP4ECggEBAOnPs88o
33
+ DQLEaColCbh3ziogoANYMKiqaJUacnH5S5e1/aW3jgVK85NsMJT9hsODXyHup/CF
34
+ RT3jeJA5cRj+04KI33cH2F5X9MhPB0a2Zo0Io813l95d2Wuk9rnadNCr8+h3b/nM
35
+ HR4X+n7l0x6Y8sn60pxesYXKu8NFccUCVcGUvrrL2gsPLPB//3eqgfZuf8BCDzOB
36
+ liO8Pzt0ELjxwxUWB9kPKLNZwVa0hq4snJThZQBrlMQcuH8BmitS5vZDVwiRLGVR
37
+ L5z+tPJMz5wJ/dGbjyMMONCZgiXypqb1qHIGt8FEPLryQ6u+04ZszxW9QTsWqMqi
38
+ ZvoFo0VPGkXGIWcCggEBANnh1tTCfGJSrwK1fWVhBajtn03iE5DuIkPUmL8juBq6
39
+ LSYG8tuk+zt0RVNYLYrM2nSzU78IsuR/15XtpheDh3Fy1ZdsAe/boccdZUrLtH9h
40
+ hRcAYUfY+E0E4U6j7FVTQCy9eNGnWJ/su2N0GDJll2BQWi8bcnL8dZqsq8pZzAjo
41
+ 7jBlOEe2xOVbCsBLfCW7tmeKCv4cc8digITGemig4NgCs6W03gJPnvnvvHMnuF3u
42
+ 8YjD9kWWEpQr37pT6QSdhwzKMAOeHbhh/CQO/sl+fBLbcYikQa0HIuvj+29w0/jv
43
+ whVfsJxCvs6fCTMYjQE7GdTcGmCbvs+x7TrXuqeT8ycCggEAWr4Un/KAUjGd57Vm
44
+ N2Sv6+OrloC0qdExM6UHA7roHqIwJg++G8nCDNYxaLGYiurCki3Ime1vORy+XuMc
45
+ RMIpnoC2kcDGtZ7XTqJ1RXlnBZdz0zt2AoRT7JYid3EUYyRJTlCEceNI7bQKsRNL
46
+ Q5XCrKce9DdAGJfdFWUvSXGljLLI70BMiHxESbazlGLle5nZFOnOcoP5nDbkJ5Pd
47
+ JZoWx2k8dH6QokLUaW041AJWZuWvSGF4ZEBtTkV16xiKsMrjzVxiaZP/saOc4Gj1
48
+ Li8mhiIkhEqrBjJ9s3KgQS4YSODYkjaEh12c69vsxkAWgu5nkaIysiojYyeq/Sw9
49
+ GxVRQwKCAQAeYvTHL2iRfd6SjiUy4lkbuighgIoiCFQXCatT3PNsJtLtHsL4BwZS
50
+ wGB6wy120iMVa30eg2QPohS7AC3N0bYuCEnpmFKc1RC26E6cI9TEfyFEl/T5RDU8
51
+ 6JVTlmD7dWTZ2ILlGmWtyCJKOIK3ZJu7/vjU4QsRJkxwiexbiDKAe5vcfAFhXwgO
52
+ xKe3Mc/ao1dJEWN/FRDAmeg6nEOuG+G/voC3d4YO5HPTf6/Uj5GS6CQfYtUR12A3
53
+ 8fZ90f4Jer6+9ePEXWTftiqoDL9T8qPzLU+kMuRF8VzZcS472Ix3h1iWCoZjBJv/
54
+ zQZHbgEcTtXHbfrvxkjSRopDTprljCi5AoIBAGc6M8/FH1pLgxOgS6oEGJAtErxv
55
+ EnmELzKvfwBryphx8f0S5sHoiqli+5dqFtw5h5yy/pXrNzLi0LfpmFzxbChfO8ai
56
+ omC/oqxU0FKqY2msFYdnfwM3PZeZ3c7LALLhWG56/fIYMtV78+cfqkRPM8nRJXaF
57
+ Aza2YTTZGfh3x10KnSLWUmhIWUEj8VzCNW7SR0Ecqa+ordAYio4wBsq7sO3sCw8G
58
+ Oi0/98ondhGJWL3M6FDGai8dXewt+8o0dlq95mHkNNopCWbPI71pM7u4ABPL50Yd
59
+ spd4eADxTm2m0GR7bhVEIbYfc0aAzIoWDpVs4V3vmx+bdRbppFxV1aS/r0g=
60
+ -----END RSA PRIVATE KEY-----'''
61
+
62
+ header = {
63
+ 'alg': 'RS256',
64
+ 'typ': 'JWT',
65
+ 'kid': '0d1bb0d7-45e4-445c-889e-57419470a570'
66
+ }
67
+
68
+ payload = {
69
+ **json_data,
70
+ 'iat': int(datetime.now().timestamp()),
71
+ 'exp': int((datetime.now() + timedelta(minutes=10)).timestamp()),
72
+ 'iss': 'https://ora.sh'
73
+ }
74
+
75
+ return jwt.encode(payload, private_key, algorithm='RS256', headers=header)
ora/model.py CHANGED
@@ -20,6 +20,12 @@ class CompletionModel:
20
  CompletionModel.description = description
21
  CompletionModel.slug = name
22
 
 
 
 
 
 
 
23
  headers = {
24
  'Origin' : 'https://ora.sh',
25
  'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.4 Safari/605.1.15',
@@ -27,11 +33,7 @@ class CompletionModel:
27
  'Host' : 'ora.sh',
28
  }
29
 
30
- response = post('https://ora.sh/api/assistant', headers = headers, json = {
31
- 'prompt' : system_prompt,
32
- 'userId' : f'auto:{uuid4()}',
33
- 'name' : name,
34
- 'description': description})
35
 
36
  print(response.json())
37
 
 
20
  CompletionModel.description = description
21
  CompletionModel.slug = name
22
 
23
+ json_data = {
24
+ 'prompt' : system_prompt,
25
+ 'userId' : f'auto:{uuid4()}',
26
+ 'name' : name,
27
+ 'description': description}
28
+
29
  headers = {
30
  'Origin' : 'https://ora.sh',
31
  'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.4 Safari/605.1.15',
 
33
  'Host' : 'ora.sh',
34
  }
35
 
36
+ response = post('https://ora.sh/api/assistant', headers = headers, json = json_data)
 
 
 
 
37
 
38
  print(response.json())
39
 
testing/ora_test.py ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import ora
2
+
3
+
4
+ # create model
5
+ model = ora.CompletionModel.create(
6
+ system_prompt = 'You are ChatGPT, a large language model trained by OpenAI. Answer as concisely as possible',
7
+ description = 'ChatGPT Openai Language Model',
8
+ name = 'gpt-3.5')
9
+
10
+ # init conversation (will give you a conversationId)
11
+ init = ora.Completion.create(
12
+ model = model,
13
+ prompt = 'hello world')
14
+
15
+ print(init.completion.choices[0].text)