XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet
公开
关注 0 Fork 0 Star 1
返回提交历史

XFEstudio/gpt4free

Update DeepAi.py

01c0ede9
omidima <47784584+omidima@users.noreply.github.com>
提交于

代码差异

1 个文件 +52 -26
Modified g4f/Provider/Providers/DeepAi.py +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]])