AI SDK 的 Anthropic Provider 演进全解读:从 @ai-sdk/anthropic CHANGELOG 看 Claude 集成能力路线图
2026/9/12 13:15:34 网站建设 项目流程

AI SDK 的 Anthropic Provider 演进全解读:从 @ai-sdk/anthropic CHANGELOG 看 Claude 集成能力路线图

【免费下载链接】aiThe AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and agents项目地址: https://gitcode.com/GitHub_Trending/ai/ai

@ai-sdk/anthropic是 AI SDK(TypeScript AI 工具包,由 Next.js 团队维护)中对接 Anthropic Messages API 的语言模型提供方包。本文以仓库中 packages/anthropic/CHANGELOG.md 的完整变更记录为骨架,系统梳理该包从 0.0.1 到 4.0.52 的能力演进:包括批处理、扩展思考、结构化输出、服务器端工具、Provider 选项体系与模型 ID 迭代,并结合 anthropic-provider.ts、anthropic-language-model-options.ts 等源码给出底层实现证据。读完本文,你将掌握该 Provider 的全部能力面、配置入口与升级迁移要点。

当前状态:v4.0.52 与 v4 时代的全景

截至仓库当前快照,@ai-sdk/anthropic的最新发布版本为4.0.52,紧随其后的 4.0.50/4.0.51 也属于同一迭代批次。近期的变化节奏呈现三个鲜明特征:

  • 批处理能力快速补齐:4.0.50 支持"批内按请求指定模型"(per-request models in batch),4.0.52 新增批任务的取消(cancellation)与列表(listing)能力,4.0.42 引入批完成 Webhook(experimental_startTextBatch接受webhookUrl,直接 Provider 在提供该选项时会返回 unsupported 警告);
  • 模型 ID 持续刷新:4.0.48 新增claude-fable-5-1,4.0.20 引入claude-opus-5,4.0.4 引入claude-sonnet-5
  • 与核心层(provider/provider-utils)解耦升级:每个 Patch 版本几乎都携带@ai-sdk/provider@ai-sdk/provider-utils的依赖更新,说明该包始终跟随核心规格演进。

依赖关系上,该包基于@ai-sdk/provider(4.0.x)与@ai-sdk/provider-utils(5.0.x),规格版本为v4(见 anthropic-provider.ts 中的specificationVersion = 'v4')。

大版本节点:4.0.0 与 AI SDK v7 预发布

4.0.0 是 CHANGELOG 中最关键的大版本(Major Changes)节点,标记为 "Start v7 pre-release",其变更对下游使用者有直接影响:

  • 全面 ESM-onlyRemove CommonJS exports from all packages. All packages are now ESM-only ("type": "module")。使用require()的消费者必须切换到 ESMimport语法;
  • Node 版本门槛提升:最低支持 Node.js 22,官方支持的版本为 22、24 与 26;
  • 移除 providerMetadata 中的cacheCreationInputTokens:缓存创建输入 token 不再暴露在 provider metadata 中,避免与新的 usage 结构冲突;
  • 顶层reasoning参数:核心层在generateText/streamText中新增顶层推理参数;
  • 符号重命名:为了让各 Provider 实现代码模式更一致,重命名了部分对外导出符号,旧名称通过废弃别名继续可用;
  • Provider References 抽象:支持通过 provider references 上传技能(skills)与文件,uploadFile/uploadSkill可直接接收 provider 实例。

同一大版本还打包了一大批 Anthropic 专属增强:claude-opus-4-8metadata.user_id透传、新的 advisor 工具、bash 工具自动使用沙箱(sandbox)、inference_geo地理选项、claude-fable-5fallbacksAPI 参数、Opus 4.7 支持,以及全部 Provider 模型的工作流序列化(WORKFLOW_SERIALIZE/WORKFLOW_DESERIALIZE静态方法)。

批处理能力:从 text batch 到取消与列表

批处理是 4.0.x 迭代最密集的领域,CHANGELOG 记录了完整链路:

版本能力
4.0.34新增文本批处理(text batch)支持
4.0.42批完成 Webhook,experimental_startTextBatch支持webhookUrl
4.0.43对齐跨 Provider 的批结果解析、请求计数与生命周期行为
4.0.46保留原生批请求计数到 provider metadata,批请求支持完整的语言模型选项面
4.0.50批内支持按请求指定模型(per-request models)
4.0.52新增批任务取消与列表

从源码看,批能力由 anthropic-batch.ts 实现,它实现了Experimental_BatchV4接口,并定义批请求 ID 的正则约束/^[A-Za-z0-9_-]{1,64}$/(anthropic-batch.ts);批响应 schema 包含processing_statusrequest_counts(processing/succeeded/errored/canceled/expired 五类计数)。在 anthropic-provider.ts 中,Provider 暴露experimental_batch()工厂方法,返回带{ text: AnthropicModelId }泛型的批处理器,其 provider 名基于anthropic.messages派生为anthropic.batch

思考与推理:thinking 参数与 reasoning 体系

CHANGELOG 中关于"思考"的演进清晰可见:

  • 1.1.10:新增 Anthropic reasoning 支持(ddf9740);
  • 3.0.x9e1e758修复未指定时使用默认 thinking budget;83aaad8引入 Opus 4.5 与effortprovider 选项;
  • 4.0.8:修复thinking: { type: 'disabled' }被静默丢弃的问题——此前该值被 schema 接受但不会随请求发出,对默认开启思考的模型(如 Sonnet 5)会消耗整个max_tokens预算,现在会正确转发到 Messages API;
  • 4.0.21:将思考 token 报告为 reasoning token 用量;
  • 4.0.26:通用推理启用自适应思考时,返回可见的总结推理(summarized reasoning);
  • 4.0.31:为advisor_20260301工具添加maxTokens,并作为max_tokens转发以独立限制每个 advisor 子推理。

对应到 anthropic-language-model-options.ts,thinking选项支持三种形态:

  • { type: 'adaptive' }:适用于 Sonnet 4.6、Opus 4.6 及更新模型,可配合displayomitted/summarized/updates)与blockBinding.prefixMismatchBehavior: 'drop_block'
  • { type: 'enabled', budgetTokens }:适用于 Opus 4.6 之前的模型(Sonnet 4.6 仍支持),预算最小 1024 token 且计入max_tokens
  • { type: 'disabled' }:显式关闭思考。

effort顶层选项支持low / medium / high / xhigh / max五档,用于控制推理投入。

结构化输出:outputFormat / jsonTool / auto

结构化输出经历了从 beta 到原生支持的演进:

  • 2.0.0 时代ad66c0e通过工具调用实现 JSON response schema 支持;cdc6b7a在使用 json 输出工具时禁用并行工具调用;075711d修复 json 输出工具的 stop finish reason;
  • 3.0.0 时代b8ea36e引入 Anthropic 原生结构化输出;cf4e2a9支持带结构化输出的工具调用;1bd7d32支持工具级 strict 模式;c012d57清洗不支持的 JSON Schema 校验属性;87db851(vertex/anthropic)仅对结构化输出传 beta header;
  • 4.0.0 时代d98d9ba(3.0.49)将废弃的output_format参数迁移到output_config.format,并让 Bedrock Anthropic 模型通过output_config.format启用原生结构化输出。

源码中structuredOutputMode提供三种选择(anthropic-language-model-options.ts):outputFormat(使用output_config.format参数)、jsonTool(使用特殊 json 工具)、auto(优先 outputFormat,不支持时回退 jsonTool,默认值)。

工具生态:Provider 定义工具的完整族谱

CHANGELOG 记录了 Anthropic Provider 定义工具(provider-defined tools)的持续扩张,这是该包最具差异化价值的部分:

  • 代码执行code_execution(3.0.48)、2025-08-25版本(3.0.0 时代6f845b4)返回file_id以下载输出文件(80894b3);4.0.28 通过以原始线缆形态重放完整代码执行记录来保留 prompt-cache 命中;
  • Web 工具web_fetch/web_searchfa35e95/11e4abe/0ae783e)、带日期的web_fetch_20260209/web_search_20260209(3.0.54)、支持延迟结果(3.0.21)、PDF 响应与引用(3.0.18)、加密代码执行结果的多轮处理(3.0.55);
  • 文本编辑text_editor_20250124(1.1.13)与text_editor_20250728(3.0.0 时代afb00e3,支持可选max_characters);
  • 计算机使用computer_202501243b1b69a)、computer_20251124(3.0.25,用于 Opus 4.5);
  • 其他bash_20250124(1.1.13)、memory(3.0.0 时代d08308b)、advisor(4.0.0 时代8018480,4.0.31 补上 maxTokens)、tool_search(3.0.21)。

工具相关的修复也贯穿始终:f13958c允许自定义 Provider 工具名称、19c5ee2重排客户端与 Provider 工具使用之间的 assistant 内容、9e35785在流式工具调用无参数时发送{}2e45d9c(4.0.9)将非法工具输入包装进对象、a464505toModelOutputprovider 选项传播到工具结果。

在 anthropic-provider.ts 中,这些工具通过provider.tools = anthropicTools暴露,统一挂在 Provider 实例上。

Provider 选项体系:一份完整的配置清单

结合 anthropic-language-model-options.ts 的 Zod schema,当前版本支持的 Anthropic 专属 provider 选项可整理如下:

选项类型/取值说明
thinkingadaptive/enabled/disabled扩展思考配置(见上文)
structuredOutputModeoutputFormat/jsonTool/auto结构化输出生成方式
disableParallelToolUseboolean默认 false;为 true 时每轮最多使用一个工具
cacheControl{ type: 'ephemeral', ttl?: '5m' \| '1h' }提示词缓存控制(3.0.47 起作为顶层cache_control透传)
metadata.userIdstring请求级外部用户标识,禁止含 PII
mcpServers数组MCP 服务器接入,含authorizationTokentoolConfiguration
container{ id?, skills? }Agent Skills 配置,支持anthropiccustom类型,需启用代码执行
toolStreamingboolean(默认 true)细粒度(eager)工具输入流式,4.0.x 默认开启
effortlow/medium/high/xhigh/max推理努力档位
taskBudget{ type:'tokens', total, remaining? }Agent 回合 token 预算(仅建议性,不强制)
speedfast/standard快速推理模式,仅 Opus 4.6 支持(3.0.39)
serviceTierauto/standard_only服务层级
inferenceGeous/global推理地域(4.0.0 时代09bd27b
fallbacks'default'或数组服务端回退模型链(4.0.20 起default模式自动加server-side-fallback-2026-07-01beta)
anthropicBetastring 数组自定义 beta 特性集合(3.0.56 起可向下游 Provider 暴露)
contextManagement对象clear_tool_uses_20250919/clear_thinking_20251015/compact_20260112三类编辑
sendReasoningboolean是否向模型发送推理输入

此外 Provider 级设置(anthropic-provider.ts)包括:baseURL(默认https://api.anthropic.com/v1,裸https://api.anthropic.com会自动归一化追加/v1)、apiKeyx-api-key头,默认读ANTHROPIC_API_KEY)、authTokenAuthorization: Bearer头,默认读ANTHROPIC_AUTH_TOKEN,两者不能同时提供)、headers、自定义fetchname(默认anthropic.messages)。

流式协议与消息处理细节

CHANGELOG 中大量 Patch 记录针对流式与消息处理的细枝末节,体现了该包对 Anthropic 流式协议的精雕细琢:

  • 首块处理eb56fc6/589a4ee简化首 chunk 拉取,03849b0在首个流 chunk 为错误时抛出 500 错误;
  • 事件校验:4.0.32 拒绝拼接(spliced)的生成内容,同时允许活动消息的重复 message start 事件;
  • 字段位置:3.0.33 修复流式context_management字段位置——此前错误地在 delta 对象内解析,API 实际返回在message_delta根级;
  • 用量:3.0.40 在流式时包含response.usage.raw真实原始用量;3.0.28 填充outputTokens.text;3.0.29 修复流式缓存用量报告;
  • finish reasoncbf52cd暴露原始 finish reason;2.0.11 处理pause_turn;2.0.10 将refusal映射为content-filter
  • 消息合并:0.0.35 合并连续的 assistant 消息,0.0.24 合并工具与用户消息、系统消息,2.0.13 将tool_result内容重排到合并用户消息前部以满足 API 校验。

安全与稳健性:URL 校验、错误规范化与原型污染防护

4.0.x 在安全侧投入显著:

  • 4.0.14getFromApi增加validateUrl标志,通过fetchWithValidatedRedirects拒绝私有/回环/链路本地地址,逐跳重新校验重定向,跨域重定向时剥离 proxy/metadata/cookie 头与调用方头(自定义 API key 头不得跟随重定向离开源站);新增credentialedOrigin(非同源不发送调用方头)与trustedOrigin(自托管部署豁免目标校验);同时补齐 IPv4 组播、文档网段与 IPv6 文档网段校验;仅遵循 fetch 规范重定向状态码(301/302/303/307/308)。详见 contributing/secure-url-handling.md;
  • 4.0.6:同步解析 Provider JSON 输入时防止原型污染,并从 provider-utils 暴露secureJsonParse
  • 4.0.43:将各 Provider 的流中错误事件规范化为公共StreamProviderError实例,保留 provider 自有 type/code/status/retry 与原始负载元数据;
  • 4.0.1 时代1fe058b保留模型返回的错误码,6fd51c0getErrorMessage中保留错误类型前缀;
  • 3.0.0 时代0e38a79支持ANTHROPIC_BASE_URL环境变量;cd12954(4.0.14 同批)拒绝空 base URL。

模型 ID 与能力探测的演进

模型 ID 的迭代贯穿整个 CHANGELOG:0.0.22引入claude-3.5-sonnet0.0.56引入 Haiku 3.5,2.0.0 时代ca8aac6引入 Claude v4 系列,fdff8a4修正 Claude 4 模型 ID 格式,3.0.0 时代陆续加入 Haiku 4.5、Sonnet 4.5/4.6、Opus 4.5/4.6/4.7,4.0.0 时代加入 Opus 4.8、claude-sonnet-5claude-opus-5claude-fable-5/claude-fable-5-1

当前 anthropic-language-model-options.ts 中的AnthropicModelId联合类型覆盖:claude-3-haiku-20240307claude-haiku-4-5(-20251001)claude-opus-4-0claude-opus-4-20250514claude-opus-4-1(-20250805)claude-opus-4-5(-20251101)claude-sonnet-4-0claude-sonnet-4-20250514claude-sonnet-4-5(-20250929)claude-sonnet-4-6claude-opus-4-6claude-opus-4-7claude-opus-4-8claude-opus-5claude-fable-5claude-fable-5-1claude-sonnet-5,并保留(string & {})以兼容新模型。

能力探测逻辑同样值得关注:21f378c在模型 ID 未知时不限制 maxTokens,4c5a6be按模型设置默认与上限 maxTokens,97de198(4.0.18)对未知模型使用默认 4096 max output token 时给出警告,4.0.19 对无法识别的 Claude 模型 ID 使用当前世代能力默认值(同时保留对旧 Claude 与非 Claude 模型的保守默认值),4.0.49 修复带日期的 Google Vertex Claude 4 模型 ID 的能力识别。

历史版本时间线:从 0.0.1 到 3.x 的沉淀

CHANGELOG 完整保留了从 0.0.1(7b8791d,重命名baseUrlbaseURL并自动去除尾部斜杠)至今的轨迹,梳理关键里程碑:

  • 0.0.x:基础 Messages API 接入,流式工具调用(0.0.14/0.0.30 时代)、toolChoice(0.0.17)、自动下载图片 URL(0.0.18)、自定义 header(0.0.26)、系统消息支持(0.0.11)、消息合并与错误流处理;
  • 1.0.x:AI SDK 4 对齐(移除 baseUrl 与 Anthropic facade、移除 topK 模型设置)、bash_20250124/text_editor_20250124、computer use 工具、图片 URL、PDF 支持(0.0.54 时代的4d2e53b)、提示词缓存(0.0.43 的6ac355e);
  • 2.0.x:AI SDK 5 大版本,web search 服务端支持(2e13791)、PDF 引用与 document sources(25f3454)、流式工具调用(0b678b2)、缓存控制(a753b3a)、禁用并行工具(4f26d59)、服务器端代码执行(ae859ce)、暂停轮次(pause_turn)、refusal 映射;
  • 3.0.x:AI SDK 6 beta,Provider-V3/LanguageModelV3规格、Anthropic 原生结构化输出、上下文管理(context_management)、effort、Agent Skills(9354297)、MCP connector(81d4308)、程序化工具调用(50b70d6)、fine-grained tool streaming 默认开启(f4e4a95)、authToken认证(3.0.22)、ANTHROPIC_BASE_URL0e38a79)、temperature/topP 互斥(3.0.6/2231e84与 4.0.0 的f57c702放宽到非 Anthropic 模型)。

如何跟进与验证:从 CHANGELOG 到源码

若要验证本文所述能力或跟进后续演进,仓库内提供了完整的一手材料:

  • 变更记录:阅读 packages/anthropic/CHANGELOG.md 全文(共 3554 行,覆盖 0.0.1 至 4.0.52);
  • 使用入门:见 packages/anthropic/README.md,安装命令为npm i @ai-sdk/anthropic,随后import { anthropic } from '@ai-sdk/anthropic'并配合generateText使用;
  • 导出面:见 packages/anthropic/src/index.ts,导出anthropiccreateAnthropicAnthropicLanguageModelOptions(含废弃别名AnthropicProviderOptions)等;
  • 实现细节:Provider 工厂与认证在 anthropic-provider.ts,语言模型选项 schema 在 anthropic-language-model-options.ts,批处理在 anthropic-batch.ts,消息元数据在 anthropic-message-metadata.ts;
  • 行为佐证:仓库内含大量测试与响应 fixture,例如 anthropic-batch.test.ts、anthropic-language-model.test.ts,以及__fixtures__/目录下的anthropic-claude-opus-5-reasoning-high.1.jsonanthropic-fallback.chunks.txtanthropic-refusal.chunks.txt等真实响应样本,可直接对照验证claude-opus-5推理、fallback 流与 refusal 场景的处理逻辑。

总体来看,@ai-sdk/anthropic的演进史是一个典型的"跟随上游能力、打磨协议细节"的过程:每逢 Anthropic API 推出新模型或新特性(思考、原生结构化输出、服务器端工具、批处理、上下文管理),该包都会在短时间内跟进并提供 AI SDK 风格的统一抽象;同时,通过模型能力探测、参数互斥校验、流式事件校验与 URL 安全防护,持续降低误用风险。对正在使用或计划接入 Claude 的 AI SDK 应用而言,这份 CHANGELOG 既是升级手册,也是理解 Anthropic Messages API 能力边界的最佳索引。

【免费下载链接】aiThe AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and agents项目地址: https://gitcode.com/GitHub_Trending/ai/ai

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询