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

XFEstudio/gpt4free

Update model list / providers

19944818
Heiner Lohaus <hlohaus@users.noreply.github.com>
提交于

代码差异

8 个文件 +75 -143
Modified g4f/Provider/Cohere.py +1 -1
@@ -9,7 +9,7 @@ from .helper import format_prompt
9 9
10 10 class Cohere(AbstractProvider):
11 11 url = "https://cohereforai-c4ai-command-r-plus.hf.space"
12 working = True
12 working = False
13 13 supports_gpt_35_turbo = False
14 14 supports_gpt_4 = False
15 15 supports_stream = True
Modified g4f/Provider/DuckDuckGo.py +5 -2
@@ -16,8 +16,11 @@ class DuckDuckGo(AsyncGeneratorProvider, ProviderModelMixin):
16 16 supports_message_history = True
17 17
18 18 default_model = "gpt-3.5-turbo-0125"
19 models = ["gpt-3.5-turbo-0125", "claude-instant-1.2"]
20 model_aliases = {"gpt-3.5-turbo": "gpt-3.5-turbo-0125"}
19 models = ["gpt-3.5-turbo-0125", "claude-3-haiku-20240307"]
20 model_aliases = {
21 "gpt-3.5-turbo": "gpt-3.5-turbo-0125",
22 "claude-3-haiku": "claude-3-haiku-20240307"
23 }
21 24
22 25 status_url = "https://duckduckgo.com/duckchat/v1/status"
23 26 chat_url = "https://duckduckgo.com/duckchat/v1/chat"
Modified g4f/Provider/Llama.py +1 -1
@@ -9,7 +9,7 @@ from .base_provider import AsyncGeneratorProvider, ProviderModelMixin
9 9
10 10 class Llama(AsyncGeneratorProvider, ProviderModelMixin):
11 11 url = "https://www.llama2.ai"
12 working = True
12 working = False
13 13 supports_message_history = True
14 14 default_model = "meta/meta-llama-3-70b-instruct"
15 15 models = [
Modified g4f/Provider/PerplexityLabs.py +5 -2
@@ -21,11 +21,14 @@ class PerplexityLabs(AsyncGeneratorProvider, ProviderModelMixin):
21 21 "related"
22 22 ]
23 23 model_aliases = {
24 "mistralai/Mistral-7B-Instruct-v0.1": "mistral-7b-instruct",
24 "mistralai/Mistral-7B-Instruct-v0.1": "mistral-7b-instruct",
25 "mistralai/Mistral-7B-Instruct-v0.2": "mistral-7b-instruct",
25 26 "mistralai/Mixtral-8x7B-Instruct-v0.1": "mixtral-8x7b-instruct",
26 27 "codellama/CodeLlama-70b-Instruct-hf": "codellama-70b-instruct",
27 28 "llava-v1.5-7b": "llava-v1.5-7b-wrapper",
28 'databricks/dbrx-instruct': "dbrx-instruct"
29 "databricks/dbrx-instruct": "dbrx-instruct",
30 "meta-llama/Meta-Llama-3-70B-Instruct": "llama-3-70b-instruct",
31 "meta-llama/Meta-Llama-3-8B-Instruct": "llama-3-8b-instruct"
29 32 }
30 33
31 34 @classmethod
Modified g4f/Provider/__init__.py +1 -1
@@ -1,7 +1,7 @@
1 1 from __future__ import annotations
2 2
3 3 from ..providers.types import BaseProvider, ProviderType
4 from ..providers.retry_provider import RetryProvider, IterProvider
4 from ..providers.retry_provider import RetryProvider, IterListProvider
5 5 from ..providers.base_provider import AsyncProvider, AsyncGeneratorProvider
6 6 from ..providers.create_images import CreateImagesProvider
7 7
Modified g4f/Provider/needs_auth/OpenaiChat.py +2 -1
@@ -373,6 +373,7 @@ class OpenaiChat(AsyncGeneratorProvider, ProviderModelMixin):
373 373 except NoValidHarFileError as e:
374 374 if cls._api_key is None and cls.needs_auth:
375 375 raise e
376 cls._create_request_args()
376 377
377 378 if cls.default_model is None:
378 379 cls.default_model = cls.get_model(await cls.get_default_model(session, cls._headers))
@@ -420,7 +421,7 @@ class OpenaiChat(AsyncGeneratorProvider, ProviderModelMixin):
420 421 **requirements["proofofwork"],
421 422 user_agent=cls._headers["user-agent"],
422 423 proofTokens=proofTokens
423 )
424 )
424 425 if debug.logging:
425 426 print(
426 427 'Arkose:', False if not need_arkose else arkose_token[:12]+"...",
Modified g4f/models.py +46 -108
@@ -2,27 +2,27 @@ from __future__ import annotations
2 2
3 3 from dataclasses import dataclass
4 4
5 from .Provider import RetryProvider, ProviderType
5 from .Provider import IterListProvider, ProviderType
6 6 from .Provider import (
7 7 Aichatos,
8 8 Bing,
9 9 Blackbox,
10 Chatgpt4Online,
11 10 ChatgptAi,
12 11 ChatgptNext,
13 Cohere,
14 12 Cnote,
15 13 DeepInfra,
14 DuckDuckGo,
15 Ecosia,
16 16 Feedough,
17 17 FreeGpt,
18 18 Gemini,
19 GeminiProChat,
19 GeminiPro,
20 20 GigaChat,
21 21 HuggingChat,
22 22 HuggingFace,
23 23 Koala,
24 24 Liaobots,
25 Llama,
25 MetaAI,
26 26 OpenaiChat,
27 27 PerplexityLabs,
28 28 Replicate,
@@ -32,7 +32,6 @@ from .Provider import (
32 32 Reka
33 33 )
34 34
35
36 35 @dataclass(unsafe_hash=True)
37 36 class Model:
38 37 """
@@ -55,12 +54,12 @@ class Model:
55 54 default = Model(
56 55 name = "",
57 56 base_provider = "",
58 best_provider = RetryProvider([
57 best_provider = IterListProvider([
59 58 Bing,
60 59 ChatgptAi,
61 60 You,
62 Chatgpt4Online,
63 OpenaiChat
61 OpenaiChat,
62 Ecosia,
64 63 ])
65 64 )
66 65
@@ -68,11 +67,14 @@ default = Model(
68 67 gpt_35_long = Model(
69 68 name = 'gpt-3.5-turbo',
70 69 base_provider = 'openai',
71 best_provider = RetryProvider([
70 best_provider = IterListProvider([
72 71 FreeGpt,
73 72 You,
74 73 ChatgptNext,
75 74 OpenaiChat,
75 Koala,
76 Ecosia,
77 DuckDuckGo,
76 78 ])
77 79 )
78 80
@@ -80,7 +82,7 @@ gpt_35_long = Model(
80 82 gpt_35_turbo = Model(
81 83 name = 'gpt-3.5-turbo',
82 84 base_provider = 'openai',
83 best_provider = RetryProvider([
85 best_provider = IterListProvider([
84 86 FreeGpt,
85 87 You,
86 88 ChatgptNext,
@@ -95,7 +97,7 @@ gpt_35_turbo = Model(
95 97 gpt_4 = Model(
96 98 name = 'gpt-4',
97 99 base_provider = 'openai',
98 best_provider = RetryProvider([
100 best_provider = IterListProvider([
99 101 Bing, Liaobots,
100 102 ])
101 103 )
@@ -103,8 +105,8 @@ gpt_4 = Model(
103 105 gpt_4o = Model(
104 106 name = 'gpt-4o',
105 107 base_provider = 'openai',
106 best_provider = RetryProvider([
107 You
108 best_provider = IterListProvider([
109 You, Liaobots
108 110 ])
109 111 )
110 112
@@ -120,46 +122,22 @@ gigachat = Model(
120 122 best_provider = GigaChat
121 123 )
122 124
123 gigachat_plus = Model(
124 name = 'GigaChat-Plus',
125 base_provider = 'gigachat',
126 best_provider = GigaChat
127 )
128
129 gigachat_pro = Model(
130 name = 'GigaChat-Pro',
131 base_provider = 'gigachat',
132 best_provider = GigaChat
133 )
134
135 llama2_7b = Model(
136 name = "meta-llama/Llama-2-7b-chat-hf",
137 base_provider = 'meta',
138 best_provider = RetryProvider([Llama, DeepInfra])
139 )
140
141 llama2_13b = Model(
142 name = "meta-llama/Llama-2-13b-chat-hf",
143 base_provider = 'meta',
144 best_provider = RetryProvider([Llama, DeepInfra])
145 )
146
147 llama2_70b = Model(
148 name = "meta-llama/Llama-2-70b-chat-hf",
125 meta = Model(
126 name = "meta",
149 127 base_provider = "meta",
150 best_provider = RetryProvider([Llama, DeepInfra])
128 best_provider = MetaAI
151 129 )
152 130
153 131 llama3_8b_instruct = Model(
154 132 name = "meta-llama/Meta-Llama-3-8B-Instruct",
155 133 base_provider = "meta",
156 best_provider = RetryProvider([Llama, DeepInfra, Replicate])
134 best_provider = IterListProvider([DeepInfra, PerplexityLabs, Replicate])
157 135 )
158 136
159 137 llama3_70b_instruct = Model(
160 138 name = "meta-llama/Meta-Llama-3-70B-Instruct",
161 139 base_provider = "meta",
162 best_provider = RetryProvider([Llama, DeepInfra])
140 best_provider = IterListProvider([DeepInfra, PerplexityLabs, Replicate])
163 141 )
164 142
165 143 codellama_34b_instruct = Model(
@@ -171,61 +149,30 @@ codellama_34b_instruct = Model(
171 149 codellama_70b_instruct = Model(
172 150 name = "codellama/CodeLlama-70b-Instruct-hf",
173 151 base_provider = "meta",
174 best_provider = RetryProvider([DeepInfra, PerplexityLabs])
152 best_provider = IterListProvider([DeepInfra, PerplexityLabs])
175 153 )
176 154
177 155 # Mistral
178 156 mixtral_8x7b = Model(
179 157 name = "mistralai/Mixtral-8x7B-Instruct-v0.1",
180 158 base_provider = "huggingface",
181 best_provider = RetryProvider([DeepInfra, HuggingFace, PerplexityLabs])
159 best_provider = IterListProvider([DeepInfra, HuggingFace, PerplexityLabs])
182 160 )
183 161
184 162 mistral_7b = Model(
185 163 name = "mistralai/Mistral-7B-Instruct-v0.1",
186 164 base_provider = "huggingface",
187 best_provider = RetryProvider([HuggingChat, HuggingFace, PerplexityLabs])
165 best_provider = IterListProvider([HuggingChat, HuggingFace, PerplexityLabs])
188 166 )
189 167
190 168 mistral_7b_v02 = Model(
191 169 name = "mistralai/Mistral-7B-Instruct-v0.2",
192 170 base_provider = "huggingface",
193 best_provider = DeepInfra
194 )
195
196 mixtral_8x22b = Model(
197 name = "HuggingFaceH4/zephyr-orpo-141b-A35b-v0.1",
198 base_provider = "huggingface",
199 best_provider = DeepInfra
200 )
201
202 # Misc models
203 dolphin_mixtral_8x7b = Model(
204 name = "cognitivecomputations/dolphin-2.6-mixtral-8x7b",
205 base_provider = "huggingface",
206 best_provider = DeepInfra
207 )
208
209 lzlv_70b = Model(
210 name = "lizpreciatior/lzlv_70b_fp16_hf",
211 base_provider = "huggingface",
212 best_provider = DeepInfra
213 )
214
215 airoboros_70b = Model(
216 name = "deepinfra/airoboros-70b",
217 base_provider = "huggingface",
218 best_provider = DeepInfra
219 )
220
221 openchat_35 = Model(
222 name = "openchat/openchat_3.5",
223 base_provider = "huggingface",
224 best_provider = DeepInfra
171 best_provider = IterListProvider([DeepInfra, HuggingFace, PerplexityLabs])
225 172 )
226 173
227 174 # Bard
228 gemini = bard = palm = Model(
175 gemini = Model(
229 176 name = 'gemini',
230 177 base_provider = 'google',
231 178 best_provider = Gemini
@@ -234,7 +181,7 @@ gemini = bard = palm = Model(
234 181 claude_v2 = Model(
235 182 name = 'claude-v2',
236 183 base_provider = 'anthropic',
237 best_provider = RetryProvider([Vercel])
184 best_provider = IterListProvider([Vercel])
238 185 )
239 186
240 187 claude_3_opus = Model(
@@ -249,6 +196,12 @@ claude_3_sonnet = Model(
249 196 best_provider = You
250 197 )
251 198
199 claude_3_haiku = Model(
200 name = 'claude-3-haiku',
201 base_provider = 'anthropic',
202 best_provider = DuckDuckGo
203 )
204
252 205 gpt_35_turbo_16k = Model(
253 206 name = 'gpt-3.5-turbo-16k',
254 207 base_provider = 'openai',
@@ -288,7 +241,7 @@ gpt_4_32k_0613 = Model(
288 241 gemini_pro = Model(
289 242 name = 'gemini-pro',
290 243 base_provider = 'google',
291 best_provider = RetryProvider([GeminiProChat, You])
244 best_provider = IterListProvider([GeminiPro, You])
292 245 )
293 246
294 247 pi = Model(
@@ -300,13 +253,13 @@ pi = Model(
300 253 dbrx_instruct = Model(
301 254 name = 'databricks/dbrx-instruct',
302 255 base_provider = 'mistral',
303 best_provider = RetryProvider([DeepInfra, PerplexityLabs])
256 best_provider = IterListProvider([DeepInfra, PerplexityLabs])
304 257 )
305 258
306 259 command_r_plus = Model(
307 260 name = 'CohereForAI/c4ai-command-r-plus',
308 261 base_provider = 'mistral',
309 best_provider = RetryProvider([HuggingChat, Cohere])
262 best_provider = IterListProvider([HuggingChat])
310 263 )
311 264
312 265 blackbox = Model(
@@ -334,9 +287,8 @@ class ModelUtils:
334 287 'gpt-3.5-turbo-0613' : gpt_35_turbo_0613,
335 288 'gpt-3.5-turbo-16k' : gpt_35_turbo_16k,
336 289 'gpt-3.5-turbo-16k-0613' : gpt_35_turbo_16k_0613,
337
338 290 'gpt-3.5-long': gpt_35_long,
339
291
340 292 # gpt-4
341 293 'gpt-4o' : gpt_4o,
342 294 'gpt-4' : gpt_4,
@@ -345,52 +297,38 @@ class ModelUtils:
345 297 'gpt-4-32k-0613' : gpt_4_32k_0613,
346 298 'gpt-4-turbo' : gpt_4_turbo,
347 299
348 # Llama
349 'llama2-7b' : llama2_7b,
350 'llama2-13b': llama2_13b,
351 'llama2-70b': llama2_70b,
352
353 'llama3-8b' : llama3_8b_instruct, # alias
300 "meta-ai": meta,
301 'llama3-8b': llama3_8b_instruct, # alias
354 302 'llama3-70b': llama3_70b_instruct, # alias
355 303 'llama3-8b-instruct' : llama3_8b_instruct,
356 304 'llama3-70b-instruct': llama3_70b_instruct,
357
305
358 306 'codellama-34b-instruct': codellama_34b_instruct,
359 307 'codellama-70b-instruct': codellama_70b_instruct,
360 308
361 # GigaChat
362 'gigachat' : gigachat,
363 'gigachat_plus': gigachat_plus,
364 'gigachat_pro' : gigachat_pro,
365
366 309 # Mistral Opensource
367 310 'mixtral-8x7b': mixtral_8x7b,
368 311 'mistral-7b': mistral_7b,
369 312 'mistral-7b-v02': mistral_7b_v02,
370 'mixtral-8x22b': mixtral_8x22b,
371 'dolphin-mixtral-8x7b': dolphin_mixtral_8x7b,
372
313
373 314 # google gemini
374 315 'gemini': gemini,
375 316 'gemini-pro': gemini_pro,
376
317
377 318 # anthropic
378 319 'claude-v2': claude_v2,
379 320 'claude-3-opus': claude_3_opus,
380 321 'claude-3-sonnet': claude_3_sonnet,
381
322 'claude-3-haiku': claude_3_haiku,
323
382 324 # reka core
383 'reka-core': reka_core,
384 325 'reka': reka_core,
385 'Reka Core': reka_core,
386
326
387 327 # other
388 328 'blackbox': blackbox,
389 329 'command-r+': command_r_plus,
390 330 'dbrx-instruct': dbrx_instruct,
391 'lzlv-70b': lzlv_70b,
392 'airoboros-70b': airoboros_70b,
393 'openchat_3.5': openchat_35,
331 'gigachat': gigachat,
394 332 'pi': pi
395 333 }
396 334
Modified g4f/providers/retry_provider.py +14 -27
@@ -4,11 +4,11 @@ import asyncio
4 4 import random
5 5
6 6 from ..typing import Type, List, CreateResult, Messages, Iterator, AsyncResult
7 from .types import BaseProvider, BaseRetryProvider
7 from .types import BaseProvider, BaseRetryProvider, ProviderType
8 8 from .. import debug
9 9 from ..errors import RetryProviderError, RetryNoProviderError
10 10
11 class NewBaseRetryProvider(BaseRetryProvider):
11 class IterListProvider(BaseRetryProvider):
12 12 def __init__(
13 13 self,
14 14 providers: List[Type[BaseProvider]],
@@ -45,21 +45,17 @@ class NewBaseRetryProvider(BaseRetryProvider):
45 45 Raises:
46 46 Exception: Any exception encountered during the completion process.
47 47 """
48 providers = [p for p in self.providers if stream and p.supports_stream] if stream else self.providers
49 if self.shuffle:
50 random.shuffle(providers)
51
52 48 exceptions = {}
53 49 started: bool = False
54 50
55 for provider in providers:
51 for provider in self.get_providers(stream):
56 52 self.last_provider = provider
57 53 try:
58 54 if debug.logging:
59 55 print(f"Using {provider.__name__} provider")
60 56 for token in provider.create_completion(model, messages, stream, **kwargs):
61 57 yield token
62 started = True
58 started = True
63 59 if started:
64 60 return
65 61 except Exception as e:
@@ -87,13 +83,9 @@ class NewBaseRetryProvider(BaseRetryProvider):
87 83 Raises:
88 84 Exception: Any exception encountered during the asynchronous completion process.
89 85 """
90 providers = self.providers
91 if self.shuffle:
92 random.shuffle(providers)
93
94 86 exceptions = {}
95 87
96 for provider in providers:
88 for provider in self.get_providers(False):
97 89 self.last_provider = provider
98 90 try:
99 91 if debug.logging:
@@ -109,8 +101,8 @@ class NewBaseRetryProvider(BaseRetryProvider):
109 101
110 102 raise_exceptions(exceptions)
111 103
112 def get_providers(self, stream: bool):
113 providers = [p for p in self.providers if stream and p.supports_stream] if stream else self.providers
104 def get_providers(self, stream: bool) -> list[ProviderType]:
105 providers = [p for p in self.providers if p.supports_stream] if stream else self.providers
114 106 if self.shuffle:
115 107 random.shuffle(providers)
116 108 return providers
@@ -138,7 +130,7 @@ class NewBaseRetryProvider(BaseRetryProvider):
138 130 else:
139 131 for token in provider.create_completion(model, messages, stream, **kwargs):
140 132 yield token
141 started = True
133 started = True
142 134 if started:
143 135 return
144 136 except Exception as e:
@@ -150,7 +142,7 @@ class NewBaseRetryProvider(BaseRetryProvider):
150 142
151 143 raise_exceptions(exceptions)
152 144
153 class RetryProvider(NewBaseRetryProvider):
145 class RetryProvider(IterListProvider):
154 146 def __init__(
155 147 self,
156 148 providers: List[Type[BaseProvider]],
@@ -188,11 +180,10 @@ class RetryProvider(NewBaseRetryProvider):
188 180 Raises:
189 181 Exception: Any exception encountered during the completion process.
190 182 """
191 providers = self.get_providers(stream)
192 if self.single_provider_retry and len(providers) == 1:
183 if self.single_provider_retry:
193 184 exceptions = {}
194 185 started: bool = False
195 provider = providers[0]
186 provider = self.providers[0]
196 187 self.last_provider = provider
197 188 for attempt in range(self.max_retries):
198 189 try:
@@ -200,7 +191,7 @@ class RetryProvider(NewBaseRetryProvider):
200 191 print(f"Using {provider.__name__} provider (attempt {attempt + 1})")
201 192 for token in provider.create_completion(model, messages, stream, **kwargs):
202 193 yield token
203 started = True
194 started = True
204 195 if started:
205 196 return
206 197 except Exception as e:
@@ -229,14 +220,10 @@ class RetryProvider(NewBaseRetryProvider):
229 220 Raises:
230 221 Exception: Any exception encountered during the asynchronous completion process.
231 222 """
232 providers = self.providers
233 if self.shuffle:
234 random.shuffle(providers)
235
236 223 exceptions = {}
237 224
238 if self.single_provider_retry and len(providers) == 1:
239 provider = providers[0]
225 if self.single_provider_retry:
226 provider = self.providers[0]
240 227 self.last_provider = provider
241 228 for attempt in range(self.max_retries):
242 229 try: