2026 年 7 月 27 日核实
在 Vercel AI SDK 里使用 Claude Fable 5
集成本身三行代码。真正的生产就绪,全在于你怎么处理第四种结果 —— 不是答案,不是错误,是拒答。
一句话结论
两条路都支持。用 provider 包时写 anthropic('claude-fable-5'),走 AI Gateway 时用字符串 'anthropic/claude-fable-5'。effort 放在 providerOptions.anthropic 下。然后一定要配 fallback —— provider 上用 fallbacks: 'default',网关上用 providerOptions.gateway 下的 models 数组 —— 因为安全拒答是以「成功响应 + stop_reason refusal」的形式返回的,不是抛出的错误。
支持状态
两条路都完全支持,2026 年 7 月 27 日核实。Anthropic provider 包在加入 claude-fable-5 的同时加了 fallbacks 这个 API 参数;provider 文档列出了 effort 的五个档位 —— low、medium、high、xhigh、max —— 并注明 xhigh 在 Claude 5 系列和较新的 Opus 模型上可用。AI Gateway 也上线了 Fable 5,用同一个模型字符串,提供跨 Anthropic、Bedrock、Vertex 的统一可观测性与故障转移,价格与 provider 一致、无加价,推理不收平台费,BYOK 请求同样如此。
配置步骤
装包、指定模型、设 effort,然后决定拒答时会发生什么。
- 1
安装并认证
装 ai 和 @ai-sdk/anthropic,直连路线设 ANTHROPIC_API_KEY。走 AI Gateway 就用 AI_GATEWAY_API_KEY 认证;部署在 Vercel 上时也可以依赖 Vercel 的 OIDC token,这样环境里根本不用放 key。
- 2
按你的路线写模型名
直连:model 传 anthropic('claude-fable-5')。网关:改传字符串 'anthropic/claude-fable-5'。网关这种字符串写法在 AI SDK、Chat Completions、Responses 和 Messages 各种 API 形态下都一样 —— 如果你是在迁移一个已有客户端而不是从零开始,这一点很关键。
- 3
在 providerOptions 里设 effort
加上 providerOptions,里面放一个带 effort 的 anthropic 对象,类型标成 AnthropicLanguageModelOptions —— 这样打错字是编译错误,而不是悄悄用了默认值。不要在 generateText 或 streamText 的顶层设 temperature、topP、topK,这个模型拒绝采样参数。
- 4
上线之前先配好 fallback
直连路线上,把 fallbacks 设成 'default' 用 Anthropic 推荐的回退模型,或者给一个数组指定你自己的。在 AI Gateway 上,在 providerOptions.gateway 下加一个 models 数组,列出重试用的模型,比如先 Opus 4.8 再 Sonnet 5。网关的 fallback 在它支持的每种 API 形态下都生效。
坑
第一条就是这一页存在的理由。
旧版 provider 会把回退响应本身判为非法
有一个针对 @ai-sdk/anthropic 3.0.71 的报告:provider 会拒绝 type 为 fallback_message 的 usage iteration 条目,整个回合以类型校验错误失败。换句话说,在旧版 provider 上打开 fallback,反而会弄坏那些本该被 fallback 救回来的请求。开 fallback 的同时就把 provider 升级掉。
拒答是一次成功的响应
Fable 5 的 safety classifier 会拒绝请求,包括在普通编码和调试工作上偶发的误判。拒答是以成功响应的形式回来的,stop_reason 为 refusal,并会报出是哪个 classifier 拒的。你的 try/catch 永远不会触发,错误监控一片安静,而用户看到的是一个空的或者顾左右而言他的回答。请显式地对 stop reason 做分支。
你的脚手架模板里设了 temperature
temperature 是 generateText 和 streamText 的顶层选项,几乎每个 AI SDK 示例里都有。Fable 5 会拒绝它,topP 和 topK 也一样。因为它在顶层而不在 providerOptions 里面,你在审查 Anthropic 相关配置时很容易看漏。
长时程任务撞上 serverless 超时
这个模型是为长时程工作设计的,一个 high effort 的回合就可能超过 serverless 函数的默认执行窗口。用流式而不是缓冲,把路由的 maxDuration 调高,并确保客户端能扛住一次重连 —— 服务端超时的那一回合,已经生成的 token 照样计费。
成本注意事项
AI Gateway 原样反映 provider 价格、不加价,推理也不收平台费,所以走网关是一种成本中性的方式来换取故障转移和用量报表 —— BYOK 请求同样适用。除此之外,effort 是你的主要杠杆,fallback 是你的主要意外:被 Fable 5 拒掉、由 Opus 4.8 接手的那次请求,是按 Opus 价格计费的;所以拒答率不低的工作负载有一个混合成本,你应该去测量它,而不是假设它。在 RAG 形态的应用里,真正悄悄主导账单的是 1M 上下文窗口 —— 检索回来的上下文,每一次调用都算输入 token。