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

XFEstudio/gpt4free

Enhance LMArena provider to handle image responses and raise MissingRequirementsError for missing auth files

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

代码差异

2 个文件 +16 -11
Modified g4f/Provider/needs_auth/LMArena.py +12 -7
@@ -22,7 +22,7 @@ except ImportError:
22 22
23 23 from ...typing import AsyncResult, Messages, MediaListType
24 24 from ...requests import StreamSession, get_args_from_nodriver, raise_for_status, merge_cookies
25 from ...errors import ModelNotFoundError, CloudflareError, MissingAuthError
25 from ...errors import ModelNotFoundError, CloudflareError, MissingAuthError, MissingRequirementsError
26 26 from ...providers.response import FinishReason, Usage, JsonConversation, ImageResponse, Reasoning
27 27 from ...tools.media import merge_media
28 28 from ..base_provider import AsyncGeneratorProvider, ProviderModelMixin,AuthFileMixin
@@ -553,15 +553,20 @@ class LMArena(AsyncGeneratorProvider, ProviderModelMixin, AuthFileMixin):
553 553 "provider": cls.__name__
554 554 })
555 555 raise_for_status(response)
556 text, *args = response.text.split("\n" * 10 + "<!--", 1)
557 if args:
558 debug.log("Save args to cache file:", str(cache_file))
559 with cache_file.open("w") as f:
560 f.write(args[0].strip())
561 yield text
556 if response.headers.get("Content-Type", "").startswith("image/"):
557 yield ImageResponse(str(response.url), prompt)
558 else:
559 text, *args = response.text.split("\n" * 10 + "<!--", 1)
560 if args:
561 debug.log("Save args to cache file:", str(cache_file))
562 with cache_file.open("w") as f:
563 f.write(args[0].strip())
564 yield text
562 565 finally:
563 566 cls.looked = False
564 567 return
568 else:
569 raise MissingRequirementsError("No auth file found and nodriver is not available.")
565 570
566 571 if not cls._models_loaded:
567 572 cls.get_models()
Modified g4f/requests/raise_for_status.py +4 -4
@@ -37,8 +37,8 @@ async def raise_for_status_async(response: Union[StreamResponse, ClientResponse]
37 37 if message is None or is_html:
38 38 if response.status == 520:
39 39 message = "Unknown error (Cloudflare)"
40 elif response.status in (429, 402):
41 message = "Rate limit"
40 if response.status in (429, 402):
41 raise RateLimitError(f"Response {response.status}: {message}")
42 42 if response.status == 401:
43 43 raise MissingAuthError(f"Response {response.status}: {message}")
44 44 if response.status == 403 and is_cloudflare(message):
@@ -64,8 +64,8 @@ def raise_for_status(response: Union[Response, StreamResponse, ClientResponse, R
64 64 if message is None or is_html:
65 65 if response.status_code == 520:
66 66 message = "Unknown error (Cloudflare)"
67 elif response.status_code in (429, 402):
68 raise RateLimitError(f"Response {response.status_code}: Rate Limit")
67 if response.status_code in (429, 402):
68 raise RateLimitError(f"Response {response.status_code}: {message}")
69 69 if response.status_code == 401:
70 70 raise MissingAuthError(f"Response {response.status_code}: {message}")
71 71 if response.status_code == 403 and is_cloudflare(response.text):