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 调 generateTextstreamText,provider 随便换,代码不用动。

核心能力一览:

  • 文本生成generateText / streamText,支持流式和非流式
  • 结构化输出:不用担心 JSON 解析问题,SDK 帮你搞定
  • 工具调用(Tool Calling):LLM 触发工具执行,不用自己写调用循环
  • Agent 构建:内置 ToolLoopAgent,比手写 while 循环靠谱得多
  • Embeddings:向量嵌入,一行代码
  • 框架集成:React(useChatuseCompletion)、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

评论区

0 条评论

登录后可评论。

陈一铭 11 阅读