【AI入门最佳实践】Vercel AI SDK 深度解读:一个让你告别 Provider 锁死的 TypeScript 神器
如果每换一次大模型,你的代码就要来一场"伤筋动骨"的重构,那你需要的不是更好的模型,而是一个靠谱的中间层。一、先讲个鬼故事想象一下这个场景:你花了两周时间,用 OpenAI 的 API 搭了一个聊天应用。提示词精心调过、工具调用链路跑通了、流式输出也丝般顺滑。然后老板走进来说:「客户要求换成 Claude,下周演示。」你打开代码仓库,发现 37 个文件里散落着openai.chat.completions.create。那一刻的心情,大概跟发现昨天没保存的文档被自动更新干掉了一模一样。这就是 Vercel AI SDK 要解决的问题。二、Vercel AI SDK 是什么Vercel AI SDK是一个TypeScript 工具包,专门为在 React、Next.js、Vue、Svelte、Node.js 等框架中构建 AI 应用而设计。它把市面上几十个模型提供商(OpenAI、Anthropic、Google、xAI、DeepSeek、Mistral……)的 API 差异全部吞掉,吐出一套统一的接口。换 Provider = 改一行字符串不是比喻,是字面意义上的一行字符串:import { generateText } from "ai"; // 用 Claude const { text } = await generateText({ model: "anthropic/claude-sonnet-4.5", prompt: "What is love?", }); // 想换 Gemini?改这一行就行 // model: "google/gemini-2.5-flash",看到没?"anthropic/claude-sonnet-4.5"变成"google/gemini-2.5-flash"就是全部改动。你不必关心 Anthropic 的 Messages API 跟 Google 的 generateContent 有啥区别——SDK 都替你吃掉了。整套 SDK 分两大核心库:库定位关键词AI SDK Core后端 / 服务端generateText、streamText、结构化输出、Tool CallingAI SDK UI前端 / 客户端useChat、useCompletion、useObject下面逐一拆解。三、AI SDK Core:不只是「调一下模型」AI SDK Core 是整个生态的地基。它不止于「发 prompt、收文本」,而是把现代 LLM 应用的几个核心需求都做成了开箱即用的 API。3.1 文本生成:generateText vs streamTextCore 提供两种文本生成方式:generateText:非交互场景(邮件草稿、网页摘要、自动化任务)。等模型跑完,一次性拿结果。streamText:交互场景(聊天机器人、内容实时展示)。边生成边往下游吐 token。// 非流式:适合批量处理 import { generateText } from "ai"; const { text } = await generateText({ model: "anthropic/claude-sonnet-4.5", system: "你是一个专业写手,回复简洁明了。", prompt: `用 3-5 句话总结这篇文章:${article}`, });// 流式:适合聊天场景 import { streamText } from "ai"; const result = streamText({ model: "anthropic/claude-sonnet-4.5", prompt: "发明一个新节日,描述它的传统。", }); for await (const textPart of result.textStream) { console.log(textPart); }streamText的返回值还内建了toUIMessageStreamResponse()、pipeUIMessageStreamToResponse()等方法,跟 Next.js App Router 的 API Route 能无缝对接。