diff --git a/src/celeste/modalities/text/providers/anthropic/models.py b/src/celeste/modalities/text/providers/anthropic/models.py index 4909fea..5b6667e 100644 --- a/src/celeste/modalities/text/providers/anthropic/models.py +++ b/src/celeste/modalities/text/providers/anthropic/models.py @@ -122,7 +122,9 @@ streaming=True, parameter_constraints={ Parameter.MAX_TOKENS: Range(min=1, max=64000), - TextParameter.THINKING_BUDGET: Range(min=-1, max=64000), + TextParameter.THINKING_LEVEL: Choice( + options=["low", "medium", "high", "max"] + ), TextParameter.OUTPUT_SCHEMA: Schema(), TextParameter.TOOLS: ToolSupport(tools=[WebSearch]), TextParameter.TOOL_CHOICE: ToolChoiceSupport(), diff --git a/src/celeste/modalities/text/providers/mistral/models.py b/src/celeste/modalities/text/providers/mistral/models.py index 3a7a89f..62c18f4 100644 --- a/src/celeste/modalities/text/providers/mistral/models.py +++ b/src/celeste/modalities/text/providers/mistral/models.py @@ -1,6 +1,7 @@ """Mistral models for text modality.""" from celeste.constraints import ( + Choice, DocumentsConstraint, ImagesConstraint, Range, @@ -69,6 +70,9 @@ parameter_constraints={ Parameter.TEMPERATURE: Range(min=0.0, max=2.0, step=0.01), Parameter.MAX_TOKENS: Range(min=1, max=32768, step=1), + TextParameter.THINKING_BUDGET: Choice( + options=["none", "minimal", "low", "medium", "high", "xhigh"] + ), TextParameter.OUTPUT_SCHEMA: Schema(), TextParameter.IMAGE: ImagesConstraint(), TextParameter.DOCUMENT: DocumentsConstraint(), @@ -85,6 +89,9 @@ parameter_constraints={ Parameter.TEMPERATURE: Range(min=0.0, max=2.0, step=0.01), Parameter.MAX_TOKENS: Range(min=1, max=32768, step=1), + TextParameter.THINKING_BUDGET: Choice( + options=["none", "minimal", "low", "medium", "high", "xhigh"] + ), TextParameter.OUTPUT_SCHEMA: Schema(), TextParameter.IMAGE: ImagesConstraint(), TextParameter.DOCUMENT: DocumentsConstraint(), diff --git a/src/celeste/modalities/text/providers/mistral/parameters.py b/src/celeste/modalities/text/providers/mistral/parameters.py index 4bca458..52d8828 100644 --- a/src/celeste/modalities/text/providers/mistral/parameters.py +++ b/src/celeste/modalities/text/providers/mistral/parameters.py @@ -21,7 +21,7 @@ class ThinkingBudgetMapper(ParameterMapper[TextContent]): - """Map thinking_budget to Mistral's prompt_mode parameter.""" + """Map thinking_budget to Mistral reasoning controls.""" name = TextParameter.THINKING_BUDGET @@ -36,12 +36,11 @@ def map( if validated_value is None: return request - if validated_value == -1: - request["prompt_mode"] = "reasoning" - elif validated_value == 0: - request["prompt_mode"] = None - else: - request["prompt_mode"] = "reasoning" + if isinstance(validated_value, str): + request["reasoning_effort"] = validated_value + return request + + request["prompt_mode"] = None if validated_value == 0 else "reasoning" return request diff --git a/src/celeste/modalities/text/providers/xai/models.py b/src/celeste/modalities/text/providers/xai/models.py index e2ff51f..ecd314d 100644 --- a/src/celeste/modalities/text/providers/xai/models.py +++ b/src/celeste/modalities/text/providers/xai/models.py @@ -24,6 +24,9 @@ parameter_constraints={ Parameter.TEMPERATURE: Range(min=0.0, max=2.0), Parameter.MAX_TOKENS: Range(min=1, max=131072), + TextParameter.THINKING_BUDGET: Choice( + options=["none", "low", "medium", "high"] + ), TextParameter.TOOLS: ToolSupport(tools=[WebSearch, XSearch, CodeExecution]), TextParameter.TOOL_CHOICE: ToolChoiceSupport(), TextParameter.OUTPUT_SCHEMA: Schema(),