← 全部文章
Guide

如何按任务和预算路由 Claude Fable 5、Opus 4.8 和 Sonnet 4.6

A cream-background editorial illustration of three Claude model lanes labeled by abstract icons: a small fast lane, a ba

Anthropic 给前沿自主能力明码标价了:在 Claude API 上,Claude Fable 5 的标价是每百万输入 token 10 美元、每百万输出 token 50 美元,而 Sonnet 4.6 是 $3/$15,Opus 4.8 是 $5/$25FableSonnetOpus)。这个价差,就是完整的产品决策。

如果你把每个编程提示词都发给 Fable,你不是在“用前沿模型”。你是在跳过架构设计。

截至 2026 年 6 月 16 日,还有一个可用性上的变数:Anthropic 的 Fable 页面称 Fable 5 目前不可用,而 Anthropic 表示,在美国政府一项覆盖 Fable 5 和 Mythos 5 的指令之后,它已于 6 月 12 日暂停访问权限(Anthropic statement)。这不会让路由层变得没那么有用。恰恰相反,它让路由层更紧迫。你的应用本来就应该知道如何从 Fable 降级到 Opus 或 Sonnet,而不是半夜把工程师叫醒。

这篇指南要搭的就是这一层:默认用 Sonnet,高风险生产工作用 Opus,只有在长时间运行的智能体任务里,正确结果的价值能压过 token 账单时,才用 Fable。

封面风格的价格与能力对比图,三根竖条分别代表 Sonnet 4.6、Opus 4.8 和 Fable 5;y 轴

路由规则:Fable 是专家,不是默认选项

先看一张直白的表。

ModelAPI model IDInput / output priceUse it for
Claude Sonnet 4.6claude-sonnet-4-6每 100 万 token $3 / $15日常编程、审查、支持、抽取、大多数智能体
Claude Opus 4.8claude-opus-4-8每 100 万 token $5 / $25生产级代码、复杂审查、需要判断力的智能体步骤
Claude Fable 5claude-fable-5每 100 万 token $10 / $50长时间运行、有真实收益空间的高价值智能体工作

Anthropic 自己的定位也正好对应这种划分。Sonnet 4.6 被包装成适合编程、智能体和专业工作流的全能日常模型,目前在 API beta 中提供 100 万 token 上下文窗口(Anthropic Sonnet)。Opus 4.8 的定位是严肃编程、智能体工作流和高风险企业任务(Anthropic Opus)。Fable 5 则被描述为 Mythos 级别模型,面向雄心更大、运行时间更长的项目,以及能够跨阶段规划、委派任务并检查自身工作的智能体(Anthropic Fable)。

这样你就能得到一条清晰策略:

  1. 默认用 Sonnet。 大多数提示词都不配用每百万输出 50 美元的模型。
  2. 失败代价很高时升级到 Opus。 比如 schema 迁移、安全敏感的 PR 审查、财务分析、多文件重构。
  3. 只有任务庞大、模糊且值得更高账单时才用 Fable。 多日智能体运行、代码库现代化、深度研究包,以及“把这个项目做到完成”的工作流。

社区争论主要集中在第三类。Anthropic 6 月 12 日暂停访问的 HN 讨论串,据被索引的 HN 摘要显示,有超过一千条评论,讨论很快分裂成安全、地缘政治,以及到底有没有人负担得起这种价格下的智能体用量(HN threadrecap reference)。Reddit 讨论更直接:开发者抱怨 Claude Code 会话太吃 token、订阅额度不够,以及每百万输出 50 美元是否会把 Fable 推成企业专属(ClaudeCode discussionChatGPT subreddit discussion)。

大多数讨论里缺的实用答案是:别争一个全局“最佳模型”。按预期价值路由。

Step 1: 用 OneHop 做即插即用的访问层

如果你想走最短路径,就把 OneHop 当成 provider 层,让应用代码保持 provider-neutral。OneHop 的 Fable 页面列出了 anthropic/claude-fable-5,把官方价格和 OneHop 价格放在一起,并表示新账号无需绑卡即可获得 10 美元免费额度(OneHop Fable 5)。当前页面列出的 Anthropic Messages 支持地址是 https://api.onehop.ai/anthropic;配合 Anthropic SDK 使用这个地址即可。

安装 SDK:

pip install anthropic
export ONEHOP_API_KEY="your_key_here"

最小调用:

from anthropic import Anthropic

client = Anthropic(
    api_key=os.environ["ONEHOP_API_KEY"],
    base_url="https://api.onehop.ai/anthropic",
)

message = client.messages.create(
    model="anthropic/claude-fable-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Plan a safe Rails 6 to Rails 8 migration."}],
)

print(message.content[0].text)

这就是集成点。你的路由层应该放在它上面,负责决定要发送哪个模型字符串。

OneHop 在这里的价值,是一种最好的无聊:一个账号、清晰的模型页面,以及改一下 base URL,而不是重写你的应用。如果 Fable 暂停或不可用,同一个路由器可以把高端任务指向 Opus,让产品继续活着。

如果你只是想拿到访问和额度,可以从这里开始:Claude Fable 5 on OneHop,然后领取 10 美元免费额度开始使用

Step 2: 搭一个预算感知路由器

下面是一个可以直接运行的紧凑 Python 路由器。它会估算请求成本,应用单次调用上限,在 Fable 不可用时回退,并保持 Sonnet 作为默认值。

import os
from dataclasses import dataclass
from anthropic import Anthropic, APIError, RateLimitError

PRICES = {
    "sonnet": {"model": "claude-sonnet-4-6", "in": 3.00, "out": 15.00},
    "opus": {"model": "claude-opus-4-8", "in": 5.00, "out": 25.00},
    "fable": {"model": "anthropic/claude-fable-5", "in": 10.00, "out": 50.00},
}

@dataclass
class Task:
    kind: str
    prompt: str
    max_output_tokens: int = 2000
    budget_usd: float = 0.25
    high_value: bool = False
    long_running: bool = False
    production_risk: bool = False

def rough_tokens(text: str) -> int:
    return max(1, len(text) // 4)

def estimate_cost_usd(model_key: str, input_tokens: int, output_tokens: int) -> float:
    price = PRICES[model_key]
    return (input_tokens / 1_000_000 * price["in"]) + (output_tokens / 1_000_000 * price["out"])

def choose_model(task: Task) -> str:
    if task.high_value and task.long_running:
        return "fable"
    if task.production_risk or task.kind in {"migration", "security_review", "architecture"}:
        return "opus"
    return "sonnet"

def route_with_budget(task: Task) -> list[str]:
    first = choose_model(task)
    fallbacks = {
        "fable": ["fable", "opus", "sonnet"],
        "opus": ["opus", "sonnet"],
        "sonnet": ["sonnet"],
    }[first]

    input_tokens = rough_tokens(task.prompt)
    return [
        key for key in fallbacks
        if estimate_cost_usd(key, input_tokens, task.max_output_tokens) <= task.budget_usd
    ] or ["sonnet"]

def run(task: Task) -> str:
    client = Anthropic(
        api_key=os.environ["ONEHOP_API_KEY"],
        base_url="https://api.onehop.ai/anthropic",
    )

    last_error = None
    for key in route_with_budget(task):
        try:
            response = client.messages.create(
                model=PRICES[key]["model"],
                max_tokens=task.max_output_tokens,
                messages=[{"role": "user", "content": task.prompt}],
            )
            return response.content[0].text
        except (APIError, RateLimitError) as exc:
            last_error = exc
            continue

    raise RuntimeError(f"All model routes failed: {last_error}")

if __name__ == "__main__":
    task = Task(
        kind="migration",
        prompt="Create a step-by-step plan to migrate a 200k-line Django app from 3.2 to 5.x.",
        max_output_tokens=3000,
        budget_usd=0.20,
        production_risk=True,
    )
    print(run(task))

重点不是 token 估算器。重点是策略边界。你的代码库里需要有一个地方,让产品明确说出:“这个任务允许花更多钱,因为结果很重要。”

架构流程草图:应用请求进入路由器,然后经过标注为任务类型、es 的策略检查

Step 3: 添加符合真实智能体行为的上限

智能体成本会突然飙升。一次聊天补全很好定价。一个编程智能体可能会查看文件、调用工具、重写、测试、重试、总结。有个 Reddit 讨论串声称一次 Fable 运行在一小时内烧掉了数百万 token;把它当成传闻就好,但模式是真实的:长周期智能体会通过循环放大 token 用量(Reddit)。

加三道上限:

  • 单次调用上限: 如果估算成本超过请求预算,就拒绝或降级。
  • 单个任务上限: 即使单次调用都合法,达到美元额度后也停止智能体。
  • 单个用户或 workspace 上限: 防止一个团队烧光共享账号。

生产环境里,把花费用数据库表记录下来,按 workspace_idtask_idmodel 建 key。不要只依赖供应商控制台。它们是用来做账单对账的,不是实时产品控制。

也要积极使用提示词缓存。Anthropic 表示 Fable 保留现有的提示词缓存输入 token 90% 折扣,Sonnet 和 Opus 页面也列出了提示词缓存最高可节省 90%(FableSonnetOpus)。缓存稳定部分:仓库地图、编码规范、API 文档、schema 摘要、长篇产品规格。不要缓存易变的用户指令。

一个好的路由层应该为每次调用记录这些字段:

{
  "task_kind": "migration",
  "chosen_model": "opus",
  "fallback_from": "fable",
  "estimated_cost_usd": 0.18,
  "budget_usd": 0.20,
  "input_tokens": 12000,
  "max_output_tokens": 3000
}

这份日志,是你回答 CFO、资深工程师,以及那个问“为什么智能体停了”的用户时的依据。

Step 4: 把回退当成产品行为

Fable 有两种回退需要规划。

第一种是普通基础设施回退:模型不可用、限流、超时、provider 问题。今天的 Fable 状态已经证明这很重要。Anthropic 表示,6 月 12 日的指令没有影响其他模型的访问(Anthropic),所以一个好应用应该能通过 Opus 或 Sonnet 继续工作。

第二种是安全回退。Anthropic 表示,Fable 会把一些被标记的网络安全和生物学请求路由到 Opus 4.8,并且用户不会按 Fable 价格为被重路由的请求付费(Anthropic Fable)。发布文章称,这些安全保护平均在不到 5% 的会话中触发,同时预计会有一些误报(Anthropic launch)。

不要对用户隐藏这一点。如果你的安全审查产品请求 Fable,却得到 Opus 行为,UI 应该说类似这样的话:

“此请求中被标记的部分使用了更安全的回退路线。结果可能没那么详尽。预算影响已调整。”

这比假装每个答案都来自同一个模型强。它也能保护你的评测。如果你在 benchmark Fable,但测试集里一半都触发了回退,那你测到的就不仅是模型,也同样是你的分类器路径。

前后对比 UI mockup:一个不透明的模型选择器,对比一个透明的路由状态面板,显示所选 mod

本周该上线什么

先上线路由器,再上线 Fable feature flag。

对大多数开发者产品,我推荐的默认值很简单:

  • 代码解释、小修复、测试、文档: Sonnet 4.6。
  • PR 审查、生产 bug、架构选择: Opus 4.8。
  • 有明确商业回报的多小时或多日智能体工作: Fable 5 可用时用 Fable,回退到 Opus。
  • 任何无边界任务: 用户设置预算前,不给 Fable。
  • 任何跨大量用户重复发生的任务: 缓存长上下文或做批处理。

重点不是崇拜顶级模型。重点是把前沿 token 花在真正会改变结果的地方。

Fable 5 可能是本周 HN 上大家争论的模型。Sonnet 仍然应该是大多数生产流量的起点。Opus 是可靠的中间档。最终胜出的实现,会是一个无聊的路由器:有硬上限、诚实回退,并且日志足够好,既能调质量,也能调成本。

如果你想用最快路径测试这套设置,打开 Claude Fable 5 on OneHop,创建账号,然后领取 10 美元免费额度开始使用。接着把上面的路由器接进一个工作流,而不是整个产品。衡量每个被接受结果的成本。这个数字比任何发布周 benchmark 都更重要。