元数据能告诉我们什么

vercel/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」。这句话包含三个可核验的定位信息:语言边界是 TypeScript,形态是免费开源库,目标产物是 AI 应用与 Agent。

Topics 标签进一步暴露了项目的覆盖面:Provider 侧有 openai、anthropic、gemini;框架侧有 nextjs、react、svelte、vue;能力侧有 llm、language-model、generative-ai、generative-ui。标签不是架构文档,但它能反映维护者预期被检索到的使用场景。对选型者而言,这组标签的价值在于快速判断「我的技术栈是否在它的目标射程内」。

Provider 抽象:统一入口与直连两条路径

README 明确给出了两种接入方式。第一种是默认走 Vercel AI Gateway,直接传模型字符串:

const result = await generateText({
  model: 'anthropic/claude-opus-5.5',
  prompt: 'Hello!',
});

第二种是安装 Provider 包后直连:

import { anthropic } from '@ai-sdk/anthropic';

const result = await generateText({
  model: anthropic('claude-opus-5-5'),
  prompt: 'Hello!',
});

这两条路径对应不同的工程取舍。Gateway 路径省去逐个安装 Provider 包,适合快速验证和多模型切换;直连路径把 Provider 作为显式依赖引入,适合需要控制凭据、网络出口或 Provider 特定能力的场景。README 只展示了文本生成层面的统一,多 Provider 在工具调用、流式输出、结构化输出上的行为差异是否被完全抹平,资料未作说明,需要查源码与官方文档确认。

结构化输出与 Agent 的公开接口

结构化数据生成使用 Output.object 配合 zod schema,把模型输出约束为对象。这是把 LLM 接入既有 TypeScript 类型系统的关键机制:schema 即契约,输出可直接进入下游业务逻辑。

Agent 侧公开的是 ToolLoopAgent 类,构造时传入 model、system 和 tools。README 示例中工具来自 Provider 包,例如 openai.tools.localShell 与 openai.tools.imageGeneration。这说明工具定义与 Provider 能力存在耦合:某些工具是 Provider 特有的,而非 SDK 核心抽象。选型时需要确认自己依赖的工具是否只存在于某个 Provider 的命名空间下。

ToolLoopAgent 的循环终止条件、最大步数、错误重试策略等,README 未展开,属于必须读源码或 API Reference 才能确认的部分。

跨框架 UI 集成的实际形态

README 称 AI SDK UI 模块提供「framework agnostic」的 hooks,可用于 Next.js、React、Svelte 和 Vue,并按框架安装对应包,例如 @ai-sdk/react。示例中 useChat 返回 messages、status、sendMessage,消息体按 parts 数组组织,文本与工具调用是不同类型的 part。

服务端侧用 createAgentUIStreamResponse 把 Agent 与消息流对接,Next.js App Router 的 route handler 只是其中一种宿主。这意味着 UI 层与运行时是解耦的:hooks 负责状态与流消费,route 负责协议转换。对非 Next.js 项目,需要自行确认对应框架的适配包与流式响应写法,资料只给出了 React 侧的完整示例。

选型判断框架

基于以上公开事实,可以形成几条可执行的判断:

  1. 若项目是 TypeScript 且需要同时对接多家模型,统一 API 加 Gateway 默认路径能显著降低接入成本。
  2. 若项目重度依赖某个 Provider 的特有工具(如 shell、图像生成),应优先评估直连路径与 Provider 包的工具命名空间。
  3. 若前端使用 Svelte 或 Vue,hooks 的框架无关性是加分项,但需验证对应适配包的成熟度,README 示例集中在 React。
  4. 若需要精确控制 Agent 循环行为,ToolLoopAgent 的默认策略必须从源码确认,不能仅凭 README 推断。

边界声明

本文的事实来源限于仓库描述、Topics 标签与 README 正文。多 Provider 的行为一致性、Agent 循环的具体实现、各框架适配包的完整度,均未在资料中给出结论,属于需要进一步验证的范围。元数据适合做初筛,不适合替代对源码与官方文档的审查。