Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 13 additions & 5 deletions app/services/provider_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,10 @@ async def _load_provider_keys(self) -> dict[str, dict[str, Any]]:
for provider_key in provider_key_records:
model_mapping = provider_key.model_mapping or {}

keys[provider_key.provider_name] = {
# Normalize provider name to lowercase for consistent lookup
normalized_provider_name = provider_key.provider_name.lower()

keys[normalized_provider_name] = {
"id": provider_key.id,
"api_key": decrypt_api_key(provider_key.encrypted_api_key),
"base_url": provider_key.base_url,
Expand Down Expand Up @@ -264,7 +267,10 @@ async def _load_provider_keys_async(self) -> dict[str, dict[str, Any]]:
for provider_key in provider_key_records:
model_mapping = provider_key.model_mapping or {}

keys[provider_key.provider_name] = {
# Normalize provider name to lowercase for consistent lookup
normalized_provider_name = provider_key.provider_name.lower()

keys[normalized_provider_name] = {
"id": provider_key.id,
"api_key": decrypt_api_key(provider_key.encrypted_api_key),
"base_url": provider_key.base_url,
Expand Down Expand Up @@ -303,8 +309,8 @@ def _extract_provider_name_prefix(
if not self._keys_loaded:
return None, model

# Get user's available provider names
user_provider_names = {p.lower() for p in self.provider_keys.keys()}
# Get user's available provider names (already normalized to lowercase)
user_provider_names = set(self.provider_keys.keys())

if allowed_provider_names:
# allowed_provider_names is already the intersection of user's provider keys and API key scope
Expand Down Expand Up @@ -359,8 +365,10 @@ def _get_provider_info_with_prefix(
self, provider_name: str, model_name: str, original_model: str
) -> tuple[str, str, str | None, int | None]:
"""Handles provider lookup when a prefix is found in the model name."""
# Provider keys are now normalized to lowercase, so we can do direct lookup
provider_name_lower = provider_name.lower()
matching_provider = next(
(key for key in self.provider_keys.keys() if key.lower() == provider_name),
(key for key in self.provider_keys.keys() if key == provider_name_lower),
None,
)

Expand Down
Loading