const result = await generateText({
model: 'anthropic/claude-opus-4.6',
prompt: 'Hello!',
});
第一眼看过去,这只是一段普通的调用代码。但 model 字段接受一个纯字符串,这一点值得停下来想一下:调用方不需要导入 OpenAI 或 Anthropic 的 SDK,不需要初始化客户端,只需要传一个模型标识。
这是 vercel/ai 官方 README 中对 AI SDK 的定位:provider-agnostic 的 TypeScript 工具包,面向使用 Next.js、React、Svelte、Vue、Angular 等 UI 框架和 Node.js 运行时构建 AI 应用与 Agent 的开发者。README 同时给出了安装要求:本地需要 Node.js 22+ 和 npm(或其他包管理器),安装命令是 npm install ai。
下面从 README 提供的事实出发,拆解这个项目的边界。
两种接入方式,差异不只是写法
README 明确了两种使用模型的方式。
第一种是默认路径,走 Vercel AI Gateway。只需要传模型字符串,比如 'openai/gpt-5.4'、'anthropic/claude-opus-4.6'、'google/gemini-3-flash'。README 的原话是“开箱即用地访问所有主要 Provider”。
第二种是直连 Provider SDK。先安装:
npm install @ai-sdk/openai @ai-sdk/anthropic @ai-sdk/google
然后通过 SDK 实例构造模型:
import { anthropic } from '@ai-sdk/anthropic';
const result = await generateText({
model: anthropic('claude-opus-4-6'),
prompt: 'Hello!',
});
注意一个细节:Gateway 方式中模型名是 claude-opus-4.6,直连方式中是 claude-opus-4-6。两种标识格式不一样。README 没有解释这个差异是否在所有模型上存在,也没有说明 Gateway 会如何处理不同 Provider 的模型命名。
从工程角度看,这里最重要的信号是:抽象层没有把接入方式锁死。团队如果不想依赖 Vercel 基础设施,可以使用 @ai-sdk/* 包直连 Provider。但 README 没有说明直连方式与 Gateway 方式在功能上是否完全等价,比如工具调用、流式响应、结构化输出在各 Provider 上的对齐程度。这是一个需要验证的边界。
结构化输出与 Agent 抽象
结构化输出是 README 明确展示的一项能力:
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.',
});
Output.object 接受一个 zod schema。对 TypeScript 项目来说,这个设计的吸引力在于:类型定义、运行时校验和输出约束共用同一套表达方式。团队如果已经在使用 zod,接入成本很低。
但 README 没有说明 Output.object 是如何把 zod schema 转成各 Provider 可执行的输出约束的。Provider 之间的输出约束能力并不天然一致,抽象层能否在所有 Provider 上保持一致表现,是选择这个工具包时需要进一步确认的问题。
Agent 构建方面,README 给出了 ToolLoopAgent 的示例:
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() };
},
}),
},
});
这个示例暴露了一个值得注意的依赖:openai.tools.localShell 的 execute 回调中使用了 getSandbox(),注释显示是 Vercel Sandbox。也就是说,示例中的 shell 工具可能依赖 Vercel 沙箱环境,而不是一个在任何 Node.js 进程里都能直接执行的通用能力。README 没有明确说明它的部署边界,这一点需要从源码或官方文档确认。
同样,ToolLoopAgent 只展示了构造方式。循环什么时候停止、模型调用失败怎么处理、工具抛出异常如何向上传递,README 都没有展开。对于想在生产环境使用 Agent 的团队,这些是需要补上的功课。
UI 集成:hooks 的框架支持边界
AI SDK UI 模块提供了一套 hooks,用于构建聊天机器人和生成式 UI。README 明确说这些 hooks 是 framework agnostic 的,可用于 Next.js、React、Svelte、Vue。安装方式为:
npm install @ai-sdk/react
需要注意的是,README 把 Angular 列入项目支持的 UI 框架清单,但在 UI hooks 的支持范围中只明确列出了 Next.js、React、Svelte、Vue。这两件事不能混为一谈。Angular 项目能否直接使用这套 hooks,README 没有说明。
对团队选型而言,这个支持范围的意义在于:如果团队同时维护 React 和 Vue 两个前端,Agent 逻辑可以放在同一层,UI 层各自接入对应的 hooks。这比每个前端项目单独对接一套 LLM 调用逻辑要更容易维护。
README 还给出了一个完整的图片生成 Agent 示例,展示了从 Agent 到 UI 的完整链路。Agent 端使用 openai.tools.imageGeneration({ partialImages: 3 }) 定义工具,服务端路由使用 createAgentUIStreamResponse 把 Agent 输出转成流式响应,UI 端通过 UIToolInvocation 根据状态(input-available、output-available)渲染不同内容,页面组件用 useChat 和 sendMessage 处理交互。
这个完整链路是官方 README 提供的最有价值的信息。它说明 AI SDK 不只是提供一个模型调用入口,而是覆盖了 Agent 应用从模型、工具、服务端流式响应到前端组件的分层结构。不过,示例是 Next.js App Router 环境下的写法,README 没有展开 Svelte、Vue 等项目在服务端路由层的接入方式是否一致。
可以确定的边界
从官方 README 可以确认的事实包括:
- AI SDK 是一个 provider-agnostic 的 TypeScript 工具包,支持 Next.js、React、Svelte、Vue、Angular 和 Node.js
- 安装要求 Node.js 22+,命令是
npm install ai - 提供统一的模型调用 API,默认走 Vercel AI Gateway,也支持通过
@ai-sdk/openai、@ai-sdk/anthropic、@ai-sdk/google直连 - 核心能力包括
generateText、Output.object结构化输出、ToolLoopAgentAgent 构建 - UI hooks 明确支持 Next.js、React、Svelte、Vue,框架对应的包类似于
@ai-sdk/react - 提供
npx skills add vercel/ai命令,用于给 Claude Code、Cursor 等编码代理添加 AI SDK 技能 - 项目提供官方模板和 Vercel Community 社区渠道,由 Vercel 与 Next.js 团队成员发起维护
README 没有明确回答的问题同样重要:
- 直连 Provider 与 Gateway 在功能上是否完全等价
- 不同 Provider 之间的工具调用、流式处理、结构化输出能力如何对齐
ToolLoopAgent的循环终止和错误处理策略openai.tools.localShell是否依赖 Vercel Sandbox,能否在任意 Node.js 环境使用- Angular 项目如何接入 UI hooks
对技术选型来说,AI SDK 的核心优势是它把模型接入、Agent 构建、UI 状态串联在同一个抽象层里,而且明确保留了直连 Provider 的路径。如果团队的目标是快速搭建一个支持多模型的 TypeScript AI 应用,这个工具包值得纳入评估。如果团队的核心诉求是彻底脱离 Vercel 生态,那需要先验证直连方式下的功能完整度,再决定是否引入这层抽象。