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

XFEstudio/gpt4free

Catch get_models errors in AnyProvider

44040773
hlohaus <983577+hlohaus@users.noreply.github.com>
提交于

代码差异

2 个文件 +29 -14
Modified g4f/Provider/needs_auth/LMArenaBeta.py +4 -2
@@ -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:"):
Modified g4f/providers/any_provider.py +25 -12
@@ -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__: