返回提交历史
Modified
g4f/Provider/Aivvm.py
+49
-56
Modified
g4f/Provider/Vercel.py
+1
-3
Modified
g4f/models.py
+15
-11
XFEstudio/gpt4free
~ | new providers
Somwhat fix Aivvm provider, which looks to have a working gpt-4 kinda unstable
42a02c3d
代码差异
3 个文件
+65
-70
@@ -1,78 +1,71 @@
1
1
from __future__ import annotations
2
import requests
2
3
3
from aiohttp import ClientSession
4
5
from .base_provider import AsyncGeneratorProvider
6
from ..typing import AsyncGenerator
4
from .base_provider import BaseProvider
5
from ..typing import Any, CreateResult
7
6
8
7
models = {
9
"gpt-4": {
10
"id": "gpt-4",
11
"name": "GPT-4",
12
},
13
"gpt-3.5-turbo": {
14
"id": "gpt-3.5-turbo",
15
"name": "GPT-3.5",
16
},
17
"gpt-3.5-turbo-16k": {
18
"id": "gpt-3.5-turbo-16k",
19
"name": "GPT-3.5-16k",
20
},
8
'gpt-3.5-turbo': {'id': 'gpt-3.5-turbo', 'name': 'GPT-3.5'},
9
'gpt-3.5-turbo-0613': {'id': 'gpt-3.5-turbo-0613', 'name': 'GPT-3.5-0613'},
10
'gpt-3.5-turbo-16k': {'id': 'gpt-3.5-turbo-16k', 'name': 'GPT-3.5-16K'},
11
'gpt-3.5-turbo-16k-0613': {'id': 'gpt-3.5-turbo-16k-0613', 'name': 'GPT-3.5-16K-0613'},
12
'gpt-4': {'id': 'gpt-4', 'name': 'GPT-4'},
13
'gpt-4-0613': {'id': 'gpt-4-0613', 'name': 'GPT-4-0613'},
14
'gpt-4-32k': {'id': 'gpt-4-32k', 'name': 'GPT-4-32K'},
15
'gpt-4-32k-0613': {'id': 'gpt-4-32k-0613', 'name': 'GPT-4-32K-0613'},
21
16
}
22
17
23
class Aivvm(AsyncGeneratorProvider):
24
url = "https://chat.aivvm.com"
18
class Aivvm(BaseProvider):
19
url = 'https://chat.aivvm.com'
20
supports_stream = True
25
21
working = True
26
22
supports_gpt_35_turbo = True
27
23
supports_gpt_4 = True
28
24
29
30
25
@classmethod
31
async def create_async_generator(
32
cls,
26
def create_completion(cls,
33
27
model: str,
34
28
messages: list[dict[str, str]],
35
proxy: str = None,
36
**kwargs
37
) -> AsyncGenerator:
38
model = model if model else "gpt-3.5-turbo"
39
if model not in models:
40
raise ValueError(f"Model are not supported: {model}")
29
stream: bool, **kwargs: Any) -> CreateResult:
30
41
31
headers = {
42
"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36",
43
"Accept" : "*/*",
44
"Accept-Language" : "en,fr-FR;q=0.9,fr;q=0.8,es-ES;q=0.7,es;q=0.6,en-US;q=0.5,am;q=0.4,de;q=0.3",
45
"Origin" : cls.url,
46
"Referer" : cls.url + "/",
47
"Sec-Fetch-Dest" : "empty",
48
"Sec-Fetch-Mode" : "cors",
49
"Sec-Fetch-Site" : "same-origin",
32
"authority" : "chat.aivvm.com",
33
"accept" : "*/*",
34
"accept-language" : "en,fr-FR;q=0.9,fr;q=0.8,es-ES;q=0.7,es;q=0.6,en-US;q=0.5,am;q=0.4,de;q=0.3",
35
"content-type" : "application/json",
36
"origin" : "https://chat.aivvm.com",
37
"referer" : "https://chat.aivvm.com/",
38
"sec-ch-ua" : '"Google Chrome";v="117", "Not;A=Brand";v="8", "Chromium";v="117"',
39
"sec-ch-ua-mobile" : "?0",
40
"sec-ch-ua-platform" : '"macOS"',
41
"sec-fetch-dest" : "empty",
42
"sec-fetch-mode" : "cors",
43
"sec-fetch-site" : "same-origin",
44
"user-agent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36",
50
45
}
51
async with ClientSession(
52
headers=headers
53
) as session:
54
data = {
55
"temperature": 1,
56
"key": "",
57
"messages": messages,
58
"model": models[model],
59
"prompt": "",
60
**kwargs
61
}
62
async with session.post(cls.url + "/api/chat", json=data, proxy=proxy) as response:
63
response.raise_for_status()
64
async for stream in response.content.iter_any():
65
yield stream.decode()
66
46
47
json_data = {
48
"model" : models[model],
49
"messages" : messages,
50
"key" : "",
51
"prompt" : "You are ChatGPT, a large language model trained by OpenAI. Follow the user's instructions carefully. Respond using markdown.",
52
"temperature" : kwargs.get("temperature", 0.7)
53
}
54
55
response = requests.post(
56
"https://chat.aivvm.com/api/chat", headers=headers, json=json_data, stream=True)
57
58
for line in response.iter_content(chunk_size=1048):
59
yield line
67
60
68
61
@classmethod
69
62
@property
70
63
def params(cls):
71
64
params = [
72
("model", "str"),
73
("messages", "list[dict[str, str]]"),
74
("stream", "bool"),
75
("temperature", "float"),
65
('model', 'str'),
66
('messages', 'list[dict[str, str]]'),
67
('stream', 'bool'),
68
('temperature', 'float'),
76
69
]
77
param = ", ".join([": ".join(p) for p in params])
78
return f"g4f.provider.{cls.__name__} supports: ({param})"
70
param = ', '.join([': '.join(p) for p in params])
71
return f'g4f.provider.{cls.__name__} supports: ({param})'
@@ -1,6 +1,4 @@
1
from __future__ import annotations
2
3
import base64, json, uuid, quickjs, random
1
from __future__ import annotations
4
2
from curl_cffi.requests import AsyncSession
5
3
6
4
from ..typing import Any, TypedDict
@@ -52,7 +52,11 @@ gpt_35_turbo = Model(
52
52
53
53
gpt_4 = Model(
54
54
name = 'gpt-4',
55
base_provider = 'openai')
55
base_provider = 'openai',
56
best_provider = RetryProvider([
57
Aivvm
58
])
59
)
56
60
57
61
# Bard
58
62
palm = Model(
@@ -133,52 +137,52 @@ flan_t5_xxl = Model(
133
137
best_provider = Vercel)
134
138
135
139
code_davinci_002 = Model(
136
name = 'openai:code-davinci-002',
140
name = 'code-davinci-002',
137
141
base_provider = 'openai',
138
142
best_provider = Vercel)
139
143
140
144
gpt_35_turbo_16k = Model(
141
name = 'openai:gpt-3.5-turbo-16k',
145
name = 'gpt-3.5-turbo-16k',
142
146
base_provider = 'openai',
143
147
best_provider = Vercel)
144
148
145
149
gpt_35_turbo_16k_0613 = Model(
146
name = 'openai:gpt-3.5-turbo-16k-0613',
150
name = 'gpt-3.5-turbo-16k-0613',
147
151
base_provider = 'openai')
148
152
149
153
gpt_35_turbo_0613 = Model(
150
name = 'openai:gpt-3.5-turbo-0613',
154
name = 'gpt-3.5-turbo-0613',
151
155
base_provider = 'openai',
152
156
best_provider = [
153
157
Aivvm, ChatgptLogin])
154
158
155
159
gpt_4_0613 = Model(
156
name = 'openai:gpt-4-0613',
160
name = 'gpt-4-0613',
157
161
base_provider = 'openai',
158
162
best_provider = Vercel)
159
163
160
164
text_ada_001 = Model(
161
name = 'openai:text-ada-001',
165
name = 'text-ada-001',
162
166
base_provider = 'openai',
163
167
best_provider = Vercel)
164
168
165
169
text_babbage_001 = Model(
166
name = 'openai:text-babbage-001',
170
name = 'text-babbage-001',
167
171
base_provider = 'openai',
168
172
best_provider = Vercel)
169
173
170
174
text_curie_001 = Model(
171
name = 'openai:text-curie-001',
175
name = 'text-curie-001',
172
176
base_provider = 'openai',
173
177
best_provider = Vercel)
174
178
175
179
text_davinci_002 = Model(
176
name = 'openai:text-davinci-002',
180
name = 'text-davinci-002',
177
181
base_provider = 'openai',
178
182
best_provider = Vercel)
179
183
180
184
text_davinci_003 = Model(
181
name = 'openai:text-davinci-003',
185
name = 'text-davinci-003',
182
186
base_provider = 'openai',
183
187
best_provider = Vercel)
184
188