vercel/ai 仓库的 README 给出的自我描述很直接:AI SDK 是一个 provider-agnostic 的 TypeScript 工具包,用来构建 AI 应用与 agent,作者来自 Next.js 团队。仓库页面显示 26.9k star、5.2k fork、145 watchers、8,634 次提交,主语言为 TypeScript,官网为 ai-sdk.dev,官方页面标注的发布时间为 2026-09-22。
定位:不是某个模型的 SDK,而是接口层
topics 列表本身就划出了它的边界:openai、anthropic、gemini 三个供应商,llm、language-model、generative-ai 三个模型方向,generative-ui、nextjs、react、svelte、vue 五个前端相关标签,加上 typescript、javascript、vercel。README 把支持范围写成 Next.js、React、Svelte、Vue、Angular 以及 Node.js 等运行时;安装要求为 Node.js 22+,命令是 npm install ai。仓库描述明确写着:免费开源,用于构建 AI 应用与 agent。
多 Provider 接入的两条路径
README 的 Unified Provider Architecture 一节给出两条路。
第一条是默认走 Vercel AI Gateway,直接传模型字符串:
const result = await generateText({
model: 'anthropic/claude-opus-4.6',
prompt: 'Hello!',
});
README 在同一位置列出 'openai/gpt-5.4'、'google/gemini-3-flash' 作为可替换取值。
第二条是直接连接各家 SDK 包,安装 @ai-sdk/openai、@ai-sdk/anthropic、@ai-sdk/google 后,用 provider 函数包住模型名:
import { anthropic } from '@ai-sdk/anthropic';
const result = await generateText({
model: anthropic('claude-opus-4-6'),
prompt: 'Hello!',
});
从代码形态看,两条路径的差别在于模型标识的解析位置:Gateway 方案把模型写成 provider/model 字符串,SDK 方案由应用自己引入 provider 包。README 没有在本页说明两条路径的计费、限流、失败回退或凭据管理细节,这部分属于需要查文档站才能确认的内容。
统一调用面:generateText 与结构化输出
生成文本用 generateText,可从返回值解构出 text。结构化数据同样走 generateText,但要配合 Output 与 zod schema:
const { output } = await generateText({
model: 'openai/gpt-5.4',
output: Output.object({ schema: z.object({ recipe: ... }) }),
prompt: 'Generate a lasagna recipe.',
});
示例 schema 里定义了 recipe 的 name、ingredients(含 name、amount)、steps 字段。把 schema 交给 SDK 而不是自己解析字符串,是这类工具库的核心卖点之一。
Agent:ToolLoopAgent 与工具定义
README 的 Agents 一节用 ToolLoopAgent 类给出例子:构造时传 model、system、tools。tools 中可以放 openai.tools.localShell,其 execute 回调里通过 Vercel Sandbox 运行命令,并把 stdout 作为 output 返回。
另一个例子是 imageGenerationAgent,工具为 openai.tools.imageGeneration({ partialImages: 3 }),并用 InferAgentUIMessage 导出消息类型。README 未展开 ToolLoopAgent 的循环终止条件、最大步数与重试策略,这些需要读 packages 下源码或文档确认。
与前端框架的结合方式
README 说明 AI SDK UI 模块提供一组 hook,用于构建聊天机器人与生成式 UI,这些 hook 是框架无关的,可用于 Next.js、React、Svelte、Vue,并按框架安装对应包,例如 @ai-sdk/react。
官方示例展示了一条端到端链路:
- Agent 定义文件导出 ToolLoopAgent 实例与 InferAgentUIMessage 推导出的消息类型。
- Next.js App Router 的 route.ts 里从请求体取 messages,用 createAgentUIStreamResponse({ agent, messages }) 返回响应。
- UI 组件用 UIToolInvocation> 描述工具调用,按 invocation.state 的 'input-available' 与 'output-available' 分支渲染,后者把 base64 结果放进 img 的 src。
- 页面用 useChat() 取 messages、status、sendMessage,遍历 message.parts,按 part.type 分派 'text' 与 'tool-generateImage'。
这里最值得注意的是类型闭环:agent 定义导出消息类型,useChat 接收该泛型,part.type 的分支因此可被类型系统检查。这是 TypeScript 工具库相对通用 HTTP SDK 的差异化价值。
仓库结构透露的工程信号
根目录包含 pnpm-workspace.yaml 与 turbo.json,说明是 pnpm + Turborepo 的 monorepo;packages/ 与 apps/docs 分离库代码与文档站;examples、content、architecture、skills、tools、contributing 分列;.changeset 用于版本发布管理;oxlintrc.json、.oxfmtrc.jsonc 表明使用 oxlint 系工具链;AGENTS.md 以及 .claude、.codex、.cursor、.agents 等目录说明仓库本身也为编码 agent 做了配置。README 还提供 npx skills add vercel/ai,为 Claude Code、Cursor 这类编码 agent 添加 AI SDK skill。
选型时该验证什么
以上是 README 与仓库元数据可以证明的部分。以下是工程分析,需要进一步查证:
第一,Provider 抽象的深度。README 只展示统一入口,是否所有 provider 都支持同样的参数集(工具调用、结构化输出、流式),需要查各 provider 包文档。
第二,默认 Gateway 的依赖边界。README 写的是默认使用 Vercel AI Gateway,若项目不希望经过该转发路径,就应改用直连 SDK 包的写法。
第三,模型标识的时效性。示例中的模型字符串会随供应商节奏变化,落地前应核对文档站当前列表,不能把示例值当作长期契约。
第四,Agent 循环的可控性。ToolLoopAgent 的步数上限、终止条件、错误处理在 README 未展开。
第五,环境要求。README 明确 Node.js 22+,升级前需确认本地与 CI 版本。
验证路径建议:先读 README 的 Unified Provider Architecture 与 Usage 两节,再进 packages/ 查看 provider 包与主包的导出面,最后用 npm install ai 跑一次最小 generateText 示例,确认 Node 版本与网络出口符合预期。
社区与贡献
README 指向 Vercel Community 作为提问、反馈想法与分享项目的入口,贡献前需阅读 Contribution Guidelines;作者列表写明该库由 Vercel 与 Next.js 团队成员创建,并有开源社区贡献者参与。仓库同时提供 templates,覆盖不同用例、provider 与框架,可用作起步脚手架。