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

XFEstudio/gpt4free

Enhance Yupp provider to support API key management in model fetching

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

代码差异

2 个文件 +16 -7
Modified g4f/Provider/Yupp.py +9 -3
@@ -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
Modified g4f/Provider/yupp/models.py +7 -4
@@ -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