10 分钟上手 Claude Fable 5:让 AI 帮你写 Lean 数学证明

上周末 AI 圈炸了一件事:OpenAI 用未发布的 Astra 一口气证明 10 道前沿数学难题,结果 24 小时内就被 Anthropic 研究员 Levent Alpöge 用公开的 Claude Fable 5 复现了 5 道。更早之前,同样是 Fable 5,直接推翻了躺了 87 年的 Jacobian 猜想,给出三维显式反例,陶哲轩等学者确认无误。

这不是新闻速递,是给你看的实操信号:一个普通 API 就能调用的模型,已经能写通过 Lean 内核验证的数学证明。这篇带你 10 分钟跑通 Fable 5 的 API,并演示怎么让它干「数学证明形式化」这种硬活。

Fable 5 是什么,凭什么值得上手

Fable 5 是 Anthropic 2026 年 6 月发布的 Mythos 级旗舰模型(同架构的 Mythos 5 只对受限客户开放,Fable 5 走标准 API,人人都能调)。它的两个硬指标:

  • 数学/形式化验证:SWE-Bench Pro 80.3%(Opus 4.8 只有 69.2%);Lean 数学证明能力独一档——Kevin Buzzard 的博士生用 Fable 两周写了 25 万行 Lean 代码,完成模提升定理的形式化
  • 长链自主任务:任务链条越长、步骤越多,性能优势越明显,官方定位就是 agentic-first

定价每百万输入 token 10 美元、输出 50 美元(比 Mythos Preview 便宜 60%)。一句话:数学、编码、长任务,现在的最强公开选择。

第一步:环境准备

需要 Anthropic API key(console.anthropic.com 申请),Python 3.10+:

pip install -U anthropic
export ANTHROPIC_API_KEY="sk-ant-..."

第二步:最小调用(Python)

import anthropic

client = anthropic.Anthropic()  # 自动读取 ANTHROPIC_API_KEY

message = client.messages.create(
    model="claude-fable-5",      # 模型 ID,写错会 404
    max_tokens=4096,             # 务必显式设置!不设它可能一口气写 3 万 token
    messages=[{
        "role": "user",
        "content": "证明:对于任意正整数 n,n² + n + 41 在 n<40 时都是素数吗?请给出严格证明或反例。"
    }]
)
print(message.content[0].text)
print(f"Usage: {message.usage.input_tokens} in / {message.usage.output_tokens} out")

三个注意点:model 必须是精确的 claude-fable-5max_tokens 是响应预算上限;每次调用记 message.usage,这是抓成本异常的唯一手段。

第三步:让 Fable 5 写 Lean 证明(核心玩法)

数学证明的硬核用法是「自动形式化」:把自然语言定理转成 Lean 4 代码,丢给 Lean 内核机械验证。这也是 Fable 复现 Astra 成果时干的事——证明过不过,编译器说了算,没有讨价还价的空间。

import anthropic

client = anthropic.Anthropic()

# 让模型输出 Lean 4 + Mathlib 风格的形式化证明
response = client.messages.create(
    model="claude-fable-5",
    max_tokens=8192,
    system=[{
        "type": "text",
        "text": (
            "你是一个 Lean 4 形式化专家。用户的每条数学命题,你都要:\n"
            "1. 用 Lean 4 语法写出 theorem 声明(依赖 Mathlib)\n"
            "2. 用 tactic 给出可通过内核检查的证明\n"
            "3. 如果命题为假,给出反例并写成 Lean 代码\n"
            "4. 输出必须是完整可编译的 .lean 文件,不要解释性废话"
        ),
        "cache_control": {"type": "ephemeral"}  # 缓存 system prompt,省 ~90% 输入成本
    }],
    messages=[{
        "role": "user",
        "content": "定理:任意大于 1 的自然数都存在一个素因子。"
    }]
)
print(response.content[0].text)

拿到输出后,本地验证:

# 装 Lean 4 + Mathlib(首次编译较慢)
curl -fsSL https://raw.githubusercontent.com/leanprover/elan/master/elan-init.sh | bash
elan default stable
lake new demo math  # 带 Mathlib 的项目模板
# 把模型输出的代码存到 Demo/Test.lean,然后:
lake build   # 编译通过 = 证明成立

关键心法:让「验证」回归机器,让「思路」交给模型。你负责把定理表述准确,Fable 5 负责生成证明,Lean 内核负责验收——三方各干各的,最后以 lake build 绿了为准。

第四步:长任务必须开流式

Fable 5 复杂任务经常跑 60 秒以上,非流式调用等于盯着黑屏干等:

with client.messages.stream(
    model="claude-fable-5",
    max_tokens=8192,
    messages=[{"role": "user", "content": "把下面这个 200 行的 Python 模块重构为 4 个可测试单元,返回完整 diff:..."}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)
    final = stream.get_final_message()
    print(f"\nUsage: {final.usage.input_tokens} in / {final.usage.output_tokens} out")

踩坑清单(新手必看)

  • 404 on claude-fable-5:要么 API tier 还没开放(模型按区域分批上线,等 24-48h),要么 SDK 太老——先 pip install -U anthropic
  • 响应被截断:看到 stop_reason: "max_tokens" 就是输出被预算砍了。加 max_tokens,或把截断输出作为 assistant 消息回传,补一句「continue」接着生成
  • 安全路由:Fable 5 对网络安全/生物方向的内容会自动路由到 Opus 4.8 并注明,不是 bug
  • 数据留存:Mythos 级模型流量强制保留 30 天(仅安全监控,不用于训练)。介意数据隐私的企业要评估这一点

实践建议

  • 从简单引理开始:别一上来就丢开放难题。先让它形式化 Mathlib 里已有的小定理,跑通「模型生成 → lake build 验证」闭环,再逐步加难度
  • 拆解任务:陶哲轩用 Claude Code 做形式化时吃了教训——一次给大任务容易跑飞,拆成 lemma 1/2/3 逐步验证,成功率显著更高
  • prompt caching 是省钱刚需:长 system prompt 或工具定义重复传,用 cache_control 缓存块,输入成本降到约 10%
  • 数学反例玩法:证明写不出来时,让 Fable 5 先找反例——Jacobian 猜想就是被反例推翻的,这是它最擅长的事之一

资源链接

滚动至顶部