发布日期:2026-09-02 | 话题:Claude Fable 5.1 / API 迁移 / Agentic 编码

Claude Fable 5.1(model ID:claude-fable-5-1)于 2026 年 9 月 1 日正式发布,是 Fable 5 的直接继任者,定位"长时 Agentic 编码与知识工作",与 Fable 5 保持相同基础定价(输入 10 美元/MTok、输出 50 美元/MTok),但 Cache 读取成本降至 0.025 倍基础价(旧版为 0.1 倍,降幅 75%),并新增三项 breaking changes 和五项新功能,能力提升集中在多文件 Agentic 编码、多步研究、视觉理解和计算机控制六个方向;Claude Mythos 5.1 提供相同能力,仅向 Project Glasswing 邀请用户开放;模型知识截止时间升至 2026 年 6 月,比 Fable 5 更新。


一句话定位:Fable 5.1 是什么,与 Fable 5 有什么不同

Fable 5.1 是在 Fable 5 基础上做后训练优化的升级版,不改变基础架构,但在 Agentic 编码、多步研究和文档处理上有显著提升。对已有代码库来说,大多数情况下只需要改一行 model 字符串——但三个 breaking changes 如果不处理,会在生产环境静默损坏或直接报 400。

模型 ID 对比:

模型

Claude API ID

知识截止

Cache 读取价格

Claude Fable 5(旧)

claude-fable-5

早于 Jun 2026

$1.00/MTok

Claude Fable 5.1(新)

claude-fable-5-1

Jun 2026

$0.25/MTok

价格方面,两者基础输入/输出价格完全相同,Cache 读取是最大变化。


Breaking Change 1:强制工具调用不再支持

Fable 5.1 不支持 tool_choice 设置为 {"type": "any"}{"type": "tool", "name": "..."} 的请求。发送此类请求会直接返回 400 错误:

tool_choice: type "tool" and "any" are not supported for this model.

为什么:Fable 5.1 的思考(thinking)始终开启,强制工具调用会绕过思考过程,导致模型把推理过程写入工具参数而非 thinking block,显著降低参数质量。

如何修复

# 旧写法(会报 400)
tool_choice={"type": "tool", "name": "search_web"}

# 新写法 1:改用自动模式 + 严格工具约束
tool_choice={"type": "auto"}
# 在工具定义中加 strict=True 保证 JSON 格式
tools=[{"name": "search_web", ..., "strict": True}]

# 新写法 2:用结构化输出代替强制工具调用
# 移到 output_config.format 中

# 新写法 3:在 system prompt 中明确说明何时调用工具
# "当用户询问最新信息时,使用 search_web 工具"
# Fable 5.1 对明确的工具调用指令响应非常可靠

Breaking Change 2:Thinking Blocks 单向兼容

Fable 5.1 产生的 thinking blocks 只能被 Fable 5.1 读取,早期模型(包括 Fable 5、Opus 5 等)无法读取它们。反过来,Fable 5.1 可以读取早期模型的 thinking blocks。

影响场景:

  • 路由器或 fallback 逻辑在 Fable 5.1 和其他模型之间切换

  • Agent 框架在多个模型间传递对话历史

  • 使用 server-side-fallback 时,fallback 目标模型会收到被丢弃的 thinking blocks

当 API 收到目标模型无法读取的 thinking block 时,会静默丢弃该 block(不计费、不报错)。如果想获得明确通知,在请求中加入 beta header:

# 开启 thinking binding 控制,丢弃时会在 input_transformations 中报告
client.beta.messages.create(
    model="claude-fable-5-1",
    betas=["thinking-binding-controls-2026-08-01"],
    thinking={"type": "adaptive", "block_binding": {
        "prefix_mismatch_behavior": "drop_block"
    }},
    ...
)
# 检查 response.input_transformations 获取丢弃详情

Breaking Change 3:编辑历史消息使 Thinking Blocks 失效

如果你修改了已有 thinking block 之前的任何内容——系统提示、工具列表、或更早的对话消息——Fable 5.1 会认为 thinking block 已经失效,请求会被拒绝或静默丢弃该 block。

常见触发场景(这些在 Fable 5 时代都没问题):

# 危险:每轮插入时间戳或状态信息后下轮删除
messages.append({"role": "system", "content": f"当前时间:{datetime.now()}"})
# 下一轮删除这条 → thinking blocks 失效

# 危险:对话途中更新工具列表
tools = get_current_tools()  # 动态工具列表变化

# 危险:对话途中修改 system prompt
system = f"当前用户:{user.name}"  # 每次不同

正确做法:把对话历史视为 append-only,用这些方式处理动态内容:

# 安全:用 mid-conversation system message 传递运行时信息
# (不修改历史,不影响 thinking blocks)
messages.append({
    "role": "system",
    "content": "用户上传了新文件,请优先处理。"
})

# 安全:用 turn-scoped system message(新功能,见下文)
# 自动在下一个 user message 到来时清除,无需手动管理

# 安全:用服务端 compaction 或 context editing 压缩历史
# 不触发 thinking block 失效检查

新功能 1:对话中途改 effort 等级(Beta)

Fable 5.1 支持在同一对话中改变 effort 等级,且不会使 prompt cache 失效。这对 Agentic 长会话特别有用:困难步骤用 high/xhigh,简单步骤用 low 节省成本。

response = client.beta.messages.create(
    model="claude-fable-5-1",
    max_tokens=4096,
    output_config={"effort": "high"},
    messages=[
        {"role": "user", "content": "制定从 SQLite 迁移到 PostgreSQL 的详细方案"},
        {"role": "assistant", "content": "...(详细方案)..."},
        # 插入 effort-only 系统消息,下一轮生效
        {"role": "system", "content": [], "output_config": {"effort": "low"}},
        {"role": "user", "content": "用一句话总结要点"},
    ],
    betas=["mid-conversation-output-config-2026-07-01"],
)

新功能 2:Turn-Scoped 系统消息(Beta)

之前为 Agent 循环注入"这一轮"的提示,开发者通常的做法是:插入一条消息 → 下一轮删除它 → 但删除操作会使 thinking blocks 失效。

Fable 5.1 引入 clear_at 字段,消息自动在下一个 user 消息到来时失效,无需手动删除,历史不变,thinking blocks 和 cache 都不受影响:

{
  "role": "system",
  "clear_at": "next_user_message",
  "content": "新邮件已送达收件箱,运行更多代码前先检查一下。"
}

Beta header:mid-conversation-system-clear-at-2026-08-21


新功能 3:工具调用间进度更新(Beta)

Fable 5.1 在工具调用之间会写短暂的进度更新(每次 tool call 前的 thinking block)。此前 thinking.display 默认是 "omitted",导致长 Agent 会话对用户来说看起来完全静默。

新增 display: "updates" 选项:reasoning 保持隐藏,但进度更新文本以 thinking block 形式返回,可以展示给用户:

response = client.beta.messages.create(
    model="claude-fable-5-1",
    thinking={"type": "adaptive", "display": "updates"},
    betas=["thinking-display-updates-2026-08-18"],
    ...
)

for block in response.content:
    if block.type == "thinking" and block.thinking:
        # 这是进度更新,可以展示给用户
        print(f"[进度] {block.thinking}")
    elif block.type == "text":
        print(block.text)

新功能 4:Cache 读取降价 75%

Fable 5.1 的 Cache 读取价格为基础输入价格的 0.025 倍(约 0.25 美元/MTok),而其他 Claude 模型是 0.1 倍(约 1 美元/MTok)。

对于长时 Agentic 会话——每轮都会重发整个对话历史,其中大部分命中 prompt cache——这是最直接的成本节省。会话越长、cache 命中率越高,节省越明显。

价格对比:

类型

Fable 5

Fable 5.1

基础输入

$10/MTok

$10/MTok

基础输出

$50/MTok

$50/MTok

5m Cache 写入

$12.50/MTok

$12.50/MTok

1h Cache 写入

$20/MTok

$20/MTok

Cache 读取

$1.00/MTok

$0.25/MTok


新功能 5:内容溯源(Content Provenance)

Fable 5.1 生成的所有文本都携带 Anthropic 的统计文本水印,不添加任何额外 token 或隐藏字符,不包含用户或组织信息,对输出质量无影响。通过代码执行工具生成的图片和视频文件,可通过 Files API 取回时携带 C2PA 格式的 Content Credentials。


能力提升:6 个重点方向

与 Fable 5 相比,提升最显著、在高 effort 下差距最大的六个方向:

方向

说明

长会话 Agentic 编码

多文件功能开发、大型重构与迁移、跨会话代码审查(会话可持续数小时)

文档/表格/幻灯片处理

从第一个问题到完整文档、含公式表格、从空白页生成幻灯片全流程

多步研究

多步骤网络研究,能跟进搜索结果进一步深挖

视觉理解

读取 PDF 中的密集图表、财报和嵌套表格,结合放大工具效果更好

长上下文推理

在完整 1M token 上下文窗口内连接和关联跨文档细节

计算机控制

操控浏览器和桌面应用更可靠,从失败步骤中恢复能力提升

多语言性能与 Fable 5 持平。


行为变化:7 处需要调整 Prompt

从 Fable 5 迁移时,以下行为变化可能影响现有 Agent 效果:

1. 并行工具调用更不稳定:Fable 5.1 可能每轮只发一个工具调用,而 Fable 5 会批量发多个。解决方式:在 prompt 中明确说明"同时取多个数据时请并行发出工具调用"。

2. 进度更新变少:在高 effort 下,工具调用之间的用户可见文本减少。开启 display: "updates" 并在 prompt 里要求"提供开场说明和周期性进度汇报"。

3. Low effort 下更多从记忆回答low effort 时模型更少触发检索工具。对需要最新信息的步骤,改用 mid-conversation effort 提升或在 prompt 加验证提示。

4. 文字更紧凑:某些场景散文更密集、句子更长。需要宽松段落的场景,在 prompt 中明确要求格式。

5. 聊天场景减少格式标记:加粗、标题、列表的使用比 Fable 5 少。如果需要格式化输出,明确在 prompt 中指定。

6. 摘要中引用未标注:总结文档时更可能直接复现原文而不加引号标注。需要区分的场景,在 prompt 中说明"直接引用时请加引号标注"。

7. 小改动触发全文重写:编辑文本文件时更倾向于重写整个文件而非做局部修改。用于代码编辑的场景,明确说明"只修改需要改动的部分"可缓解。


迁移清单

从 Fable 5 迁移到 Fable 5.1 的五步检查:

# 第 1 步:更新 model ID
model = "claude-fable-5-1"  # 原来是 "claude-fable-5"

# 第 2 步:移除所有强制工具调用
# tool_choice={"type": "tool"} 或 {"type": "any"} → 改为 {"type": "auto"}

# 第 3 步:检查对话历史是否 append-only
# 运行一次带 thinking-binding-controls-2026-08-01 的测试请求
# 检查 response.input_transformations 有无 prefix_binding_mismatch

# 第 4 步:考虑用 turn-scoped 系统消息替代"插入+删除"模式

# 第 5 步:重跑 evals,重点关注工具调用并行行为和 effort 配置

企业 Agent 的基础设施建议

Fable 5.1 的长会话 Agentic 能力提升,使得企业 Agent 架构的模型编排层变得更重要。一个典型模式是:用旗舰模型处理需要深度推理的核心步骤,用更轻量、高性价比的模型处理分类、摘要、路由等辅助任务

在多模型并行调用的场景下,维护多套 SDK 和鉴权体系的成本相当高。七牛云 MCP 服务(developer.qiniu.com/aitokenapi/12984/mcp-user-manual)提供标准化的多模型能力编排接口,支持无需本地部署直接接入 Agent 工作流,适合需要在不同任务步骤中灵活切换模型的企业团队。


常见问题

直接把 model 改成 claude-fable-5-1 会怎样? 大多数情况能正常运行。如果你没有用 tool_choice: any/tool,也没有在对话中修改历史消息,升级是无感的。最大的变化是 Cache 读取费用降了 75%,以及 thinking blocks 的兼容性行为。

Mythos 5.1 和 Fable 5.1 有什么区别? 能力和定价完全相同,区别只是可用性:Fable 5.1 对所有用户开放,Mythos 5.1 仅向 Project Glasswing 邀请用户开放(model ID 为 claude-mythos-5-1)。

Fable 5.1 什么时候退役? Anthropic 承诺不早于 2027 年 9 月 1 日退役。

thinking.display 的三个选项分别适合什么场景?

  • "omitted"(默认):thinking 在后台进行,用户看不到,适合不需要展示推理过程的场景

  • "summarized":返回可读的推理摘要,适合需要向用户展示"Claude 为什么这么做"的场景

  • "updates"(新功能,beta):只返回工具调用间的进度更新,推理本身仍隐藏,适合长 Agent 任务的进度显示


延伸阅读