凌晨三点,我盯着屏幕上那行报错信息,心里只有一个念头:为什么切换个 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 在思考”的氛围感。这就是流式传输。

用传统方式实现流式传输,你得处理一堆 EventSourceReadableStream,还要考虑各种边界情况。但在 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、流式传输、工具调用,这些能力本来就存在,只是以前你得自己拼凑。

现在有人帮你把积木搭好了,你只需要专注于做产品。

如果你是刚入门的开发者,这套工具能让你快速上手,不用被各种技术细节绊住脚。如果你是老手,它能帮你省下大把时间,把精力放在真正有价值的地方。

下一篇见,我们聊点更实战的东西。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐