返回提交历史
Modified
g4f/Provider/needs_auth/LMArenaBeta.py
+4
-2
Modified
g4f/providers/any_provider.py
+25
-12
XFEstudio/gpt4free
Catch get_models errors in AnyProvider
44040773
代码差异
2 个文件
+29
-14
@@ -103,7 +103,7 @@ class LMArenaBeta(AsyncGeneratorProvider, ProviderModelMixin, AuthFileMixin):
103
103
async def callback(page):
104
104
while not await page.evaluate('document.cookie.indexOf("arena-auth-prod-v1") >= 0'):
105
105
await asyncio.sleep(1)
106
while await page.evaluate('document.querySelector(\'[name="cf-turnstile-response"]\').length > 0') :
106
while await page.evaluate('document.querySelector(\'[href*="challenge"]\').length > 0') :
107
107
await asyncio.sleep(1)
108
108
args = await get_args_from_nodriver(cls.url, proxy=proxy, callback=callback)
109
109
except (RuntimeError, FileNotFoundError) as e:
@@ -171,7 +171,9 @@ class LMArenaBeta(AsyncGeneratorProvider, ProviderModelMixin, AuthFileMixin):
171
171
if line.startswith("af:"):
172
172
yield JsonConversation(message_ids=[modelAMessageId])
173
173
elif line.startswith("a0:"):
174
yield json.loads(line[3:])
174
chunk = json.loads(line[3:])
175
if chunk == "hasArenaError":
176
raise ModelNotFoundError("LMArena Beta encountered an error: hasArenaError")
175
177
elif line.startswith("a2:"):
176
178
yield ImageResponse([image.get("image") for image in json.loads(line[3:])], prompt)
177
179
elif line.startswith("ad:"):
@@ -17,6 +17,7 @@ from ..Provider import HarProvider, HuggingFace, HuggingFaceMedia
17
17
from .base_provider import AsyncGeneratorProvider, ProviderModelMixin
18
18
from .. import Provider
19
19
from .. import models
20
from .. import debug
20
21
21
22
PROVIERS_LIST_1 = [
22
23
OpenaiChat, PollinationsAI, Cloudflare, PerplexityLabs, Gemini, Grok, DeepSeekAPI, Blackbox, OpenAIFM,
@@ -180,17 +181,21 @@ class AnyProvider(AsyncGeneratorProvider, ProviderModelMixin):
180
181
provider: ProviderType = provider
181
182
if not provider.working or provider.get_parent() in ignored:
182
183
continue
183
if provider == CopilotAccount:
184
all_models.extend(list(provider.model_aliases.keys()))
185
elif provider in [PollinationsAI, ARTA]:
186
all_models.extend([f"{provider.__name__}:{model}" for model in provider.get_models() if model not in all_models])
187
cls.audio_models.update({f"{provider.__name__}:{model}": [] for model in provider.get_models() if model in provider.audio_models})
188
cls.image_models.extend([f"{provider.__name__}:{model}" for model in provider.get_models() if model in provider.image_models])
189
cls.vision_models.extend([f"{provider.__name__}:{model}" for model in provider.get_models() if model in provider.vision_models])
190
if provider == PollinationsAI:
184
try:
185
if provider == CopilotAccount:
191
186
all_models.extend(list(provider.model_aliases.keys()))
192
else:
193
all_models.extend(provider.get_models())
187
elif provider in [PollinationsAI, ARTA]:
188
all_models.extend([f"{provider.__name__}:{model}" for model in provider.get_models() if model not in all_models])
189
cls.audio_models.update({f"{provider.__name__}:{model}": [] for model in provider.get_models() if model in provider.audio_models})
190
cls.image_models.extend([f"{provider.__name__}:{model}" for model in provider.get_models() if model in provider.image_models])
191
cls.vision_models.extend([f"{provider.__name__}:{model}" for model in provider.get_models() if model in provider.vision_models])
192
if provider == PollinationsAI:
193
all_models.extend(list(provider.model_aliases.keys()))
194
else:
195
all_models.extend(provider.get_models())
196
except Exception as e:
197
debug.error(f"Error getting models for provider {provider.__name__}:", e)
198
continue
194
199
195
200
# Update special model lists
196
201
if hasattr(provider, 'image_models'):
@@ -227,7 +232,11 @@ class AnyProvider(AsyncGeneratorProvider, ProviderModelMixin):
227
232
for provider in PROVIERS_LIST_3:
228
233
if not provider.working or provider.get_parent() in ignored:
229
234
continue
230
new_models = provider.get_models()
235
try:
236
new_models = provider.get_models()
237
except Exception as e:
238
debug.error(f"Error getting models for provider {provider.__name__}:", e)
239
continue
231
240
if provider == HuggingFaceMedia:
232
241
new_models = provider.video_models
233
242
model_map = {}
@@ -327,7 +336,11 @@ class AnyProvider(AsyncGeneratorProvider, ProviderModelMixin):
327
336
provider_api_key = api_key
328
337
if isinstance(api_key, dict):
329
338
provider_api_key = api_key.get(provider.get_parent())
330
provider_models = provider.get_models(api_key=provider_api_key) if provider_api_key else provider.get_models()
339
try:
340
provider_models = provider.get_models(api_key=provider_api_key) if provider_api_key else provider.get_models()
341
except Exception as e:
342
debug.error(f"Error getting models for provider {provider.__name__}:", e)
343
continue
331
344
if not model or model in provider_models or provider.model_aliases and model in provider.model_aliases:
332
345
providers.append(provider)
333
346
if model in models.__models__: