返回提交历史
Modified
g4f/Provider/Yupp.py
+9
-3
Modified
g4f/Provider/yupp/models.py
+7
-4
XFEstudio/gpt4free
Enhance Yupp provider to support API key management in model fetching
fec41852
代码差异
2 个文件
+16
-7
@@ -9,6 +9,7 @@ from ..providers.base_provider import AbstractProvider, ProviderModelMixin
9
9
from ..providers.response import Reasoning, PlainTextResponse, PreviewResponse
10
10
from ..errors import RateLimitError, ProviderException
11
11
from ..cookies import get_cookies
12
from ..tools.auth import AuthManager
12
13
from .yupp.models import YuppModelManager
13
14
from ..debug import log
14
15
@@ -161,11 +162,16 @@ class Yupp(AbstractProvider, ProviderModelMixin):
161
162
active_by_default = True
162
163
163
164
@classmethod
164
def get_models(cls) -> List[Dict[str, Any]]:
165
def get_models(cls, api_key: str = None, **kwargs) -> List[Dict[str, Any]]:
165
166
if not cls.models:
166
manager = YuppModelManager()
167
if not api_key:
168
api_key = AuthManager.load_api_key(cls)
169
if not api_key:
170
api_key = get_cookies("yupp.ai", False).get("__Secure-yupp.session-token")
171
manager = YuppModelManager(api_key=api_key)
167
172
models = manager.client.fetch_models()
168
cls.models = [model.get("name") for model in models]
173
if models:
174
cls.models = [model.get("name") for model in models]
169
175
return cls.models
170
176
171
177
@classmethod
@@ -17,11 +17,12 @@ class ModelConfig:
17
17
class YuppAPIClient:
18
18
"""Yupp API client for fetching model data"""
19
19
20
def __init__(self, config: ModelConfig = None):
20
def __init__(self, config: ModelConfig = None, api_key: str = None):
21
21
self.config = config or ModelConfig()
22
22
self.session = requests.Session()
23
self.api_key = api_key
23
24
self._setup_session()
24
25
25
26
def _setup_session(self) -> None:
26
27
"""Setup session with headers and cookies"""
27
28
self.session.headers.update(self._get_headers())
@@ -47,6 +48,8 @@ class YuppAPIClient:
47
48
self.session.cookies.set("__Secure-yupp.session-token", token)
48
49
49
50
def _get_session_token(self) -> Optional[str]:
51
if self.api_key:
52
return self.api_key
50
53
"""Get session token from environment variable"""
51
54
env_tokens = os.getenv("YUPP_TOKENS")
52
55
if not env_tokens:
@@ -221,9 +224,9 @@ class DataManager:
221
224
class YuppModelManager:
222
225
"""Main manager class for Yupp model operations"""
223
226
224
def __init__(self, config: ModelConfig = None):
227
def __init__(self, config: ModelConfig = None, api_key: str = None):
225
228
self.config = config or ModelConfig()
226
self.client = YuppAPIClient(config)
229
self.client = YuppAPIClient(config, api_key)
227
230
self.processor = ModelProcessor()
228
231
self.data_manager = DataManager()
229
232