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. 1

    安装并认证

    装 ai 和 @ai-sdk/anthropic,直连路线设 ANTHROPIC_API_KEY。走 AI Gateway 就用 AI_GATEWAY_API_KEY 认证;部署在 Vercel 上时也可以依赖 Vercel 的 OIDC token,这样环境里根本不用放 key。

  2. 2

    按你的路线写模型名

    直连:model 传 anthropic('claude-fable-5')。网关:改传字符串 'anthropic/claude-fable-5'。网关这种字符串写法在 AI SDK、Chat Completions、Responses 和 Messages 各种 API 形态下都一样 —— 如果你是在迁移一个已有客户端而不是从零开始,这一点很关键。

  3. 3

    在 providerOptions 里设 effort

    加上 providerOptions,里面放一个带 effort 的 anthropic 对象,类型标成 AnthropicLanguageModelOptions —— 这样打错字是编译错误,而不是悄悄用了默认值。不要在 generateText 或 streamText 的顶层设 temperature、topP、topK,这个模型拒绝采样参数。

  4. 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。

在拒答传到用户面前之前把它处理掉

什么会触发拒答、响应长什么样、服务端回退和客户端回退有何区别 —— 都在同一页里。

常见问题