Commit b8bb6826 authored by Your Name's avatar Your Name

Fix user provider model config access - store user_provider_config on handler

parent 707f2690
......@@ -127,10 +127,17 @@ def get_provider_handler(provider_id: str, api_key: Optional[str] = None, user_i
handler.error_tracking = {
"enabled": True,
"max_errors": 5,
"cooldown_seconds": 60
"cooldown_seconds": 60,
"failures": 0,
"last_failure": 0,
"disabled_until": None
}
handler.rate_limit = 60
# Store user provider config on the handler for later use
if user_id is not None and provider_config is not None:
handler.user_provider_config = provider_config
logger.info(f"Handler created: {handler.__class__.__name__}")
logger.info(f"=== get_provider_handler END ===")
return handler
......@@ -1035,9 +1035,22 @@ class BaseProviderHandler:
def _get_model_config(self, model: str) -> Optional[Dict]:
"""Get model configuration from provider config"""
# Use user provider config if available, otherwise global config
if self.user_id is not None and hasattr(self, 'user_provider_config'):
provider_config = self.user_provider_config
else:
provider_config = config.providers.get(self.provider_id)
if provider_config and hasattr(provider_config, 'models') and provider_config.models:
for model_config in provider_config.models:
# Handle both dict (user) and object (global) config formats
if provider_config:
# Get models list depending on config type
if isinstance(provider_config, dict):
models = provider_config.get('models', [])
else:
models = provider_config.models if hasattr(provider_config, 'models') else []
if models:
for model_config in models:
# Handle both Pydantic objects and dictionaries
model_name_value = model_config.name if hasattr(model_config, 'name') else model_config.get('name')
if model_name_value == model:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment