Vercel AI SDK 6 完整教程系列 - 第一部分:基础入门篇
摘要:Vercel AI SDK 6通过统一抽象层解决了切换不同AI模型时需要重写代码的痛点。开发者只需简单修改模型参数,即可无缝切换OpenAI、Anthropic等不同AI服务,无需调整业务逻辑代码。文章演示了如何使用该SDK快速实现文本生成和流式输出功能,并预告了后续将介绍的结构化数据提取和工具调用等高级特性。这套工具大幅降低了AI应用开发门槛,让开发者能更专注于解决实际问题而非技术适配。
凌晨三点,我盯着屏幕上那行报错信息,心里只有一个念头:为什么切换个 AI 模型,就得重写半个项目?
这大概是每个做过 AI 应用的开发者都经历过的噩梦。上周还在用 GPT-4,这周老板说要省成本换成 Claude,你打开代码一看,API 调用方式完全不一样,错误处理逻辑也得推倒重来。改到第三天,你开始怀疑人生:我到底是在做产品,还是在给各家 AI 公司打工?
直到我遇到了 Vercel AI SDK 6。
那些年,我们踩过的坑
说实话,早期做 AI 开发的时候,我特别喜欢直接用官方 SDK。OpenAI 的 openai 包, Anthropic 的 @anthropic-ai/sdk,看起来很专业对吧?写起来也顺手。
问题是,这种“专业”是有代价的。
有次客户突然说要测试一下 Claude 的效果,我信心满满地说“没问题,一天搞定”。打开代码才发现,光是把 OpenAI 的流式响应改成 Anthropic 的格式,就花了整整一个下午。更别提那些细碎的差异:有的返回 content,有的返回 text;有的错误码是数字,有的是字符串
改完之后我就在想,这不对劲啊。都 2026 年了,为什么我还在干这种体力活?
一套代码,切换自如
Vercel AI SDK 6 的核心思路特别简单:既然每家 AI 公司的接口都不一样,那我就做一层统一的抽象。
听起来很技术对吧?但用起来的感觉就是——爽。
你看这段代码:
import { generateText } from 'ai';
import { openai } from '@ai-sdk/openai';
const { text } = await generateText({
model: openai('gpt-4o'),
prompt: '写一首关于代码的诗',
});
如果哪天你想换成 Claude,只需要改两行:
import { anthropic } from '@ai-sdk/anthropic';
const { text } = await generateText({
model: anthropic('claude-3-5-sonnet-20240620'),
prompt: '写一首关于代码的诗',
});
其他代码一个字都不用动。这种感觉就像你买了一台万能遥控器,不管家里换什么牌子的电视,遥控器都能用。
我第一次体验到这种丝滑的时候,内心是震撼的。这才是 2026 年该有的开发体验。
动手试试,别光看
理论说得再多,不如自己写一遍。我们从最简单的开始。
创建一个新项目,装几个包:
mkdir ai-sdk-starter
cd ai-sdk-starter
npm init -y
npm install ai @ai-sdk/openai dotenv typescript tsx -D
在根目录建个 .env 文件,把你的 OpenAI API Key 扔进去:
OPENAI_API_KEY=sk-你的密钥
创建 index.ts,写下你的第一个 AI 程序:
import { generateText } from 'ai';
import { openai } from '@ai-sdk/openai';
import dotenv from 'dotenv';
dotenv.config();
async function main() {
const { text, usage } = await generateText({
model: openai('gpt-4o'),
prompt: '用一句话解释什么是 Vercel AI SDK',
});
console.log('AI 说:', text);
console.log('花了多少 Token:', usage);
}
main().catch(console.error);
运行一下:npx tsx index.ts
你会看到 AI 的回答直接打在终端上。就这么简单。
这时候你可能会想,这不就是调个 API 吗,有什么稀奇的?别急,好戏在后面
让文字一个个蹦出来
你肯定用过 ChatGPT 对吧?那种文字一个个往外蹦的感觉,特别有“AI 在思考”的氛围感。这就是流式传输。
用传统方式实现流式传输,你得处理一堆 EventSource、ReadableStream,还要考虑各种边界情况。但在 AI SDK 里,这事儿简单到让人不敢相信。
把刚才的代码改成这样:
import { streamText } from 'ai';
import { openai } from '@ai-sdk/openai';
import dotenv from 'dotenv';
dotenv.config();
async function main() {
const result = streamText({
model: openai('gpt-4o'),
prompt: '写一首关于程序员的打油诗',
});
for await (const chunk of result.textStream) {
process.stdout.write(chunk);
}
console.log('
--- 写完了 ---');
}
main().catch(console.error);
再跑一次,这回你会看到诗句是一个字一个字“打”出来的。这种即时反馈感,就是现代 AI 应用的标配。
我第一次写出这个效果的时候,还特意录了个屏发给朋友炫耀。他回了一句:“就这?”我说:“就这,五分钟搞定的。”
这只是开胃菜
到这里,你已经学会了让 AI “说话”。但实际开发中,我们要的可不只是聊天。
有时候你需要 AI 返回结构化数据,比如从一段文字里提取姓名、电话、地址,还得是标准的 JSON 格式。有时候你需要让 AI 调用外部工具,比如查天气、搜数据库、发邮件。
这些才是 AI 应用的核心能力。纯聊天只是表面,真正的价值在于让 AI 成为你的“数字员工”,能干活、能决策、能跟现实世界交互。
下一篇教程,我会带你深入这些高级功能。我们会用 Zod Schema 强制 AI 输出结构化数据,再也不用写那些脆弱的正则表达式去解析回复;我们还会实现 Tool Calling,让你的 AI 长出“双手”,能够真正做事。
说到这,我突然想起上个月帮朋友做的一个项目。他们公司每天要处理几百封客户邮件,人工分类累得要死。我用 AI SDK 写了个小工具,让 AI 自动提取邮件里的关键信息(订单号、问题类型、紧急程度),然后调用他们的工单系统自动创建任务。
整个开发过程不到两天,上线之后客服团队直接给我发了个大红包。那一刻我才真正理解,AI 不是用来炫技的,是用来解决真实问题的。
写在最后
Vercel AI SDK 6 不是什么黑科技,它只是把复杂的事情变简单了。统一 API、流式传输、工具调用,这些能力本来就存在,只是以前你得自己拼凑。
现在有人帮你把积木搭好了,你只需要专注于做产品。
如果你是刚入门的开发者,这套工具能让你快速上手,不用被各种技术细节绊住脚。如果你是老手,它能帮你省下大把时间,把精力放在真正有价值的地方。
下一篇见,我们聊点更实战的东西。
更多推荐


所有评论(0)