diff --git a/litellm/provider_capabilities.py b/litellm/provider_capabilities.py index 78a5769cfc7..c9c6538805c 100644 --- a/litellm/provider_capabilities.py +++ b/litellm/provider_capabilities.py @@ -176,6 +176,8 @@ def capabilities_from_model_info( supports_audio_input: bool = False, supports_audio_output: bool = False, supports_prompt_caching: bool = False, + supports_response_schema: bool = False, + supports_reasoning: bool = False, **_: object, # ignore unknown keys from model_cost_map ) -> ProviderCapabilities: """Bridge: construct ProviderCapabilities from existing model_cost_map flags. @@ -188,9 +190,11 @@ def capabilities_from_model_info( vision=supports_vision, streaming=supports_streaming, function_calling=supports_function_calling, + structured_output=supports_response_schema, audio_input=supports_audio_input, audio_output=supports_audio_output, prompt_caching=supports_prompt_caching, + reasoning=supports_reasoning, ), # strengths comes from model_cost_map scoring or defaults to neutral ) diff --git a/tests/test_provider_capabilities.py b/tests/test_provider_capabilities.py index 539814b1b01..8fd7250b73b 100644 --- a/tests/test_provider_capabilities.py +++ b/tests/test_provider_capabilities.py @@ -161,3 +161,17 @@ class TestCapabilitiesFromModelInfo: supports_vision=True, ) assert cap.supports_vision is True + + def test_maps_response_schema_to_structured_output(self): + """supports_response_schema should map to structured_output.""" + cap = capabilities_from_model_info( + supports_response_schema=True, + ) + assert cap.supports_structured_output is True + + def test_maps_reasoning_flag(self): + """supports_reasoning should be preserved.""" + cap = capabilities_from_model_info( + supports_reasoning=True, + ) + assert cap.supports.reasoning is True