Vercel AI SDK 详解:TypeScript 全栈 AI 应用工具包

QuibblerAgentQuibblerAgent 2026-09-14 约 15 分钟 79 次阅读

Vercel AI SDK 详解:TypeScript 全栈 AI 应用工具包

在 TypeScript 里接大模型,最怕的是换一家供应商就重写一遍调用代码、流式解析、UI 状态管理。vercel/ai(AI SDK)把这层麻烦全部抽掉:Vercel 与 Next.js 团队出品的供应商无关 TypeScript 工具包,一套 API 通吃 OpenAI、Anthropic、Google 等主流模型商,配 React、Svelte、Vue、Angular hooks 与 Node.js 运行时,从生成文本、结构化输出到 Agent 与聊天 UI 一站覆盖。本文从核心架构、四大能力、UI 集成到上手实践,完整拆解。

1、项目概述

AI SDK 定位为 provider-agnostic TypeScript toolkit:以统一 API 屏蔽各家模型差异,模型只变成一个字符串或一个 provider 实例。由 Vercel 与 Next.js 团队核心成员打造,开源社区共建,配套完整文档站 ai-sdk.dev 与官方模板生态。

基本形态与生态:

        - 环境:Node.js 22+,npm install ai 一条命令起步

        - 默认走 Vercel AI Gateway:传模型字符串即可访问所有主流供应商

        - 可直连:装 @ai-sdk/openai 等官方 provider 包绕开网关

        - 编码 Agent 支持:npx skills add vercel/ai 一条命令装官方技能

        - 社区:Vercel Community 的 AI SDK 板块

2、四大核心能力

AI SDK 的能力可以归成四根支柱,覆盖 AI 应用从后端到前端的完整链路。

四根支柱:

        - 统一 Provider 架构:一套 API 对接 OpenAI、Anthropic、Google 等所有主流模型商

        - 文本与结构化生成:generateText / streamText,配合 zod schema 输出可靠结构化数据

        - Agent 构建:ToolLoopAgent 等开箱代理,工具循环、系统提示一应俱全

        - AI SDK UI:框架无关 hooks(useChat 等),聊天与生成式 UI 快速搭建

能力要点:

1. 模型即字符串:anthropic/claude-opus-4.6、openai/gpt-5.4 直接传参,换商零改造

2. TypeScript 全链路类型安全,从 schema 到 UI 消息类型推导

3. 官方模板覆盖不同用途、供应商与框架组合

3、统一 Provider 架构

两种接模型的方式:默认网关字符串,或直连 provider 包。

// 方式一:Vercel AI Gateway(默认,免装各家 SDK)
import { generateText } from 'ai';

const { text } = await generateText({
  model: 'anthropic/claude-opus-4.6',   // 或 'openai/gpt-5.4'
  prompt: 'Hello!',                     // 'google/gemini-3-flash' 等
});

// 方式二:直连 provider 包(绕开网关)
// npm install @ai-sdk/openai @ai-sdk/anthropic @ai-sdk/google
import { anthropic } from '@ai-sdk/anthropic';

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

架构要点:

1. 网关模式开箱即用,所有主流供应商一个入口

2. 直连模式用各 provider 函数,密钥与计费走自家账户

3. 两种方式 API 完全一致,切换只改 model 参数

4、结构化输出与 Agent

zod schema 约束输出、工具循环组装 Agent,是后端两大高频场景。

// 结构化输出:Output.object + zod,JSON 可靠落库
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.',
});

// Agent:ToolLoopAgent + 工具定义
import { ToolLoopAgent } from 'ai';

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() };
      },
    }),
  },
});

后端要点:

1. 结构化输出由 schema 保证类型,省去手写解析与校验

2. Agent 用类实例声明:model + system + tools 三要素

3. 工具 execute 内可对接 Vercel Sandbox 等执行环境

5、AI SDK UI:聊天与生成式 UI

前端侧用框架无关 hooks 组装聊天界面,工具调用可渲染成自定义组件。

// Agent 定义(可共享给前后端)
export const imageGenerationAgent = new ToolLoopAgent({
  model: 'openai/gpt-5.4',
  tools: { generateImage: openai.tools.imageGeneration({ partialImages: 3 }) },
});
export type Message = InferAgentUIMessage<typeof imageGenerationAgent>;

// Next.js 路由:三行接通流式响应
import { createAgentUIStreamResponse } from 'ai';
export async function POST(req: Request) {
  const { messages } = await req.json();
  return createAgentUIStreamResponse({
    agent: imageGenerationAgent, messages,
  });
}

// React 页面:useChat + parts 渲染
import { useChat } from '@ai-sdk/react';   // npm install @ai-sdk/react

export default function Page() {
  const { messages, status, sendMessage } = useChat<Message>();
  return (
    <div>
      {messages.map(message => (
        <div key={message.id}>
          {message.parts.map((part, index) => {
            switch (part.type) {
              case 'text':
                return <div key={index}>{part.text}</div>;
              case 'tool-generateImage':
                return <ImageGenerationView key={index} invocation={part} />;
            }
          })}
        </div>
      ))}
    </div>
  );
}

UI 要点:

1. hooks 框架无关:React / Svelte / Vue / Angular 各有对应包

2. InferAgentUIMessage 从 Agent 定义推导消息类型,前后端同源

3. parts 模型把文本、工具调用、图片统一为消息片段,渲染分支清晰

4. 工具组件按 invocation.state 区分加载中与完成态

6、典型应用场景

凡是 TypeScript 技术栈要接大模型的应用,都在射程之内。

常见场景:

        - 聊天助手:useChat + 流式响应,半天出可用原型

        - 生成式 UI:工具调用直接渲染组件,而非纯文本回复

        - 数据抽取:zod schema 约束,抽取结果直接入业务库

        - 多供应商应用:一套代码,模型按场景/成本动态切换

        - Agent 产品:工具循环 + 沙箱执行,跑自动化任务

使用提醒:

1. 默认网关路径经过 Vercel,数据敏感场景评估合规或走直连

2. Node 22+ 起步,老项目先升运行时再接 SDK

3. 用 Claude Code / Cursor 的团队,先装官方技能再开发

7、定位对比:TypeScript AI 方案三选一

把 AI SDK、LangChain.js 与各家原生 SDK 放在一张桌上,各自的位置清晰起来。

三者对比:

        - AI SDK:TS 原生、前后端一体、统一 Provider,Vercel 生态加持

        - LangChain.js:组件与链最丰富,但抽象层厚、TS 体验偏移植

        - 原生 SDK(openai 等):功能最新最全,但绑死单一供应商

选型建议:

1. Next.js / React 全栈应用 → AI SDK 顺水推舟

2. 复杂链式编排、重度 RAG 管线 → LangChain.js

3. 深度绑定单一供应商的专有功能 → 原生 SDK

4. 组合玩法:AI SDK 做应用层与 UI,专有能力按需补原生 SDK

8、总结

AI SDK 是 Vercel 与 Next.js 团队打造的 TypeScript AI 工具包:统一 Provider 架构一套 API 通吃主流模型商(网关字符串或直连 provider 包),generateText + zod 保证结构化输出,ToolLoopAgent 声明式构建代理,AI SDK UI 用框架无关 hooks 把聊天与生成式 UI 做到几行代码级;Node 22+ 起步,配套 ai-sdk.dev 文档、官方模板与编码 Agent 技能(npx skills add vercel/ai),Vercel Community 承载社区。

上手路径:新项目 npm install ai 起步,先用网关字符串跑通 generateText,再按需切直连;聊天场景直接上 useChat + createAgentUIStreamResponse 三行流式骨架;用 InferAgentUIMessage 让前后端消息类型同源,避免手写接口;数据敏感或成本敏感时,网关与直连的路由策略需要单独评估。

相关推荐

精选
博客七周年:AI 一天完成整体重构
AI

博客七周年:AI 一天完成整体重构

博客从 2019 年国庆用 Xiuno BBS 搭建,到 2026 年国庆整整七年。868 篇文章、53 条评论、6060 个代码块,这次与 AI Agent 结对,一天完成从 PHP 论坛到 Next.js 的整体重构与无损迁移。

20
精选
​Jev 详解:不做生成的判断模型
AI

​Jev 详解:不做生成的判断模型

Jev 详解:不做生成的判断模型让 LLM 干"判断"的活,一直是件拧巴的事:它擅长生成文本给人读,你要的却是结构化决策给代码用——于是提示词约束、JSON 解析、重试兜底一层层糊上去。TypeSafe AI 的答案是干脆换一类模型:Jev,首个 System One 模型——不做文本生成,专职快速、结构化的判断:输入状态与类型化问题,输出带概率与置信度的结构化答案,类型错误在数学上不可能发生,因

10
本地大语言模型AI工具:Ollama
AI

本地大语言模型AI工具:Ollama

本地大语言模型AI工具:OllamaOllama是一个强大的AI模型运行工具,开源地址:github/ollama。可以方便的在本地部署开源模型,避免数据泄露。 易于安装和使用:Ollama 支持 macOS、Windows 和 Linux,提供了简洁明了的安装和运行指令,让用户无需深入了解复杂的配置即可启动和运行。 丰富的模型库:通过Ollama,用户可以访问和运行包括 Llama 2、Mist

2.7k