返回提交历史
Modified
g4f/Provider/helper.py
+1
-1
Modified
g4f/Provider/needs_auth/BingCreateImages.py
+2
-2
Modified
g4f/Provider/needs_auth/BlackboxPro.py
+2
-2
Modified
g4f/Provider/needs_auth/Cerebras.py
+2
-2
Modified
g4f/Provider/needs_auth/Claude.py
+2
-2
Modified
g4f/Provider/needs_auth/DeepSeek.py
+3
-3
Modified
g4f/Provider/needs_auth/Gemini.py
+4
-3
Modified
g4f/Provider/needs_auth/GithubCopilot.py
+2
-2
Modified
g4f/Provider/needs_auth/WhiteRabbitNeo.py
+2
-2
XFEstudio/gpt4free
perf(async): migrate provider cookie lookups to get_cookies_async to prevent event loop blocking
ba4807b4
代码差异
9 个文件
+20
-19
@@ -1,3 +1,3 @@
1
1
from ..providers.helper import *
2
from ..cookies import get_cookies
2
from ..cookies import get_cookies, get_cookies_async
3
3
from ..requests.aiohttp import get_connector
@@ -1,6 +1,6 @@
1
1
from __future__ import annotations
2
2
3
from ...cookies import get_cookies
3
from ...cookies import get_cookies, get_cookies_async
4
4
from ...providers.response import ImageResponse
5
5
from ...errors import MissingAuthError
6
6
from ...typing import AsyncResult, Messages, Cookies
@@ -51,7 +51,7 @@ class BingCreateImages(AsyncGeneratorProvider, ProviderModelMixin):
51
51
Returns:
52
52
str: Markdown formatted string with images.
53
53
"""
54
cookies = self.cookies or get_cookies(".bing.com", False)
54
cookies = self.cookies or await get_cookies_async(".bing.com", False)
55
55
if cookies is None or "_U" not in cookies:
56
56
raise MissingAuthError('Missing "_U" cookie')
57
57
async with create_session(cookies, self.proxy) as session:
@@ -18,7 +18,7 @@ from ...cookies import get_cookies_dir
18
18
from ..helper import format_media_prompt, render_messages
19
19
from ...providers.response import JsonConversation, ImageResponse
20
20
from ...tools.media import merge_media
21
from ...cookies import get_cookies
21
from ...cookies import get_cookies, get_cookies_async
22
22
from ...errors import RateLimitError, NoValidHarFileError
23
23
from ... import debug
24
24
@@ -2711,7 +2711,7 @@ class BlackboxPro(AsyncGeneratorProvider, ProviderModelMixin):
2711
2711
if not cls.session_data:
2712
2712
async with session.get(
2713
2713
"https://www.blackbox.ai/api/auth/session",
2714
cookies=get_cookies(cls.cookie_domain, False),
2714
cookies=await get_cookies_async(cls.cookie_domain, False),
2715
2715
) as resp:
2716
2716
resp.raise_for_status()
2717
2717
cls.session_data = await resp.json()
@@ -5,7 +5,7 @@ from aiohttp import ClientSession
5
5
from .OpenaiAPI import OpenaiAPI
6
6
from ...typing import AsyncResult, Messages, Cookies
7
7
from ...requests.raise_for_status import raise_for_status
8
from ...cookies import get_cookies
8
from ...cookies import get_cookies, get_cookies_async
9
9
10
10
11
11
class Cerebras(OpenaiAPI):
@@ -38,7 +38,7 @@ class Cerebras(OpenaiAPI):
38
38
) -> AsyncResult:
39
39
if api_key is None:
40
40
if cookies is None:
41
cookies = get_cookies(".cerebras.ai")
41
cookies = await get_cookies_async(".cerebras.ai")
42
42
async with ClientSession(cookies=cookies) as session:
43
43
async with session.get(
44
44
"https://inference.cerebras.ai/api/auth/session"
@@ -4,7 +4,7 @@ import os
4
4
5
5
from ...typing import Messages, AsyncResult
6
6
from ...errors import MissingAuthError
7
from ...cookies import get_cookies
7
from ...cookies import get_cookies, get_cookies_async
8
8
from ..template import OpenaiTemplate
9
9
10
10
@@ -29,7 +29,7 @@ class Claude(OpenaiTemplate):
29
29
**kwargs,
30
30
) -> AsyncResult:
31
31
api_key = os.environ.get("CLAUDE_COOKIE", api_key)
32
cookies = cookies or get_cookies(cls.cookie_domain)
32
cookies = cookies or await get_cookies_async(cls.cookie_domain)
33
33
if not api_key:
34
34
api_key = "; ".join([f"{key}={value}" for key, value in cookies.items()])
35
35
if not api_key:
@@ -6,7 +6,7 @@ from datetime import datetime
6
6
from typing import Any, Optional, Literal
7
7
8
8
from g4f import debug
9
from g4f.cookies import get_cookies, get_headers
9
from g4f.cookies import get_cookies, get_cookies_async, get_headers
10
10
from g4f.errors import MissingAuthError, ResponseError
11
11
from g4f.image import to_bytes, detect_file_type
12
12
from g4f.providers.base_provider import AsyncGeneratorProvider, ProviderModelMixin
@@ -472,7 +472,7 @@ class DeepSeek(AsyncGeneratorProvider, ProviderModelMixin):
472
472
473
473
@classmethod
474
474
async def get_quota(cls, **kwargs):
475
cookies = get_cookies(cls.cookie_domain, False)
475
cookies = await get_cookies_async(cls.cookie_domain, False)
476
476
headers = _normalized_headers(get_headers(cls.cookie_domain) or {})
477
477
if cookies and headers.get("authorization"):
478
478
return {"success": True}
@@ -807,7 +807,7 @@ class DeepSeek(AsyncGeneratorProvider, ProviderModelMixin):
807
807
source_headers = dict(headers or {})
808
808
# Try to get auth from HAR file first
809
809
if cookies is None:
810
cookies = get_cookies(cls.cookie_domain, False)
810
cookies = await get_cookies_async(cls.cookie_domain, False)
811
811
discovered_headers = get_headers(cls.cookie_domain) or {}
812
812
# Explicit caller headers override browser/HAR values, including when
813
813
# their casing differs (normalization happens below).
@@ -53,6 +53,7 @@ from ..helper import (
53
53
format_media_prompt,
54
54
format_prompt,
55
55
get_cookies,
56
get_cookies_async,
56
57
get_last_user_message,
57
58
)
58
59
from .gemini_utils import (
@@ -546,7 +547,7 @@ class Gemini(AsyncGeneratorProvider, ProviderModelMixin):
546
547
@classmethod
547
548
async def get_quota(cls, **kwargs):
548
549
if not cls._cookies:
549
cls._cookies = get_cookies(GOOGLE_COOKIE_DOMAIN, False, True)
550
cls._cookies = await get_cookies_async(GOOGLE_COOKIE_DOMAIN, False, True)
550
551
if not cls._cookies:
551
552
raise MissingAuthError('Missing or invalid "__Secure-1PSID" cookie')
552
553
async with ClientSession(
@@ -568,7 +569,7 @@ class Gemini(AsyncGeneratorProvider, ProviderModelMixin):
568
569
if cookies is not None:
569
570
cls._cookies = cookies
570
571
elif cls._cookies is None:
571
cls._cookies = get_cookies(GOOGLE_COOKIE_DOMAIN, False, True)
572
cls._cookies = await get_cookies_async(GOOGLE_COOKIE_DOMAIN, False, True)
572
573
request_cookies = dict(cls._cookies or {})
573
574
base_connector = get_connector(connector, proxy)
574
575
@@ -644,7 +645,7 @@ class Gemini(AsyncGeneratorProvider, ProviderModelMixin):
644
645
if cookies is not None:
645
646
cls._cookies = cookies
646
647
elif cls._cookies is None:
647
cls._cookies = get_cookies(GOOGLE_COOKIE_DOMAIN, False, True)
648
cls._cookies = await get_cookies_async(GOOGLE_COOKIE_DOMAIN, False, True)
648
649
request_cookies = dict(cls._cookies or {})
649
650
authenticated_session = _has_authenticated_session(request_cookies)
650
651
conversation = _resolve_gemini_conversation(
@@ -8,7 +8,7 @@ from ...typing import AsyncResult, Messages, Cookies
8
8
from ...requests.raise_for_status import raise_for_status
9
9
from ...requests.aiohttp import get_connector
10
10
from ...providers.helper import format_prompt, get_last_user_message
11
from ...cookies import get_cookies
11
from ...cookies import get_cookies, get_cookies_async
12
12
13
13
14
14
class Conversation(BaseConversation):
@@ -93,7 +93,7 @@ class GithubCopilot(AsyncGeneratorProvider, ProviderModelMixin):
93
93
model = cls.default_model
94
94
95
95
if cookies is None:
96
cookies = get_cookies("github.com")
96
cookies = await get_cookies_async("github.com")
97
97
98
98
async with ClientSession(
99
99
connector=get_connector(proxy=proxy),
@@ -5,7 +5,7 @@ from aiohttp import ClientSession, BaseConnector
5
5
from ...typing import AsyncResult, Messages, Cookies
6
6
from ...requests.raise_for_status import raise_for_status
7
7
from ..base_provider import AsyncGeneratorProvider
8
from ..helper import get_cookies, get_connector, get_random_string
8
from ..helper import get_cookies, get_cookies_async, get_connector, get_random_string
9
9
10
10
11
11
class WhiteRabbitNeo(AsyncGeneratorProvider):
@@ -25,7 +25,7 @@ class WhiteRabbitNeo(AsyncGeneratorProvider):
25
25
**kwargs,
26
26
) -> AsyncResult:
27
27
if cookies is None:
28
cookies = get_cookies("www.whiterabbitneo.com")
28
cookies = await get_cookies_async("www.whiterabbitneo.com")
29
29
headers = {
30
30
"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:123.0) Gecko/20100101 Firefox/123.0",
31
31
"Accept": "*/*",