Skip to content

feat(llm, anthropic): Add claude-fable-5-1 model support - #1184

Open
JeanMertz wants to merge 1 commit into
mainfrom
fable-51
Open

JeanMertz wants to merge 1 commit into
mainfrom
fable-51

Conversation

@JeanMertz

Copy link
Copy Markdown
Collaborator

Users can now select Anthropic's claude-fable-5-1, the successor to Claude Fable 5 for demanding reasoning and long-horizon agentic work. It carries a 1M token context window, 128k max output tokens, always-on adaptive thinking with the full effort ladder up to max, and a June 2026 knowledge cutoff. This repository's fable alias resolves to it.

Like Fable 5, the model rejects both thinking: disabled and a forced tool_choice with a 400 error. Marking it always-on in the override table routes it through the existing soft-force path, so jp query -u run_tests downgrades to tool_choice: auto plus a system prompt nudge backed by escalating-nudge retries, and JP never sends a disabled thinking config the API would refuse.

The model also binds each thinking block to the conversation prefix that produced it, so a request that rebuilds the system prompt between turns is rejected once Anthropic enforces the check for an account. JP's thinking-rejection recovery catches that error and replays the reasoning as <think> text, at the cost of one extra round trip. Opting out of the failure with prefix_mismatch_behavior: "drop_block", along with per-message effort, turn-scoped system messages, and thinking.display: "updates", needs request fields async-anthropic does not yet model.

Users can now select Anthropic's `claude-fable-5-1`, the successor to
Claude Fable 5 for demanding reasoning and long-horizon agentic work. It
carries a 1M token context window, 128k max output tokens, always-on
adaptive thinking with the full effort ladder up to `max`, and a June
2026 knowledge cutoff. This repository's `fable` alias resolves to it.

Like Fable 5, the model rejects both `thinking: disabled` and a forced
`tool_choice` with a 400 error. Marking it always-on in the override
table routes it through the existing soft-force path, so `jp query -u
run_tests` downgrades to `tool_choice: auto` plus a system prompt nudge
backed by escalating-nudge retries, and JP never sends a disabled
thinking config the API would refuse.

The model also binds each thinking block to the conversation prefix that
produced it, so a request that rebuilds the system prompt between turns
is rejected once Anthropic enforces the check for an account. JP's
thinking-rejection recovery catches that error and replays the reasoning
as `<think>` text, at the cost of one extra round trip. Opting out of
the failure with `prefix_mismatch_behavior: "drop_block"`, along with
per-message effort, turn-scoped system messages, and `thinking.display:
"updates"`, needs request fields `async-anthropic` does not yet model.

Signed-off-by: Jean Mertz <git@jeanmertz.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant