Skip to content
Closed
Show file tree
Hide file tree
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
12 changes: 11 additions & 1 deletion api/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -1349,7 +1349,17 @@ def resolve_model_provider(model_id: str) -> tuple:
entry_model = (entry.get("model") or "").strip()
entry_name = (entry.get("name") or "").strip()
entry_base_url = (entry.get("base_url") or "").strip()
if entry_model and entry_name and model_id == entry_model:
entry_model_ids = set()
if entry_model:
entry_model_ids.add(entry_model)
entry_models = entry.get("models")
if isinstance(entry_models, dict):
entry_model_ids.update(
key.strip()
for key in entry_models.keys()
if isinstance(key, str) and key.strip()
)
if entry_name and model_id in entry_model_ids:
provider_hint = "custom:" + entry_name.lower().replace(" ", "-")
return model_id, provider_hint, entry_base_url or None

Expand Down
20 changes: 20 additions & 0 deletions tests/test_model_resolver.py
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,26 @@ def test_custom_provider_model_with_slash_routes_to_named_custom_provider():
assert base_url == 'http://lmstudio.local:1234/v1'


def test_custom_provider_models_dict_routes_to_named_custom_provider():
"""Models listed only under custom_providers[].models still route to that endpoint."""
model, provider, base_url = _resolve_with_config(
'sensenova-6.7-flash-lite',
provider='xiaomi',
custom_providers=[{
'name': 'LiteLLM Proxy',
'base_url': 'http://127.0.0.1:8080/v1',
'model': 'deepseek-v4-flash',
'models': {
'deepseek-v4-flash': {},
'sensenova-6.7-flash-lite': {},
},
}],
)
assert model == 'sensenova-6.7-flash-lite'
assert provider == 'custom:litellm-proxy'
assert base_url == 'http://127.0.0.1:8080/v1'


# ── get_available_models() @provider: hint behaviour ──────────────────────


Expand Down
Loading