项目定位
vercel/ai 的官方描述很直接:The AI Toolkit for TypeScript,由 Next.js 创作者打造,目标是构建 AI 应用与 agent。README 说明该库由 Vercel 与 Next.js 团队成员创建,并接受开源社区贡献,话题标签覆盖 anthropic、openai、gemini、llm、language-model、generative-ui、nextjs、react、svelte、vue、typescript 等方向。
其自我定位中的关键词是 provider-agnostic:上层调用方式保持一致,模型来源可以替换。这决定了它和直接调用某一家 SDK 的写法有本质差别。
统一 Provider 层给了两条路
第一条是默认走 Vercel AI Gateway,只需传模型字符串,例如 model: 'anthropic/claude-opus-4.6',README 同时列出 'openai/gpt-5.4'、'google/gemini-3-flash' 等示例。
第二条是直连 provider SDK 包:npm install @ai-sdk/openai @ai-sdk/anthropic @ai-sdk/google,然后以 anthropic('claude-opus-4-6') 形式传入。官方明确说 AI SDK 为 OpenAI、Anthropic、Google 等 provider 提供统一 API。
对工程化而言,两条路的取舍很实际:默认 Gateway 让“换模型”退化为改一个字符串;直连 SDK 则把 provider 的版本与鉴权留在自己手里。官方并未在同一处对比两者的延迟、配额或计费,这部分属于需要自行验证的范围。
从文本到结构化输出
基础调用是 generateText。结构化数据同样走 generateText,但配合 Output.object 与 zod schema,示例直接生成一份含 name、ingredients、steps 的菜谱对象。也就是说,schema 校验被拉进调用参数,而不是让模型自由输出后再自行解析。
Agent 与工具
README 给出的 agent 原语是 ToolLoopAgent:构造时传 model、system、tools。示例工具为 openai.tools.localShell,其 execute 回调拿到 action.command,拆分出 cmd 与 args,交给 Vercel Sandbox 的 sandbox.runCommand 执行,再把 stdout 作为 output 返回。
能读到的事实是:工具定义、执行与结果回传被组织在同一构造结构内,沙箱本身由外部提供(示例中调用 getSandbox())。工具循环在哪一层收敛、超时与错误如何传播,README 未展开,需要回到源码或文档确认。
UI 接入与框架差异
AI SDK UI 提供一组 hooks 用于构建聊天机器人与生成式 UI,官方强调这些 hooks 是 framework agnostic,可用于 Next.js、React、Svelte、Vue。用哪套 UI 就装对应包,例如 npm install @ai-sdk/react。
一个 Next.js App Router 的完整链路是:agent 文件导出 ToolLoopAgent 实例与 InferAgentUIMessage 推导出的消息类型;route 的 POST 解析 messages 后调用 createAgentUIStreamResponse({ agent, messages });视图组件以 UIToolInvocation 为 props 类型,按 invocation.state 分支渲染,'input-available' 显示生成中,'output-available' 渲染返回图像;页面用 'use client' 加 useChat,遍历 message.parts,按 part.type 分流 'text' 与 'tool-generateImage'。
几点值得注意:
- 顶层介绍把 Angular 与 Node.js 一并列为可用的 UI 框架与运行时,而 UI hooks 一段只点名 Next.js、React、Svelte、Vue。Angular 场景下 hooks 的可用性,README 在这段没有给出结论。
- 官方单独说明需按框架安装对应包,说明抽象落在 hooks 层,而非 UI 组件层——生成式 UI 的组件仍由开发者按框架自己写。
- route 示例函数名为
createAgentUIStreamResponse,说明 agent 的 UI 输出以流式响应形式从服务端发出;具体协议与增量语义需查文档。 InferAgentUIMessage与UIToolInvocation让工具调用状态在 TS 中可被穷举,这是跨框架项目里的公共类型约定。
选型检查清单(工程分析,非官方结论)
- 技术栈是 React / Next.js 时,官方示例、模板与文档密度最高,接入成本最低。
- Vue 或 Svelte 场景,hooks 可用且存在对应框架包,但端到端示例是 Next.js,非 React 路径需要更多自行验证。
- 必须使用某家 provider 私有能力时,统一 API 是抽象,也可能成为不透明的边界;官方保留的
@ai-sdk/*直连路径可以作为兜底。 - 涉及 agent 与代码执行时,示例依赖外部沙箱,权限、产物与超时策略属于使用方的工程责任,而非 SDK 提供。
- 生产前应核对:流式响应的中断与重连语义、多 provider 差异被统一 API 抹平的程度、工具循环的错误传播路径、以及 Angular 等未出现在 hooks 段落中的框架支持状态。
上手路径
README 要求 Node.js 22+ 与 npm 或其他包管理器,npm install ai 即可开始。若团队使用 Claude Code、Cursor 一类编码 agent,官方建议执行 npx skills add vercel/ai 把 AI SDK skill 加进仓库;官方还提供了覆盖不同用例、provider 与框架的 templates 供起步对照。
来源:https://github.com/vercel/ai(官方页面标题 AI SDK,发布时间 2026-09-20)