mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-09 03:18:44 +00:00
fix(proxy): resolve router model aliases in /utils/supported_openai_params
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
parent
4ba8517134
commit
1bf3ab5388
2 changed files with 35 additions and 3 deletions
|
|
@ -12478,11 +12478,14 @@ async def supported_openai_params(model: str):
|
|||
--header 'Authorization: Bearer sk-1234'
|
||||
```
|
||||
"""
|
||||
global llm_router
|
||||
try:
|
||||
model, custom_llm_provider, _, _ = litellm.get_llm_provider(model=model)
|
||||
deployments: Final = llm_router.get_model_list(model_name=model) if llm_router is not None else None
|
||||
model_to_map: Final = deployments[0]["litellm_params"]["model"] if deployments else model
|
||||
litellm_model, custom_llm_provider, _, _ = litellm.get_llm_provider(model=model_to_map)
|
||||
return {
|
||||
"supported_openai_params": litellm.get_supported_openai_params(
|
||||
model=model, custom_llm_provider=custom_llm_provider
|
||||
model=litellm_model, custom_llm_provider=custom_llm_provider
|
||||
)
|
||||
}
|
||||
except Exception:
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ Pins (PR2):
|
|||
from __future__ import annotations
|
||||
|
||||
import asyncio
|
||||
from unittest.mock import AsyncMock, MagicMock
|
||||
from unittest.mock import MagicMock
|
||||
|
||||
import pytest
|
||||
|
||||
|
|
@ -124,6 +124,35 @@ def test_supported_openai_params_happy_path(client, auth_as, patched_supported_p
|
|||
}
|
||||
|
||||
|
||||
def test_supported_openai_params_resolves_router_alias(client, auth_as, monkeypatch):
|
||||
"""A router ``model_name`` alias unknown to the cost map (e.g. ``claude-opus-4-6-cached``) resolves via the router's underlying ``litellm_params.model`` instead of 400ing."""
|
||||
router = MagicMock()
|
||||
router.get_model_list.return_value = [
|
||||
{"model_name": "claude-opus-4-6-cached", "litellm_params": {"model": "anthropic/claude-opus-4-6"}}
|
||||
]
|
||||
monkeypatch.setattr(proxy_server, "llm_router", router)
|
||||
seen = []
|
||||
|
||||
def _get_llm_provider(model):
|
||||
seen.append(model)
|
||||
return (model, "anthropic", None, None)
|
||||
|
||||
monkeypatch.setattr(litellm, "get_llm_provider", _get_llm_provider)
|
||||
monkeypatch.setattr(
|
||||
litellm,
|
||||
"get_supported_openai_params",
|
||||
lambda model, custom_llm_provider=None: ["max_tokens"],
|
||||
)
|
||||
|
||||
with auth_as():
|
||||
response = client.get("/utils/supported_openai_params", params={"model": "claude-opus-4-6-cached"})
|
||||
|
||||
assert response.status_code == 200
|
||||
assert response.json() == {"supported_openai_params": ["max_tokens"]}
|
||||
router.get_model_list.assert_called_once_with(model_name="claude-opus-4-6-cached")
|
||||
assert seen == ["anthropic/claude-opus-4-6"]
|
||||
|
||||
|
||||
def test_supported_openai_params_invalid_model(client, auth_as, monkeypatch):
|
||||
"""Pins ``GET /utils/supported_openai_params`` (error: unknown model)."""
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue