模型 / 数据集
vercel/ai avatar
vercel/ai

AI SDK 7:TypeScript 生成式 AI 应用的工具箱,统一层之下仍有取舍

The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and agents

26,761 个 Star5,141 个 ForkTypeScriptNOASSERTION

秒懂

它是什么?
Vercel 出品的 AI SDK 为 TypeScript 开发者提供了一套统一的模型调用、结构化输出和 UI 集成方案。本文基于其 README 与仓库信息,分析它的核心机制、适用场景与真实边界。
适合谁用?
AI SDK 适合那些需要快速接入多家模型提供商、且重度使用 React、Next.js 或 Svelte 的 TypeScript 团队。它把模型调用、结构化输出和 UI 状态管理压缩成少量 API,能显著减少样板代码。
能商用吗?
请先确认。这个仓库使用的许可证不在我们自动归类的范围内,商用前请阅读仓库里的 LICENSE 文件。
还在维护吗?
在维护。仓库在最近一天内有新的提交。
用什么语言写的?
主要是 TypeScript(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

它解决什么问题,谁该看

AI SDK 的目标是把多家模型提供商的差异封装在同一个 TypeScript 接口后面。你不需要为 OpenAI 学一套调用方式,再为 Anthropic 学另一套。README 中的例子显示,只需传入一个模型字符串,比如 'anthropic/claude-opus-4.6',就能调用 generateText。它同时支持 OpenAI、Anthropic、Google 等主流提供商,并覆盖 React、Svelte、Vue 和 Next.js。适合的人群是那些正在构建聊天机器人、生成式 UI 或 agent 应用的 TypeScript 开发者,尤其是已经身处 Next.js 生态的人。它不是给想自己实现传输层或协议细节的底层库使用者准备的。

从 generateText 到 agent:核心机制

整个库围绕几个高层函数展开。generateText 负责最基础的文本生成,它接受模型标识和提示词,返回文本。更值得注意的是 Output 对象,配合 zod schema,你可以直接获得结构化数据,而不是自己解析模型返回的 JSON。这省去了大量容易出错的胶水代码。再往上走,仓库里展示了 ToolLoopAgent,它把工具调用循环封装成类。你给它一个 system 提示、一组 tools,它就能自主决定何时调用工具、如何处理结果。README 里的本地 shell 工具示例展示了一个 agent 如何执行命令并返回输出。这套设计把 agent 的常见模式,即模型与工具之间的多轮交互,固化成了声明式配置。

UI 集成:从流式响应到组件渲染

AI SDK 的 UI 模块是它区别于纯模型封装库的关键。@ai-sdk/react 提供了 useChat 这样的 hooks,框架无关,但每个框架需要单独安装包。README 中展示了一个完整的图像生成 agent 示例,从服务端路由到客户端组件。服务端用 createAgentUIStreamResponse 把 agent 的输出转成流式响应,客户端用 useChat 接收消息,并根据消息 parts 的类型渲染不同组件。这个流程把 tool invocation 的状态,比如 input-available 和 output-available,直接映射到 UI 状态。对开发者来说,这意味着不用自己维护消息历史、状态机和流解析。但代价是,你需要按照它规定的消息格式来组织数据,自定义程度受限。

安装与第一个例子:真实命令

环境要求明确写在 README 里:Node.js 22 以上,npm 或其他包管理器。安装核心库只需一条命令:npm install ai。如果你不想走默认的 Vercel AI Gateway,而是直连提供商,那就需要额外安装对应的包,比如 npm install @ai-sdk/openai @ai-sdk/anthropic @ai-sdk/google。之后你可以这样写:import { anthropic } from '@ai-sdk/anthropic'; 然后调用 generateText,model 参数传 anthropic('claude-opus-4-6')。注意 README 里的两个示例,一个用字符串 'anthropic/claude-opus-4.6',一个用函数 anthropic('claude-opus-4-6'),两者都出现,说明 API 既支持通过 Gateway 的模型字符串,也支持直接实例化。你的选择会影响网络路径和依赖数量。

默认走 Gateway:便利背后的约束

README 明确说,默认情况下 AI SDK 使用 Vercel AI Gateway 来访问所有主要提供商。你只需传一个模型字符串,比如 'openai/gpt-5.4',SDK 会通过 Gateway 路由。这对快速原型非常方便,省去了配置多个 API key 和端点的麻烦。但这也意味着你的请求会经过 Vercel 的服务器,而不是直连 OpenAI 或 Anthropic。对于有数据驻留要求或合规限制的企业,这可能是个问题。如果你选择直接连接,就必须安装并维护多个 @ai-sdk/provider 包,每个包都有自己的版本生命周期。Gateway 是便利,但也是第三方依赖,你的应用可用性部分取决于 Vercel 的服务状态。

版本分裂与升级风险

仓库的 releases 页面同时存在 ai@7.0.95、ai@6.0.279 和 ai@5.0.254 三个版本线,且都在同一天更新。这种多版本并行维护的模式暗示 API 仍在快速演进,可能不向后兼容。对采用者来说,这不是小问题。你从 README 看到的例子可能只对应某个主版本,比如 7.x 中的 ToolLoopAgent,而 5.x 或 6.x 的 API 可能完全不同。锁定版本是必须的,但锁定也意味着你无法轻易获得新功能或安全修复。升级时你需要阅读 changelog,可能还要改动调用代码。相比那些 API 稳定多年的库,AI SDK 的维护成本更高,尤其当你的项目生命周期较长时。

替代方案:直接使用官方 SDK 或自建抽象

如果你只需要一个提供商,比如只用 OpenAI,那么直接使用 openai 的官方 TypeScript SDK 是更直接的路径。它没有中间层,API 完全贴合 OpenAI 的特性,新功能支持也通常更快。AI SDK 的价值在于统一,但统一必然带来抽象损失。另一个方向是自建一个轻量封装,只封装你实际用到的几个端点,比如 chat completions 和 embeddings。这样你完全控制请求格式、错误处理和重试逻辑。代价是你需要自己处理流式解析、工具调用循环和 UI 状态同步,这些正是 AI SDK 替你解决的问题。选择哪个,取决于你愿意为抽象付出多少灵活性。

维护与许可证:需要留意的点

仓库的许可证字段是 NOASSERTION,这意味着 GitHub 无法自动识别其许可证类型。在写这篇文章时,我无法从仓库元数据确认它是否是开源许可证,比如 MIT 或 Apache 2.0。README 中称其为 free open-source library,但具体条款需要查看仓库内的 LICENSE 文件。这对商业采用者是个关键点,你不能假设它允许任意使用。维护方面,项目由 Vercel 主导,贡献指南存在,社区论坛也开放。但考虑到版本线众多,且每个版本都在频繁发布,你需要在依赖管理中设置精确版本,并规划定期的升级周期。

编辑结论

AI SDK 适合那些需要快速接入多家模型提供商、且重度使用 React、Next.js 或 Svelte 的 TypeScript 团队。它把模型调用、结构化输出和 UI 状态管理压缩成少量 API,能显著减少样板代码。但如果你对底层请求有精细控制需求,或者依赖非官方模型提供商的特殊能力,统一抽象反而可能成为障碍。若你的项目仅使用单一模型且无 UI 交互,直接使用官方 SDK 或许更轻。采用前应重点验证:Node.js 22 环境是否满足,Vercel AI Gateway 作为默认通道是否符合你的数据合规要求,以及 output 与 agent 相关 API 是否已稳定到你的生产标准。就仓库当前状态而言,AI SDK 的迭代速度和版本分支(5、6、7 并存)要求你明确锁定版本,否则升级成本可能超出收益。

官方来源

  1. Issues
  2. Project website
  3. README
  4. Releases
  5. vercel/ai on GitHub
社区笔记

社区笔记