返回提交历史
Modified
g4f/Provider/needs_auth/Gemini.py
+7
-13
Modified
g4f/api/__init__.py
+10
-2
Modified
g4f/gui/server/internet.py
+0
-1
XFEstudio/gpt4free
Fix provider api response (#2408)
* Update __init__.py * Update __init__.py * Update Gemini.py * Update Gemini.py * Update Gemini.py * Update Gemini.py * Update internet.py
f36e6a2e
代码差异
3 个文件
+17
-16
@@ -20,6 +20,7 @@ from ..base_provider import AsyncGeneratorProvider, BaseConversation, Synthesize
20
20
from ..helper import format_prompt, get_cookies
21
21
from ...requests.raise_for_status import raise_for_status
22
22
from ...requests.aiohttp import get_connector
23
from ...requests import get_nodriver
23
24
from ...errors import MissingAuthError
24
25
from ...image import ImageResponse, to_bytes
25
26
from ... import debug
@@ -68,17 +69,7 @@ class Gemini(AsyncGeneratorProvider):
68
69
if debug.logging:
69
70
print("Skip nodriver login in Gemini provider")
70
71
return
71
try:
72
from platformdirs import user_config_dir
73
user_data_dir = user_config_dir("g4f-nodriver")
74
except:
75
user_data_dir = None
76
if debug.logging:
77
print(f"Open nodriver with user_dir: {user_data_dir}")
78
browser = await nodriver.start(
79
user_data_dir=user_data_dir,
80
browser_args=None if proxy is None else [f"--proxy-server={proxy}"],
81
)
72
browser = await get_nodriver(proxy=proxy)
82
73
login_url = os.environ.get("G4F_LOGIN_URL")
83
74
if login_url:
84
75
yield f"Please login: [Google Gemini]({login_url})\n\n"
@@ -118,8 +109,11 @@ class Gemini(AsyncGeneratorProvider):
118
109
if not cls._snlm0e:
119
110
await cls.fetch_snlm0e(session, cls._cookies) if cls._cookies else None
120
111
if not cls._snlm0e:
121
async for chunk in cls.nodriver_login(proxy):
122
yield chunk
112
try:
113
async for chunk in cls.nodriver_login(proxy):
114
yield chunk
115
except Exception as e:
116
raise MissingAuthError('Missing "__Secure-1PSID" cookie', e)
123
117
if not cls._snlm0e:
124
118
if cls._cookies is None or "__Secure-1PSID" not in cls._cookies:
125
119
raise MissingAuthError('Missing "__Secure-1PSID" cookie')
@@ -86,6 +86,14 @@ class ProviderResponseModel(BaseModel):
86
86
object: str = "provider"
87
87
created: int
88
88
owned_by: Optional[str]
89
url: Optional[str]
90
label: Optional[str]
91
⅞
92
class ProviderResponseModelDetail(ProviderResponseModel):
93
models: list[str]
94
image_models: list[str]
95
vision_models: list[str]
96
params: list[str]
89
97
90
98
class ModelResponseModel(BaseModel):
91
99
id: str
@@ -299,7 +307,7 @@ class Api:
299
307
} for provider in __providers__ if provider.working]
300
308
301
309
@self.app.get("/v1/providers/{provider}")
302
async def providers_info(provider: str) -> ProviderResponseModel:
310
async def providers_info(provider: str) -> ProviderResponseModelDetail:
303
311
if provider not in ProviderUtils.convert:
304
312
return JSONResponse({"error": "The provider does not exist."}, 404)
305
313
provider: ProviderType = ProviderUtils.convert[provider]
@@ -396,4 +404,4 @@ def run_api(
396
404
use_colors=use_colors,
397
405
factory=True,
398
406
reload=reload
399
)
407
)
@@ -107,7 +107,6 @@ async def search(query: str, n_results: int = 5, max_words: int = 2500, add_text
107
107
safesearch="moderate",
108
108
timelimit="y",
109
109
max_results=n_results,
110
backend="html"
111
110
):
112
111
results.append(SearchResultEntry(
113
112
result["title"],