Vercel AI SDK:一个 TypeScript 工具包,抹平所有 LLM provider 的差异
写 AI 应用还在手写 fetch 调用各种模型 API?代码写得又丑又难维护?
Vercel 出了一个 AI SDK(npm 包名 ai),把市面上主流的 LLM 提供商(OpenAI、Anthropic、Google 等)统一成一套 TypeScript 接口,写一次,换模型不用改业务逻辑。
这东西解决什么问题?
做 AI 应用最烦的就是 provider 切换——今天用 OpenAI,明天想换 Anthropic,后天又要接 Google。手写 SDK 调用的代码散落在各处,换一个 provider 基本上等于重构。
AI SDK 干的事情很简单:给所有 provider 包装一层统一抽象,你用同一套 API 调 generateText、streamText,provider 随便换,代码不用动。
核心能力一览:
- 文本生成:
generateText/streamText,支持流式和非流式 - 结构化输出:不用担心 JSON 解析问题,SDK 帮你搞定
- 工具调用(Tool Calling):LLM 触发工具执行,不用自己写调用循环
- Agent 构建:内置
ToolLoopAgent,比手写 while 循环靠谱得多 - Embeddings:向量嵌入,一行代码
- 框架集成:React(
useChat、useCompletion)、Svelte、Vue 都有官方 hooks
怎么上手
最快的方式是配合 Vercel AI Gateway——一个聚合了所有主流模型的网关,一个 API Key 访问所有 provider:
# 设置环境变量
export AI_GATEWAY_API_KEY=xxx
# 然后代码里直接用 provider/model 字符串
const result = await generateText({
model: 'anthropic/claude-3-5-sonnet',
prompt: '写一个 hello world',
})
不用装每个 provider 的包,Gateway 全帮你搞定。
选模型别用硬编码
这是 SDK 文档里特别强调的一点:模型 ID 天天变,别从记忆里写。
每次写代码前先拉最新的模型列表:
# 拉所有可用模型
curl -s https://ai-gateway.vercel.sh/v1/models | jq -r '.data[].id'
# 只看 anthropic 的
curl -s https://ai-gateway.vercel.sh/v1/models | jq -r '[.data[] | select(.id | startswith("anthropic/")) | .id]'
模型版本号也是越高越新,优先选最新版。
开发调试用 DevTools
AI SDK 带了一个 DevTools,专门用来调试 AI 调用——请求、响应、工具调用、token 消耗,全部记录下来,看得清清楚楚。装上之后开发体验直接提升一个档次。
适合谁用
- 正在做 AI 应用后端的开发者
- 想统一管理多个 LLM provider 的团队
- 需要流式输出、工具调用的复杂 Agent 场景
不适合纯前端(如果你的”AI 功能”只是调 API 的话直接用 SDK 也行),但如果你的项目涉及流式 UI、Agent 逻辑、多 provider 切换,这套东西值得花半天时间学一下。
GitHub 仓库里附带了完整的 SKILL.md,集成到 Claude Code、Cursor 等主流 coding agent 里直接就能用。
GitHub: https://github.com/vercel/ai
Stars: 21,608
文档: https://ai-sdk.dev/docs
GitHub: https://github.com/vercel/ai
评论区
登录后可评论。