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-availableoutput-available)渲染不同内容,页面组件用 useChatsendMessage 处理交互。

这个完整链路是官方 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 直连
  • 核心能力包括 generateTextOutput.object 结构化输出、ToolLoopAgent Agent 构建
  • 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 生态,那需要先验证直连方式下的功能完整度,再决定是否引入这层抽象。