mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-13 03:59:12 +00:00
* refactor(rust): separate Messages settings from capability inputs * refactor(rust-bridge): unify Messages OCR and Responses call inputs * refactor(rust-bridge): share NativeCall across inference entrypoints * fix(rust-bridge): preserve Responses URL aliases and public test inputs
73 lines
2.5 KiB
Python
73 lines
2.5 KiB
Python
from typing import Final
|
|
|
|
import pytest
|
|
|
|
import litellm
|
|
from litellm.rust_bridge.model_capabilities import anthropic_model_capabilities
|
|
|
|
|
|
pytestmark = pytest.mark.usefixtures("local_model_cost_map")
|
|
|
|
|
|
def _flag_model(monkeypatch: pytest.MonkeyPatch, name: str, **flags: bool) -> None:
|
|
monkeypatch.setitem(
|
|
litellm.model_cost,
|
|
name,
|
|
{
|
|
"litellm_provider": "anthropic",
|
|
"mode": "chat",
|
|
"input_cost_per_token": 0,
|
|
"output_cost_per_token": 0,
|
|
**flags,
|
|
},
|
|
)
|
|
|
|
|
|
def test_capabilities_come_from_the_model_map_under_the_callers_provider(monkeypatch: pytest.MonkeyPatch) -> None:
|
|
_flag_model(
|
|
monkeypatch,
|
|
"claude-test-adaptive",
|
|
supports_reasoning=True,
|
|
supports_adaptive_thinking=True,
|
|
supports_output_config=True,
|
|
supports_xhigh_reasoning_effort=True,
|
|
supports_sampling_params=False,
|
|
)
|
|
|
|
capabilities: Final = anthropic_model_capabilities("anthropic/claude-test-adaptive", None)
|
|
|
|
assert capabilities["supports_adaptive_thinking"]
|
|
assert capabilities["supports_output_config"]
|
|
assert not capabilities["supports_legacy_thinking"]
|
|
assert not capabilities["supports_sampling_params"]
|
|
assert capabilities["effort_tiers"] == {
|
|
"minimal": False,
|
|
"low": False,
|
|
"medium": False,
|
|
"high": False,
|
|
"xhigh": True,
|
|
"max": False,
|
|
}
|
|
|
|
|
|
def test_unmapped_model_keeps_sampling_params_and_no_reasoning_features() -> None:
|
|
capabilities: Final = anthropic_model_capabilities("anthropic/not-a-real-model", None)
|
|
|
|
assert capabilities["supports_sampling_params"]
|
|
assert not capabilities["supports_reasoning"]
|
|
assert not capabilities["supports_adaptive_thinking"]
|
|
assert capabilities["effort_tiers"] == dict.fromkeys(("minimal", "low", "medium", "high", "xhigh", "max"), False)
|
|
|
|
|
|
def test_capability_source_observes_runtime_registration_changes(monkeypatch: pytest.MonkeyPatch) -> None:
|
|
model: Final = "claude-test-runtime-registration"
|
|
_flag_model(monkeypatch, model, supports_reasoning=True, supports_output_config=True)
|
|
before: Final = anthropic_model_capabilities(model, "anthropic")
|
|
|
|
_flag_model(monkeypatch, model, supports_reasoning=False, supports_output_config=False)
|
|
after: Final = anthropic_model_capabilities(model, "anthropic")
|
|
|
|
assert before["supports_reasoning"] is True
|
|
assert before["supports_output_config"] is True
|
|
assert after["supports_reasoning"] is False
|
|
assert after["supports_output_config"] is False
|