Enhance Yupp provider to support API key management in model fetching

This commit is contained in:
hlohaus 2025-10-06 09:13:53 +02:00
parent ef0867c0dc
commit fec4185215
2 changed files with 16 additions and 7 deletions

View file

@ -9,6 +9,7 @@ from ..providers.base_provider import AbstractProvider, ProviderModelMixin
from ..providers.response import Reasoning, PlainTextResponse, PreviewResponse
from ..errors import RateLimitError, ProviderException
from ..cookies import get_cookies
from ..tools.auth import AuthManager
from .yupp.models import YuppModelManager
from ..debug import log
@ -161,11 +162,16 @@ class Yupp(AbstractProvider, ProviderModelMixin):
active_by_default = True
@classmethod
def get_models(cls) -> List[Dict[str, Any]]:
def get_models(cls, api_key: str = None, **kwargs) -> List[Dict[str, Any]]:
if not cls.models:
manager = YuppModelManager()
if not api_key:
api_key = AuthManager.load_api_key(cls)
if not api_key:
api_key = get_cookies("yupp.ai", False).get("__Secure-yupp.session-token")
manager = YuppModelManager(api_key=api_key)
models = manager.client.fetch_models()
cls.models = [model.get("name") for model in models]
if models:
cls.models = [model.get("name") for model in models]
return cls.models
@classmethod

View file

@ -17,9 +17,10 @@ class ModelConfig:
class YuppAPIClient:
"""Yupp API client for fetching model data"""
def __init__(self, config: ModelConfig = None):
def __init__(self, config: ModelConfig = None, api_key: str = None):
self.config = config or ModelConfig()
self.session = requests.Session()
self.api_key = api_key
self._setup_session()
def _setup_session(self) -> None:
@ -47,6 +48,8 @@ class YuppAPIClient:
self.session.cookies.set("__Secure-yupp.session-token", token)
def _get_session_token(self) -> Optional[str]:
if self.api_key:
return self.api_key
"""Get session token from environment variable"""
env_tokens = os.getenv("YUPP_TOKENS")
if not env_tokens:
@ -221,9 +224,9 @@ class DataManager:
class YuppModelManager:
"""Main manager class for Yupp model operations"""
def __init__(self, config: ModelConfig = None):
def __init__(self, config: ModelConfig = None, api_key: str = None):
self.config = config or ModelConfig()
self.client = YuppAPIClient(config)
self.client = YuppAPIClient(config, api_key)
self.processor = ModelProcessor()
self.data_manager = DataManager()