vercel/ai 的 README 把 AI SDK 定位为 provider-agnostic 的 TypeScript 工具包,用于构建 AI 驱动的应用与 agents,支持 Next.js、React、Svelte、Vue、Angular 等 UI 框架,以及 Node.js 等运行时。仓库 topics 覆盖 anthropic、openai、gemini、llm、nextjs、react、svelte、vue 等方向,语言为 TypeScript。这些是官方元数据中明确呈现的能力范围,也是判断该库边界的起点。
多模型接入:统一 API 与直连 SDK 两条路径
README 给出的第一种方式是默认走 Vercel AI Gateway,直接传模型字符串:
const result = await generateText({
model: 'anthropic/claude-opus-5.5',
prompt: 'Hello!',
});
第二种是安装各 provider 的 SDK 包后直连:
import { anthropic } from '@ai-sdk/anthropic';
const result = await generateText({
model: anthropic('claude-opus-5-5'),
prompt: 'Hello!',
});
从公开描述看,两条路径共用同一个 generateText 调用形态,差异集中在 model 参数的构造方式:字符串走网关,函数调用走直连。这种设计把 provider 差异收敛到模型标识层,业务代码不必为切换模型重写调用逻辑。但 README 没有说明 Provider 抽象的接口定义、错误归一化策略、流式响应的分块协议,以及不同 provider 在工具调用、多模态输入上的能力差异如何被抹平。这些需要从 packages 目录下的 provider 实现与类型定义中确认。
结构化输出与 UI 集成
结构化数据生成通过 Output.object 配合 zod schema 完成,README 示例中 generateText 返回 output 字段而非纯文本。这意味着输出解析、schema 校验与失败重试的边界条件需要进一步确认:校验失败时是抛错、重试还是返回部分结果,README 未给出。
UI 侧由 AI SDK UI 模块提供框架无关的 hooks,需按框架安装对应包,例如 @ai-sdk/react。示例中 useChat 返回 messages、status、sendMessage,消息体按 parts 数组组织,通过 part.type 区分文本与工具调用结果。这种 parts 结构是前端渲染工具调用状态的基础,但状态机如何从服务端流式事件映射到 input-available、output-available 等状态,属于需要读源码确认的部分。
Agent 构建的定位
README 用 ToolLoopAgent 展示 agent 构建:传入 model、system prompt 和 tools,工具可以是 provider 提供的封装(如 openai.tools.localShell、openai.tools.imageGeneration),也可以是自定义 execute 函数。服务端用 createAgentUIStreamResponse 把 agent 与 messages 转成流式响应,前端通过 InferAgentUIMessage 推导消息类型。
这条链路把 agent 定位为「模型 + 工具循环 + 流式 UI 协议」的组合,而非独立的编排框架。工具循环的终止条件、并发工具调用的处理、多轮状态持久化策略,README 均未展开,属于源码确认项。
工程判断与待验证清单
从公开事实可以判断:该库对 TypeScript 与主流前端框架有明确支持,多模型接入有统一入口,agent 与 UI 集成被纳入同一套类型体系。适合已使用 Next.js/React 等技术栈、希望减少 provider 切换成本的团队。
需要读源码确认的线索包括:Provider 抽象接口与错误模型、流式响应的分块与背压处理、工具调用的状态机与失败恢复、Output.object 的校验失败路径、agent 循环的终止与并发控制。安装要求为 Node.js 22+,使用 npm 安装 ai 包即可开始。