返回提交历史
Modified
g4f/Provider/Providers/DeepAi.py
+52
-26
XFEstudio/gpt4free
Update DeepAi.py
01c0ede9
代码差异
1 个文件
+52
-26
@@ -1,48 +1,74 @@
1
import os
2
1
import json
3
import random
4
import hashlib
2
import os
5
3
import requests
6
4
import js2py
7
5
from ...typing import sha256, Dict, get_type_hints
8
6
9
url = 'https://deepai.org'
7
8
url = "https://api.deepai.org/"
10
9
model = ['gpt-3.5-turbo']
11
10
supports_stream = True
12
11
needs_auth = False
13
12
working = True
14
13
14
token_js = """
15
var agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36'
16
var a, b, c, d, e, h, f, l, g, k, m, n, r, x, C, E, N, F, T, O, P, w, D, G, Q, R, W, I, aa, fa, na, oa, ha, ba, X, ia, ja, ka, J, la, K, L, ca, S, U, M, ma, B, da, V, Y;
17
h = Math.round(1E11 * Math.random()) + "";
18
f = function () {
19
for (var p = [], q = 0; 64 > q;) p[q] = 0 | 4294967296 * Math.sin(++q % Math.PI);
20
21
return function (t) {
22
var v, y, H, ea = [v = 1732584193, y = 4023233417, ~v, ~y],
23
Z = [],
24
A = unescape(encodeURI(t)) + "\u0080",
25
z = A.length;
26
t = --z / 4 + 2 | 15;
27
for (Z[--t] = 8 * z; ~z;) Z[z >> 2] |= A.charCodeAt(z) << 8 * z--;
28
for (q = A = 0; q < t; q += 16) {
29
for (z = ea; 64 > A; z = [H = z[3], v + ((H = z[0] + [v & y | ~v & H, H & v | ~H & y, v ^ y ^ H, y ^ (v | ~H)][z = A >> 4] + p[A] + ~~Z[q | [A, 5 * A + 1, 3 * A + 5, 7 * A][z] & 15]) << (z = [7, 12, 17, 22, 5, 9, 14, 20, 4, 11, 16, 23, 6, 10, 15, 21][4 * z + A++ % 4]) | H >>> -z), v, y]) v = z[1] | 0, y = z[2];
30
for (A = 4; A;) ea[--A] += z[A]
31
}
32
for (t = ""; 32 > A;) t += (ea[A >> 3] >> 4 * (1 ^ A++) & 15).toString(16);
33
return t.split("").reverse().join("")
34
}
35
}();
15
36
16
def _create_completion(model: str, messages: list, stream: bool, **kwargs):
17
def md5(text: str) -> str:
18
return hashlib.md5(text.encode()).hexdigest()[::-1]
37
"tryit-" + h + "-" + f(agent + f(agent + f(agent + h + "x")));
38
"""
19
39
40
uuid4_js = """
41
function uuidv4() {
42
for (var a = [], b = 0; 36 > b; b++) a[b] = "0123456789abcdef".substr(Math.floor(16 * Math.random()), 1);
43
a[14] = "4";
44
a[19] = "0123456789abcdef".substr(a[19] & 3 | 8, 1);
45
a[8] = a[13] = a[18] = a[23] = "-";
46
return a.join("")
47
}
48
uuidv4();"""
20
49
21
def get_api_key(user_agent: str) -> str:
22
part1 = str(random.randint(0, 10**11))
23
part2 = md5(user_agent + md5(user_agent + md5(user_agent + part1 + "x")))
24
25
return f"tryit-{part1}-{part2}"
50
def create_session():
51
url = "https://api.deepai.org/save_chat_session"
26
52
27
user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
53
payload = {'uuid': js2py.eval_js(uuid4_js), "title":"", "chat_style": "chat", "messages": '[]'}
54
headers = {"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"}
28
55
29
headers = {
30
"api-key": get_api_key(user_agent),
31
"user-agent": user_agent
32
}
56
response = requests.request("POST", url, headers=headers, data=payload)
57
return response
33
58
34
files = {
35
"chat_style": (None, "chat"),
36
"chatHistory": (None, json.dumps(messages))
37
}
59
def _create_completion(model: str, messages:list, stream: bool = True, **kwargs):
60
create_session()
61
url = "https://api.deepai.org/make_me_a_pizza"
38
62
39
r = requests.post("https://api.deepai.org/chat_response", headers=headers, files=files, stream=True)
63
payload = {'chas_style': "chat", "chatHistory": json.dumps(messages)}
64
api_key = js2py.eval_js(token_js)
65
headers = {"api-key": api_key, "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"}
40
66
41
for chunk in r.iter_content(chunk_size=None):
42
r.raise_for_status()
67
response = requests.request("POST", url, headers=headers, data=payload, stream=True)
68
for chunk in response.iter_content(chunk_size=None):
69
response.raise_for_status()
43
70
yield chunk.decode()
44
71
45
46
72
params = f'g4f.Providers.{os.path.basename(__file__)[:-3]} supports: ' + \
47
73
'(%s)' % ', '.join(
48
74
[f"{name}: {get_type_hints(_create_completion)[name].__name__}" for name in _create_completion.__code__.co_varnames[:_create_completion.__code__.co_argcount]])