feat(models): add Claude Fable 5.1 across Anthropic, Bedrock, Vertex AI, and Azure AI - #39148
Conversation
…AI, and Azure AI Adds claude-fable-5-1 cost map entries on the Anthropic API, Bedrock converse (base, global, and us/eu geo inference profiles at the 10% regional premium), Vertex AI, and Azure AI. Specs match Fable 5 (1M context, 128K output, $10/$50 per MTok, adaptive thinking always on, xhigh and max effort), except cache reads land at $0.25 per MTok, a quarter of Fable 5's price and 0.025x base input instead of the usual 0.1x. Registers anthropic.claude-fable-5-1 in BEDROCK_CONVERSE_MODELS, lists the model in the setup wizard, and extends the reasoning effort e2e grid. The partner cells carry fail_reason markers until access on the CI accounts is confirmed. Partner entries deliberately carry no deprecation_date: Anthropic publishes retirement no sooner than 2027-09-01 for the first-party model, and the Foundry and Vertex dates are not published yet. Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Access is confirmed on the Anthropic account, and all 11 cells pass live, so the xfail marker would only hide real regressions. Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
|
PR #39148 (BerriAI/litellm, author devin-ai-integration[bot]) has no |
Greptile SummaryAdds Claude Fable 5.1 metadata, pricing, reasoning support, and forced-tool-choice handling across Anthropic, Bedrock, Vertex AI, and Azure AI
Confidence Score: 5/5The PR appears safe to merge No blocking failure remains
|
| Filename | Overview |
|---|---|
| litellm/llms/anthropic/common_utils.py | Adds metadata-driven forced-tool-use detection and automatic downgrade behavior |
| litellm/llms/anthropic/chat/transformation.py | Applies the forced-tool-choice policy while mapping Anthropic chat parameters |
| litellm/llms/bedrock/chat/converse_transformation.py | Applies the same model capability policy to Bedrock Converse tool-choice mapping |
| model_prices_and_context_window.json | Registers Claude Fable 5.1 variants with pricing, limits, and capability metadata |
| tests/llm_translation/reasoning_effort_grid/grid_spec.py | Adds partner reasoning-effort grid entries using the established unavailable-provider xfail convention |
| tests/test_litellm/llms/anthropic/chat/test_anthropic_chat_transformation.py | Covers Anthropic forced-tool-choice rejection and downgrade behavior |
| tests/test_litellm/llms/bedrock/chat/test_converse_transformation.py | Covers equivalent forced-tool-choice handling for Bedrock Converse |
Reviews (5): Last reviewed commit: "merge: resolve conflict with litellm_int..." | Re-trigger Greptile
… map Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
…le 5.1 cells Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…s_forced_tool_use Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
|
bugbot run |
…l_use Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Covers what changes for a gateway rather than restating Anthropic's benchmarks: cache reads at $0.25/MTok (0.025x base input, where every other Claude model sits at 0.1x), forced tool use now returning a 400, and thinking blocks being bound to the model that produced them, which decides how fallback chains should be ordered. Anthropic is live now; the Bedrock, Vertex AI, and Azure AI configs land later today. Model support is added in BerriAI/litellm#39148. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
… converse Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Covers what changes for a gateway rather than restating Anthropic's benchmarks: cache reads at $0.25/MTok (0.025x base input, where every other Claude model sits at 0.1x), forced tool use now returning a 400, and thinking blocks being bound to the model that produced them, which decides how fallback chains should be ordered. Anthropic is live now; the Bedrock, Vertex AI, and Azure AI configs land later today. Model support is added in BerriAI/litellm#39148. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
bugbot run |
Covers what changes for a gateway rather than restating Anthropic's benchmarks: cache reads at $0.25/MTok (0.025x base input, where every other Claude model sits at 0.1x), forced tool use now returning a 400, and thinking blocks being bound to the model that produced them, which decides how fallback chains should be ordered. Anthropic is live now; the Bedrock, Vertex AI, and Azure AI configs land later today. Model support is added in BerriAI/litellm#39148. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit d816b75. Configure here.
Covers what changes for a gateway rather than restating Anthropic's benchmarks: cache reads at $0.25/MTok (0.025x base input, where every other Claude model sits at 0.1x), forced tool use now returning a 400, and thinking blocks being bound to the model that produced them, which decides how fallback chains should be ordered. Anthropic is live now; the Bedrock, Vertex AI, and Azure AI configs land later today. Model support is added in BerriAI/litellm#39148. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ansformation tests Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
|
bugbot run |
Covers what changes for a gateway rather than restating Anthropic's benchmarks: cache reads at $0.25/MTok (0.025x base input, where every other Claude model sits at 0.1x), forced tool use now returning a 400, and thinking blocks being bound to the model that produced them, which decides how fallback chains should be ordered. Anthropic is live now; the Bedrock, Vertex AI, and Azure AI configs land later today. Model support is added in BerriAI/litellm#39148. Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Want reviews to match your repository better? Bugbot Learning can learn team-specific rules from PR activity. A team admin can enable Learning in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit d6005a1. Configure here.
| optional_params["tool_choice"] = _tool_choice | ||
| optional_params["tool_choice"] = AnthropicConfig._apply_forced_tool_choice( | ||
| model=model, tool_choice=_tool_choice, drop_params=drop_params | ||
| ) |
There was a problem hiding this comment.
Structured output still forces tool use
Medium Severity
The new forced-tool gate only wraps caller tool_choice. Tool-based response_format still writes {type: "tool"} without that check. Azure and Vertex claude-fable-5-1 entries also omit supports_native_structured_output (present on the Anthropic and Bedrock rows), and Vertex/Invoke stub the model name for response_format, so structured-output calls on those routes still take the forced-tool path and 400.
Additional Locations (2)
Reviewed by Cursor Bugbot for commit d6005a1. Configure here.


TLDR
Problem this solves:
claude-fable-5-1is missing from the model registryreasoning_effortfail with a 400tool_choicesurfaces an opaque provider 400How it solves it:
supports_forced_tool_use: falseand gates forcedtool_choiceon it in the Anthropic and Bedrock converse transformations: clean 400, or downgrade toautounder drop_paramsUser Flow
Before: a developer pointing their app at Claude Fable 5.1 through the gateway cannot use the model's effort control, and every call they do get through is billed at zero
model: anthropic/claude-fable-5-1and restart the proxy"reasoning_effort": "xhigh"anthropic does not support parameters: ['reasoning_effort']reasoning_effortand retry, get a 200, and seex-litellm-response-cost-original: 0.0"tool_choice": "required"and get an opaque provider 400 readingtool_choice: type "tool" and "any" are not supported for this modelAfter: the same requests go through with effort control, and spend is real
"reasoning_effort": "xhigh"and get a 200 with the assistant's replyx-litellm-response-cost: 0.00066for 16 prompt and 10 completion tokens"tool_choice": "required"and get a clear 400 telling them the model rejects forced tool use and how to work around it, or a 200 withtool_choicedowngraded toautowhen their deployment setsdrop_params: trueRelevant issues
Linear ticket
Pre-Submission checklist
uv run pytest tests/test_litellm/<your_test_file>.py -v. Leave the suites (make test-unit-*,make test-unit) to CI: it finishes in ~15 minutes where a laptop takes an hour or more@greptileaito re-request a review after pushing changes)Delays in PR merge?
If you're seeing a delay in your PR being merged, ping the LiteLLM Team on Slack (#pr-review).
Screenshots / Proof of Fix
Shared setup, same on both sides. Each side is its own worktree booted with two uvicorn workers, the multi-pod shape customers run, on its own port: base f2a4172 on 4773 and head a92ca6c on 4771.
LITELLM_LOCAL_MODEL_COST_MAP=Trueso the registry under test is the checkout's, not the published map. Config:Real Anthropic calls on both sides, no mocks
Before (f2a4172, port 4773)
/v1/chat/completions with reasoning_effort xhigh
/v1/messages with thinking effort xhigh
/v1/responses with reasoning effort xhigh
cost tracking on a plain /v1/chat/completions call
Hi there, friend!for 16 prompt and 10 completion tokens, billed at nothing/v1/chat/completions with tool_choice required
After (a92ca6c, port 4771)
/v1/chat/completions with reasoning_effort xhigh
/v1/messages with thinking effort xhigh
/v1/responses with reasoning effort xhigh
cost tracking on a plain /v1/chat/completions call
/v1/chat/completions with tool_choice required
fable-5-1-dropalias, whose deployment setsdrop_params: truetool_choicedowngraded toauto; the model still chose to call the toolLive proof ran at a92ca6c. The two commits after it extend the same gate to Bedrock converse and add the new flag to the schema allowlist in
tests/test_litellm/test_utils.py; the Bedrock leg is covered by unit tests only since there is no AWS account access hereObservations from the run:
Type
🆕 New Feature
Caveats (if any)
Low
The forced-tool-use gate covers the direct Anthropic route and Bedrock converse
tool_choiceosv-scanfails on a vulnerability this PR does not touchbrowserslist4.28.2 inui/litellm-dashboard/package-lock.json, wanting 4.28.7. That lockfile is byte-identical onlitellm_internal_staging(git show origin/litellm_internal_staging:ui/litellm-dashboard/package-lock.jsonhas the same 4.28.2 line) and this PR touches noui/file, so the finding predates it and belongs in a lockfile bump PROnly Anthropic, Bedrock, Vertex AI, and Azure AI entries here
Partner entries carry no
deprecation_dateBedrock, Vertex, and Foundry grid cells stay xfail
Final Attestation
Note
Medium Risk
Changes request shaping for tool_choice on models flagged
supports_forced_tool_use: false; mis-flagged models could silently downgrade forced tools to auto, though behavior is gated on explicit cost-map entries.Overview
Adds Claude Fable 5.1 to the model registry (Anthropic, Bedrock regional variants, Vertex AI, Azure AI), Bedrock converse allowlist, setup wizard, and pricing—including cache-read at 0.025× input (not Fable 5’s 0.1×).
New cost-map flag
supports_forced_tool_use: falseon Fable 5.1 drives shared handling in Anthropic and Bedrock converse transforms: forcedtool_choice(required/ named tool →any/tool) raises a clearUnsupportedParamsErrorwithoutdrop_params, or downgrades toauto(keepingdisable_parallel_tool_usewhen set) with a warning when dropping is enabled—because always-on thinking rejects forced tool calls.Anthropic chat mapping now runs mapped
tool_choicethrough_apply_forced_tool_choice; schema and tests cover the new capability and Fable 5.1 behavior.Reviewed by Cursor Bugbot for commit d6005a1. Bugbot is set up for automated code reviews on this repo. Configure here.
Link to Devin session: https://app.devin.ai/sessions/91161c53a340462b8b5ca0d9ad54359b
Open in Devin Desktop: https://app.devin.ai/desktop/session/91161c53a340462b8b5ca0d9ad54359b?variant=devin
Requested by: @mateo-berri