mirror of
https://github.com/BerriAI/litellm.git
synced 2026-09-10 22:41:41 +00:00
Add support for reasoning param
This commit is contained in:
parent
bba229f922
commit
57e75a3082
5 changed files with 127 additions and 3 deletions
|
|
@ -300,6 +300,51 @@ litellm_settings:
|
|||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Reasoning Effort
|
||||
|
||||
The `reasoning_effort` parameter is supported on select Fireworks AI models. Supported models include:
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="sdk" label="SDK">
|
||||
|
||||
```python
|
||||
from litellm import completion
|
||||
import os
|
||||
|
||||
os.environ["FIREWORKS_AI_API_KEY"] = "YOUR_API_KEY"
|
||||
|
||||
response = completion(
|
||||
model="fireworks_ai/accounts/fireworks/models/qwen3-8b",
|
||||
messages=[
|
||||
{"role": "user", "content": "What is the capital of France?"}
|
||||
],
|
||||
reasoning_effort="low",
|
||||
)
|
||||
print(response)
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="proxy" label="PROXY">
|
||||
|
||||
```bash
|
||||
curl http://0.0.0.0:4000/v1/chat/completions \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "Authorization: Bearer $LITELLM_KEY" \
|
||||
-d '{
|
||||
"model": "fireworks_ai/accounts/fireworks/models/qwen3-8b",
|
||||
"messages": [
|
||||
{
|
||||
"role": "user",
|
||||
"content": "What is the capital of France?"
|
||||
}
|
||||
],
|
||||
"reasoning_effort": "low"
|
||||
}'
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Supported Models - ALL Fireworks AI Models Supported!
|
||||
|
||||
:::info
|
||||
|
|
|
|||
|
|
@ -25,7 +25,11 @@ from litellm.types.utils import (
|
|||
ModelResponse,
|
||||
ProviderSpecificModelInfo,
|
||||
)
|
||||
from litellm.utils import supports_function_calling, supports_tool_choice
|
||||
from litellm.utils import (
|
||||
supports_function_calling,
|
||||
supports_reasoning,
|
||||
supports_tool_choice,
|
||||
)
|
||||
|
||||
from ...openai.chat.gpt_transformation import OpenAIGPTConfig
|
||||
from ..common_utils import FireworksAIException
|
||||
|
|
@ -51,6 +55,7 @@ class FireworksAIConfig(OpenAIGPTConfig):
|
|||
response_format: Optional[dict] = None
|
||||
user: Optional[str] = None
|
||||
logprobs: Optional[int] = None
|
||||
reasoning_effort: Optional[str] = None
|
||||
|
||||
# Non OpenAI parameters - Fireworks AI only params
|
||||
prompt_truncate_length: Optional[int] = None
|
||||
|
|
@ -71,6 +76,7 @@ class FireworksAIConfig(OpenAIGPTConfig):
|
|||
response_format: Optional[dict] = None,
|
||||
user: Optional[str] = None,
|
||||
logprobs: Optional[int] = None,
|
||||
reasoning_effort: Optional[str] = None,
|
||||
prompt_truncate_length: Optional[int] = None,
|
||||
context_length_exceeded_behavior: Optional[Literal["error", "truncate"]] = None,
|
||||
) -> None:
|
||||
|
|
@ -111,6 +117,10 @@ class FireworksAIConfig(OpenAIGPTConfig):
|
|||
if supports_tool_choice(model=model, custom_llm_provider="fireworks_ai"):
|
||||
supported_params.append("tool_choice")
|
||||
|
||||
# Only add reasoning_effort for models that support it
|
||||
if supports_reasoning(model=model, custom_llm_provider="fireworks_ai"):
|
||||
supported_params.append("reasoning_effort")
|
||||
|
||||
return supported_params
|
||||
|
||||
def map_openai_params(
|
||||
|
|
|
|||
|
|
@ -10787,6 +10787,7 @@
|
|||
"mode": "chat",
|
||||
"output_cost_per_token": 1.68e-06,
|
||||
"source": "https://fireworks.ai/pricing",
|
||||
"supports_reasoning": true,
|
||||
"supports_response_schema": true,
|
||||
"supports_tool_choice": true
|
||||
},
|
||||
|
|
@ -10799,6 +10800,7 @@
|
|||
"mode": "chat",
|
||||
"output_cost_per_token": 1.68e-06,
|
||||
"source": "https://fireworks.ai/pricing",
|
||||
"supports_reasoning": true,
|
||||
"supports_response_schema": true,
|
||||
"supports_tool_choice": true
|
||||
},
|
||||
|
|
@ -10812,6 +10814,7 @@
|
|||
"output_cost_per_token": 1.2e-06,
|
||||
"source": "https://fireworks.ai/models/fireworks/deepseek-v3p2",
|
||||
"supports_function_calling": true,
|
||||
"supports_reasoning": true,
|
||||
"supports_response_schema": true,
|
||||
"supports_tool_choice": true
|
||||
},
|
||||
|
|
@ -10838,6 +10841,7 @@
|
|||
"output_cost_per_token": 2.19e-06,
|
||||
"source": "https://fireworks.ai/models/fireworks/glm-4p5",
|
||||
"supports_function_calling": true,
|
||||
"supports_reasoning": true,
|
||||
"supports_response_schema": true,
|
||||
"supports_tool_choice": true
|
||||
},
|
||||
|
|
@ -10851,6 +10855,7 @@
|
|||
"output_cost_per_token": 8.8e-07,
|
||||
"source": "https://artificialanalysis.ai/models/glm-4-5-air",
|
||||
"supports_function_calling": true,
|
||||
"supports_reasoning": true,
|
||||
"supports_response_schema": true,
|
||||
"supports_tool_choice": true
|
||||
},
|
||||
|
|
@ -10864,6 +10869,7 @@
|
|||
"mode": "chat",
|
||||
"source": "https://fireworks.ai/pricing",
|
||||
"supports_function_calling": true,
|
||||
"supports_reasoning": true,
|
||||
"supports_response_schema": true,
|
||||
"supports_tool_choice": true
|
||||
},
|
||||
|
|
@ -10877,6 +10883,7 @@
|
|||
"output_cost_per_token": 6e-07,
|
||||
"source": "https://fireworks.ai/pricing",
|
||||
"supports_function_calling": true,
|
||||
"supports_reasoning": true,
|
||||
"supports_response_schema": true,
|
||||
"supports_tool_choice": true
|
||||
},
|
||||
|
|
@ -10890,6 +10897,7 @@
|
|||
"output_cost_per_token": 2e-07,
|
||||
"source": "https://fireworks.ai/pricing",
|
||||
"supports_function_calling": true,
|
||||
"supports_reasoning": true,
|
||||
"supports_response_schema": true,
|
||||
"supports_tool_choice": true
|
||||
},
|
||||
|
|
@ -29313,7 +29321,8 @@
|
|||
"input_cost_per_token": 1.2e-06,
|
||||
"output_cost_per_token": 1.2e-06,
|
||||
"litellm_provider": "fireworks_ai",
|
||||
"mode": "chat"
|
||||
"mode": "chat",
|
||||
"supports_reasoning": true
|
||||
},
|
||||
"fireworks_ai/accounts/fireworks/models/gpt-oss-safeguard-120b": {
|
||||
"max_tokens": 131072,
|
||||
|
|
|
|||
|
|
@ -10787,6 +10787,7 @@
|
|||
"mode": "chat",
|
||||
"output_cost_per_token": 1.68e-06,
|
||||
"source": "https://fireworks.ai/pricing",
|
||||
"supports_reasoning": true,
|
||||
"supports_response_schema": true,
|
||||
"supports_tool_choice": true
|
||||
},
|
||||
|
|
@ -10799,6 +10800,7 @@
|
|||
"mode": "chat",
|
||||
"output_cost_per_token": 1.68e-06,
|
||||
"source": "https://fireworks.ai/pricing",
|
||||
"supports_reasoning": true,
|
||||
"supports_response_schema": true,
|
||||
"supports_tool_choice": true
|
||||
},
|
||||
|
|
@ -10812,6 +10814,7 @@
|
|||
"output_cost_per_token": 1.2e-06,
|
||||
"source": "https://fireworks.ai/models/fireworks/deepseek-v3p2",
|
||||
"supports_function_calling": true,
|
||||
"supports_reasoning": true,
|
||||
"supports_response_schema": true,
|
||||
"supports_tool_choice": true
|
||||
},
|
||||
|
|
@ -10838,6 +10841,7 @@
|
|||
"output_cost_per_token": 2.19e-06,
|
||||
"source": "https://fireworks.ai/models/fireworks/glm-4p5",
|
||||
"supports_function_calling": true,
|
||||
"supports_reasoning": true,
|
||||
"supports_response_schema": true,
|
||||
"supports_tool_choice": true
|
||||
},
|
||||
|
|
@ -10851,6 +10855,7 @@
|
|||
"output_cost_per_token": 8.8e-07,
|
||||
"source": "https://artificialanalysis.ai/models/glm-4-5-air",
|
||||
"supports_function_calling": true,
|
||||
"supports_reasoning": true,
|
||||
"supports_response_schema": true,
|
||||
"supports_tool_choice": true
|
||||
},
|
||||
|
|
@ -10864,6 +10869,7 @@
|
|||
"mode": "chat",
|
||||
"source": "https://fireworks.ai/pricing",
|
||||
"supports_function_calling": true,
|
||||
"supports_reasoning": true,
|
||||
"supports_response_schema": true,
|
||||
"supports_tool_choice": true
|
||||
},
|
||||
|
|
@ -10877,6 +10883,7 @@
|
|||
"output_cost_per_token": 6e-07,
|
||||
"source": "https://fireworks.ai/pricing",
|
||||
"supports_function_calling": true,
|
||||
"supports_reasoning": true,
|
||||
"supports_response_schema": true,
|
||||
"supports_tool_choice": true
|
||||
},
|
||||
|
|
@ -10890,6 +10897,7 @@
|
|||
"output_cost_per_token": 2e-07,
|
||||
"source": "https://fireworks.ai/pricing",
|
||||
"supports_function_calling": true,
|
||||
"supports_reasoning": true,
|
||||
"supports_response_schema": true,
|
||||
"supports_tool_choice": true
|
||||
},
|
||||
|
|
@ -29313,7 +29321,8 @@
|
|||
"input_cost_per_token": 1.2e-06,
|
||||
"output_cost_per_token": 1.2e-06,
|
||||
"litellm_provider": "fireworks_ai",
|
||||
"mode": "chat"
|
||||
"mode": "chat",
|
||||
"supports_reasoning": true
|
||||
},
|
||||
"fireworks_ai/accounts/fireworks/models/gpt-oss-safeguard-120b": {
|
||||
"max_tokens": 131072,
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ sys.path.insert(
|
|||
0, os.path.abspath("../../../../..")
|
||||
) # Adds the parent directory to the system path
|
||||
|
||||
from litellm import supports_reasoning
|
||||
from litellm.llms.fireworks_ai.chat.transformation import FireworksAIConfig
|
||||
from litellm.types.llms.openai import ChatCompletionToolCallFunctionChunk
|
||||
from litellm.types.utils import ChatCompletionMessageToolCall, Function, Message
|
||||
|
|
@ -57,3 +58,53 @@ def test_handle_message_content_with_tool_calls():
|
|||
updated_message.tool_calls[0].function.arguments
|
||||
== expected_tool_call.function.arguments
|
||||
)
|
||||
|
||||
|
||||
def test_supports_reasoning_effort():
|
||||
"""Test that reasoning_effort is only supported for specific Fireworks AI models."""
|
||||
# Models that support reasoning_effort
|
||||
supported_models = [
|
||||
"fireworks_ai/accounts/fireworks/models/qwen3-8b",
|
||||
"fireworks_ai/accounts/fireworks/models/qwen3-32b",
|
||||
"fireworks_ai/accounts/fireworks/models/qwen3-coder-480b-a35b-instruct",
|
||||
"fireworks_ai/accounts/fireworks/models/deepseek-v3p1",
|
||||
"fireworks_ai/accounts/fireworks/models/deepseek-v3p2",
|
||||
"fireworks_ai/accounts/fireworks/models/glm-4p5",
|
||||
"fireworks_ai/accounts/fireworks/models/glm-4p5-air",
|
||||
"fireworks_ai/accounts/fireworks/models/glm-4p6",
|
||||
"fireworks_ai/accounts/fireworks/models/gpt-oss-120b",
|
||||
"fireworks_ai/accounts/fireworks/models/gpt-oss-20b",
|
||||
]
|
||||
|
||||
# Models that don't support reasoning_effort
|
||||
unsupported_models = [
|
||||
"fireworks_ai/accounts/fireworks/models/llama-v3-70b-instruct",
|
||||
"fireworks_ai/accounts/fireworks/models/mixtral-8x7b-instruct",
|
||||
]
|
||||
|
||||
for model in supported_models:
|
||||
assert (
|
||||
supports_reasoning(model=model, custom_llm_provider="fireworks_ai") == True
|
||||
), f"{model} should support reasoning_effort"
|
||||
|
||||
for model in unsupported_models:
|
||||
assert (
|
||||
supports_reasoning(model=model, custom_llm_provider="fireworks_ai") == False
|
||||
), f"{model} should not support reasoning_effort"
|
||||
|
||||
|
||||
def test_get_supported_openai_params_reasoning_effort():
|
||||
"""Test that reasoning_effort is only included in supported params for models that support it."""
|
||||
config = FireworksAIConfig()
|
||||
|
||||
# Model that supports reasoning_effort
|
||||
supported_params = config.get_supported_openai_params(
|
||||
"fireworks_ai/accounts/fireworks/models/qwen3-8b"
|
||||
)
|
||||
assert "reasoning_effort" in supported_params
|
||||
|
||||
# Model that doesn't support reasoning_effort
|
||||
unsupported_params = config.get_supported_openai_params(
|
||||
"fireworks_ai/accounts/fireworks/models/llama-v3-70b-instruct"
|
||||
)
|
||||
assert "reasoning_effort" not in unsupported_params
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue