Vercel AI SDK
扫码查看

用于构建AI应用程序的TypeScript工具包

Vercel AI SDK

综合介绍

Vercel AI SDK 是一个免费的开源软件库,由 Next.js 的开发团队 Vercel 推出。它专门为 TypeScript 和 JavaScript 开发者设计,旨在简化构建 AI 驱动的用户界面和应用的过程。这个工具包的核心优势在于提供了一个统一的API接口,让开发者可以轻松地在不同的AI模型提供商(如 OpenAI、Anthropic、Hugging Face 等)之间切换,而无需重写大量代码。它不仅支持流式生成文本响应,提升了用户体验,还能生成结构化的JSON数据,甚至动态的用户界面组件。该工具包可以与 React、Next.js、Vue 和 Svelte 等多种主流前端框架无缝集成,让开发者能更专注于创造富有吸引力的AI功能,而不是处理底层复杂的API集成工作。

功能列表

  • 统一的API接口:提供标准化的API,只需修改少量代码,即可在 OpenAI、Anthropic、Google Gemini 等不同的大语言模型提供商之间自由切换。
  • 支持多种框架:可以与 React、Next.js、Vue、Nuxt、SvelteKit 等多种主流 Web 框架集成使用。
  • 流式响应(Streaming):支持流式传输 AI 生成的文本、JSON对象和UI组件,让用户无需等待模型完成全部响应,显著提升了应用的交互速度和体验。
  • 生成式UI(Generative UI):不仅仅是返回文本,SDK能够直接生成和渲染动态的、交互式的UI组件,创造更丰富的用户体验。
  • 结构化数据输出:提供 generateObject 等辅助函数,可以根据预设的模式(Schema)生成结构化、类型安全的JSON对象,适用于数据提取和分类等任务。
  • 工具调用与集成:支持工具调用流,允许语言模型调用外部函数或API,并将结果返回给模型以完成更复杂的任务。
  • 开源且免费:该项目是开源的,开发者可以免费使用,社区也积极贡献代码和反馈。
  • 支持模型上下文协议(MCP):通过支持开放的MCP标准,可以连接到如GitHub、Slack等数百个预构建工具的生态系统,轻松扩展应用功能。

使用帮助

Vercel AI SDK 作为一个开发工具包,它的主要用途是帮助开发者在自己的程序中集成AI功能。它不是一个可以直接使用的软件,而是一个代码库,需要通过编程来使用。

安装

要在你的项目中使用 Vercel AI SDK,首先需要通过 npm(Node.js 的包管理器)进行安装。打开你的项目终端,然后运行以下命令:

npm i ai

这条命令会将 ai 包及其所有必要的依赖项下载并安装到你的项目中,之后你就可以在代码里引入并使用它的功能了。

核心功能操作

Vercel AI SDK 极大简化了与大语言模型(LLM)的交互。以下是几个核心功能的基本操作流程。

1. 生成文本这是最基础的功能,比如让AI回答一个问题。SDK通过统一的 generateText 函数处理这个过程,无论你使用哪个模型提供商,代码都基本一样。

  • 使用OpenAI模型生成文本的示例
    import { generateText } from 'ai';
    import { openai } from '@ai-sdk/openai';
    // 调用 generateText 函数
    const { text } = await generateText({
    model: openai('gpt-4o'), // 指定使用 OpenAI 的 gpt-4o 模型
    prompt: '请解释一下什么是量子纠缠?', // 你想问的问题
    });
    console.log(text); // 打印模型生成的文本
    

    在这段代码里,你只需要从 ai 库中导入 generateText,再从 @ai-sdk/openai 中导入 openai 模型客户端。然后调用函数,并传入模型和你的问题(prompt)。

  • 切换到另一个模型提供商:如果你想换成 Anthropic 的 Claude 模型,只需修改两行代码,逻辑完全不用变。
    import { generateText } from 'ai';
    import { anthropic } from '@ai-sdk/anthropic'; // 导入 Anthropic 客户端
    const { text } = await generateText({
    model: anthropic('claude-3-7-sonnet-20240229'), // 切换为 Claude 模型
    prompt: '预测一下2040年世界人口会达到多少?',
    });
    console.log(text);
    

    这种统一的接口设计是 AI SDK 的核心优势,它让你不用为每个模型都学习一套新的API。

2. 生成结构化的JSON数据很多时候,你需要的不是一段自由文本,而是格式固定的数据,比如JSON对象。这对于从文本中提取信息、数据分类等场景非常有用。AI SDK 提供了 generateObject 函数来实现这个功能。

  • 使用 Zod 定义数据结构并生成对象:你可以使用 zod 这个库来定义你想要的JSON对象的具体结构(schema),然后让AI模型按照这个结构来生成输出。
    import { generateObject } from 'ai';
    import { openai } from '@ai-sdk/openai';
    import { z } from 'zod'; // 导入 zod 用于定义数据结构
    // 调用 generateObject 函数
    const { object } = await generateObject({
    model: openai('gpt-4o'),
    // 定义一个食谱的结构
    schema: z.object({
    recipe: z.object({
    name: z.string(),
    ingredients: z.array(z.object({
    name: z.string(),
    quantity: z.string(),
    })),
    steps: z.array(z.string()),
    }),
    }),
    prompt: '请给我一个番茄炒蛋的食谱。',
    });
    // `object` 会是一个严格符合上面定义的 TypeScript 类型的对象
    console.log(JSON.stringify(object, null, 2));
    

    通过这种方式,你能确保从AI得到的数据是干净、可用且类型安全的,避免了手动解析文本的麻烦。

3. 构建聊天机器人界面对于需要构建聊天应用的场景,AI SDK 提供了专门的UI辅助工具(Hooks),可以与React、Vue等框架轻松集成。例如,在React中使用 useChat 这个Hook。

useChat 会帮你处理所有复杂的状态管理,包括:

  • 管理对话历史记录 (messages)
  • 追踪用户的输入 (input)
  • 处理表单提交事件 (handleSubmit)
  • 获取模型响应时的加载状态 (isLoading)

开发者只需要使用这些由Hook提供的变量和函数来搭建界面,而无需关心背后如何与AI服务进行数据交换和流式更新,从而快速构建出一个功能完善的聊天机器人。

应用场景

  1. 构建智能聊天机器人利用 useChat 等UI辅助工具,可以快速在网站或应用中嵌入一个聊天机器人,用于客户服务、信息查询或日常互动。开发者无需处理复杂的状态管理和API通信,只需专注于界面设计。
  2. 开发内容创作工具通过调用 generateText 功能,可以创建自动写作工具,例如生成博客文章、营销文案、社交媒体帖子或代码片段,帮助用户提高创作效率。
  3. 实现数据分析和提取使用 generateObject 功能,可以从非结构化的文本(如用户评论、邮件、报告)中自动提取出结构化的信息(如姓名、日期、情感倾向),并将其转换为格式统一的JSON数据,方便后续的程序处理和数据分析。
  4. 创建动态交互式应用利用生成式UI功能,可以开发出能够根据用户输入或AI模型的响应动态改变自身布局和内容的应用程序。例如,一个旅游规划应用可以根据用户的偏好,动态生成一个包含地图、酒店推荐和行程安排的交互式界面。
  5. 构建AI驱动的搜索和推荐系统将AI SDK与向量数据库等技术结合,可以开发出更智能的语义搜索功能。例如,一个电商网站可以利用它来理解用户的模糊搜索意图(如“适合夏天穿的透气跑鞋”),并返回更精准的商品推荐。

QA

  1. Vercel AI SDK 是免费的吗?是的,Vercel AI SDK 是一个基于 MIT 许可的开源项目,开发者可以免费使用它来构建任何商业或个人项目。
  2. 使用这个SDK需要了解特定的AI模型知识吗?不需要。SDK 的核心设计理念之一就是抽象和简化,它提供统一的API,让开发者不必深入了解每个AI模型提供商API的特定细节。你只需要知道你想完成什么任务(如生成文本或对象),然后调用相应的函数即可。
  3. 它只适用于 Next.js 吗?不是。虽然它是由Vercel(Next.js的母公司)开发的,但它被设计为框架无关的工具。它可以与React、Vue、Svelte、Astro以及Node.js等多种环境集成。
  4. 什么是流式响应(Streaming),它为什么重要?流式响应是指AI模型在生成内容的同时,就将已生成的部分逐字或逐句地发送给用户,而不是等全部内容生成完毕后再一次性返回。
微信微博Email复制链接