在 TypeScript 生态中接入 LLM 时,开发团队往往先遇到同一个问题:OpenAI、Anthropic、Google 各自的 SDK 接口不同,一个应用要支持多个模型,难道需要维护多套调用层?
Vercel AI SDK 在 GitHub 上的开源仓库给出了 Vercel 的答案——一个 provider-agnostic 的 TypeScript 工具包。它不止面向 Next.js,也覆盖 React、Svelte、Vue、Angular 等 UI 框架,以及 Node.js runtime。
这篇文章基于仓库 README 的公开信息,梳理 AI SDK 的几个关键技术事实,并区分那些是官方明确说明、哪些仍需要开发者自己进入源码验证。
一个多模型接入的统一入口
README 最核心的信息是:AI SDK 提供 unified API 来对接 OpenAI、Anthropic、Google 等多种模型提供商,并默认通过 Vercel AI Gateway 访问各家模型。
一个官方示例展示了最简写法:
import { generateText } from 'ai';
const { text } = await generateText({
model: 'openai/gpt-5.4', // 或 anthropic/claude-opus-4.6 等
prompt: 'What is an agent?',
});
这里把模型字符串(如 anthropic/claude-opus-4.6)直接传给 generateText,由 AI Gateway 作为中间接入层完成与各上游 provider 的交互。也就是说,应用侧代码不需要区分 OpenAI 或 Anthropic 的请求格式差异。
除此之外,官方也提供直连模式:通过 @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!',
});
这两条路径值得区分对待:
- AI Gateway 路径需要服务端环境中可访问 Vercel AI Gateway,适合已经部署在 Vercel 或愿意依赖该网关的团队;
- 直连 provider 路径则回归传统方式,由客户端直接调用 OpenAI/Anthropic/Google 等上游 SDK,此时需要团队自行管理各自的 API endpoint、密钥和限流。
从工程视角看,这种“一个统一 API + 两种接入方式”的设计带来的直接好处是应用层可以保持模型厂商无关。模型替换只是在构造器或字符串处变化,业务逻辑完全不受影响。
不过需要谨慎的是:README 展示的 claude-opus-4.6、gpt-5.4、gemini-3-flash 这些模型字符串,当前是否全部真实存在且对应到稳定版本,单凭仓库快照无法确认。做生产接入时一定要以当前官方文档和实际 provider 返回为准。
从文本生成到结构化输出:内置 schema 约束
大多数生成式 AI 应用最终需要的不只是一段文本,而是可以被代码消费的 JSON 数据。
AI SDK 在 README 中展示了利用 Zod schema 约束输出结构的方式:
import { generateText, Output } from 'ai';
import { z } from 'zod';
const { output } = await generateText({
model: 'openai/gpt-5.4',
output: Output.object({
schema: z.object({
recipe: z.object({
name: z.string(),
ingredients: z.array(
z.object({ name: z.string(), amount: z.string() }),
),
steps: z.array(z.string()),
}),
}),
}),
prompt: 'Generate a lasagna recipe.',
});
这是一个非常典型的 constraining 设计:把类型安全从 TypeScript 类型层面传递到模型输出契约上。调用方定义 schema 即可让模型返回符合结构的数据,而不是自己解析自由文本。
同时这也意味着 AI SDK 封装了非结构化 LLM 请求到结构化输出的转换过程。如果开发者此前是直接拼 prompt 再加 JSON.parse,那么这种抽象能减少一层容错成本。但 AI SDK 底层具体如何保证模型输出严格合法(是重试、校正 prompt、还是服务端二次校验),README 没有解释,这属于需要看源码或文档进一步验证的部分。
Agent 能力:SDK 层级的工具调用抽象
README 中出现了一个值得 Agent 开发者关注的类:ToolLoopAgent。
import { ToolLoopAgent } from 'ai';
const sandboxAgent = new ToolLoopAgent({
model: 'openai/gpt-5.4',
system: 'You are an agent with access to a shell environment.',
tools: {
shell: openai.tools.localShell({
execute: async ({ action }) => {
const [cmd, ...args] = action.command;
const sandbox = await getSandbox(); // Vercel Sandbox
const command = await sandbox.runCommand({ cmd, args });
return { output: await command.stdout() };
},
}),
},
});
这个例子传递了几个信息:
- AI SDK 的 Agent 抽象以“模型 + 定义好的 tools”为构造基础;
- 它不只停留在 chat 对话闭环,还期望与外部环境产生真实动作——例如执行 shell 命令;
openai.tools.localShell这种命名暗示 provider 包本身就扩展出了工具类能力,而不是全部业务逻辑都积压在应用代码中。
需要注意,示例里 getSandbox() 在 README 中只是标注为 Vercel Sandbox 的引入示意,并不是可以直接在任意环境跑通的代码。要实际复现这个 Agent,你还需要 Vercel Sandbox 的环境能力及其 API。
AI SDK UI:聊天与生成式 UI 的框架封装
Agent 除了后端推理循环,通常还要在前端呈现交互过程。
README 显示 UI 模块通过 @ai-sdk/react 这类框架包封装了 hooks,比如 useChat,并且是框架无关的,同样可应用于 Svelte、Vue 等。
仓库还给出了一个完整的图片生成 Agent 前后端路由示例:
- 服务端 Next.js App Router 路由中创建
createAgentUIStreamResponse响应; - 客户端组件通过
useChat发送消息,并根据消息 parts 中的tool-generateImage类型渲染自定义 UI。
这个模式的关键点是:工具调用结果以类型安全的 UI 组件形态渲染到聊天流中。消息里不仅包含文本,还包含结构化 tool part,前端能根据工具类型直接映射到对应视图组件。
它对生成式 UI 类应用的架构价值很明显:Agent 的任何工具调用都能在完整对话上下文中被记录、被恢复、被展示,而普通 REST 接口完全无法做到这一点。
安装与模板生态
官方安装要求是 Node.js 22+ 和任意包管理器:
npm install ai
如果使用 Claude Code 或 Cursor 这类 coding agent,README 也建议通过以下命令把 AI SDK skill 加入仓库:
npx skills add vercel/ai
这暗示 AI SDK 已经有一层面向编码 Agent 的 skill 生态,目的是让 AI 编码助手在实现 LLM 功能时更准确地使用 AI SDK API。
另外 README 提到 Vercel 已经构建了集成 AI SDK 的 templates,覆盖不同用例、provider 和框架。做技术调研时,直接从 templates 进入往往比从零阅读全部 API Reference 更快。
项目边界:哪些还需自行验证
README 给出的是一张能力地图,而不是源码级剖析。对于选型中的团队,下面这些问题不能仅靠这份 README 得出结论,需要结合源码审查和实际测试:
- 内部架构细节:统一消息如何映射到各家 provider 的 tool-calling/streaming 格式?流式输出在代理和直连模式下是否存在行为差异?
- AI Gateway 的计费与延迟:默认路径经 Vercel Infrastructure 转发,但 README 没有提供任何延迟、可用性、价格数据;涉及生产决策时必须根据当前官方定价与自身性能测试评估。
- 版本与模型可用性:README 中展示的模型字符串、Agent 类型、工具 API 均可能随版本演进;目标版本的具体 API 必须对照你的安装版本的实际类型声明确认。
- 框架集成深度:README 说 UI hooks 能用于 React/Svelte/Vue,但实际对不同框架的 SSR、流式渲染支持粒度,还需要分别通过官方文档验证。
工程选型建议
如果你的技术栈已经基于 TypeScript + Next.js/React,且希望避免在各 model provider SDK 之上再维护一层自定义 adapter,Vercel AI SDK 的方向是合理的。统一的模型字符串、直连与网关双路径、结构化输出能力,确实能减少早期接入时的样板代码。
如果团队更倾向于自行控制所有底层请求细节,或者只使用单一模型 provider,那么引入这一层抽象就需要权衡额外的学习成本和潜在的黑盒路径。
另外值得关注的是 ToolLoopAgent、工具类的 provider 扩展、以及 UI parts 机制三者之间的呼应关系——它们共同构成了从后端 Agent 到前端对话 UI 的完整数据类型链路。这种集成深度才是 AI SDK 的真正亮点。
由于 README 只展示了 API 的表面语义,决策前花一点时间直接读仓库中核心函数(generateText、ToolLoopAgent、createAgentUIStreamResponse)的类型定义,会比依赖第三方介绍更可靠。