fix(anthropic,bedrock): correct effort error message and dedupe effort_map

- Remove 'none' from the Bedrock _validate_anthropic_adaptive_effort error
  message; it was listed as a valid value but rejected by the membership
  check, leaving users in a feedback loop if they tried 'none'.
- Hoist the duplicated reasoning_effort -> output_config.effort mapping
  out of AnthropicConfig.map_openai_params and
  AmazonConverseConfig._handle_reasoning_effort_parameter into a single
  AnthropicConfig.REASONING_EFFORT_TO_OUTPUT_CONFIG_EFFORT class constant
  so the two routes cannot drift.
This commit is contained in:
Cursor Agent
2026-05-03 07:46:38 +00:00
parent 213c2ff6d7
commit c18f26d538
2 changed files with 21 additions and 19 deletions
+15 -9
View File
@@ -108,6 +108,18 @@ class AnthropicConfig(AnthropicModelInfo, BaseConfig):
metadata: Optional[dict] = None
system: Optional[str] = None
# Shared mapping from OpenAI ``reasoning_effort`` values to Anthropic
# ``output_config.effort`` tier values. Used by both the direct Anthropic
# path and the Bedrock Converse path so the two routes cannot drift.
REASONING_EFFORT_TO_OUTPUT_CONFIG_EFFORT: Dict[str, str] = {
"low": "low",
"minimal": "low",
"medium": "medium",
"high": "high",
"xhigh": "xhigh",
"max": "max",
}
def __init__(
self,
max_tokens: Optional[int] = None,
@@ -1121,15 +1133,9 @@ class AnthropicConfig(AnthropicModelInfo, BaseConfig):
if AnthropicConfig._is_claude_4_6_model(
model
) or AnthropicConfig._is_claude_4_7_model(model):
effort_map = {
"low": "low",
"minimal": "low",
"medium": "medium",
"high": "high",
"xhigh": "xhigh",
"max": "max",
}
mapped_effort = effort_map.get(value, value)
mapped_effort = AnthropicConfig.REASONING_EFFORT_TO_OUTPUT_CONFIG_EFFORT.get(
value, value
)
optional_params["output_config"] = {"effort": mapped_effort}
elif param == "web_search_options" and isinstance(value, dict):
hosted_web_search_tool = self.map_web_search_tool(
@@ -485,15 +485,11 @@ class AmazonConverseConfig(BaseConfig):
if AnthropicConfig._is_claude_4_6_model(
model
) or AnthropicConfig._is_claude_4_7_model(model):
effort_map = {
"low": "low",
"minimal": "low",
"medium": "medium",
"high": "high",
"xhigh": "xhigh",
"max": "max",
}
mapped_effort = effort_map.get(reasoning_effort, reasoning_effort)
mapped_effort = (
AnthropicConfig.REASONING_EFFORT_TO_OUTPUT_CONFIG_EFFORT.get(
reasoning_effort, reasoning_effort
)
)
self._validate_anthropic_adaptive_effort(
model=model, effort=mapped_effort
)
@@ -534,7 +530,7 @@ class AmazonConverseConfig(BaseConfig):
message=(
f"Invalid reasoning_effort/output_config.effort value: "
f"{effort!r}. Must be one of: 'low', 'medium', 'high', "
f"'xhigh', 'max', or 'none'."
f"'xhigh', or 'max'."
),
model=model,
llm_provider="bedrock_converse",