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

XFEstudio/gpt4free

~ | new providers

Somwhat fix Aivvm provider, which looks to have a working gpt-4 kinda unstable

42a02c3d
abc <98614666+xtekky@users.noreply.github.com>
提交于

代码差异

3 个文件 +65 -70
Modified g4f/Provider/Aivvm.py +49 -56
@@ -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})'
Modified g4f/Provider/Vercel.py +1 -3
@@ -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
Modified g4f/models.py +15 -11
@@ -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