name: ai-sdk-handler description: 集成 Vercel AI SDK,用于大语言模型、聊天机器人、生成式 UI 和智能体工作流。 deps: [“auth-handler”, “inngest-handler”]
AI SDK 处理器
此技能定义了如何使用 Vercel AI SDK 来实现大语言模型功能。它涵盖了流式聊天、结构化对象生成、生成式 UI 和后台智能体。
注意:对于图像/视频生成(Replicate, Fal.ai),请继续使用 ai-handler。ai-sdk-handler 专门用于文本、聊天和智能体文本/JSON 工作流。
何时使用
- 聊天机器人:构建交互式聊天界面(
useChat,streamText)。 - 结构化数据:从文本中提取 JSON(
generateObject)。 - 生成式 UI:直接从服务器流式传输 React 组件(
streamUI)。 - 智能体:复杂的多步骤推理任务(通常与 Inngest 结合使用)。
- 多模态:处理带有文本的图像输入。
功能
1. 流式聊天
- 工具:
streamText(服务器端),useChat(客户端)。 - 模式:在
src/app/api/chat/route.ts创建路由处理器。 - 认证:使用
withAuthRequired包装以保护路由。 - UI:使用
src/components/chat-ui/中的聊天组件。
2. 生成式 UI(RSC)
- 工具:
streamUI(服务器端)。 - 模式:基于工具调用返回 React 组件。
- 用例:自动构建的仪表板、动态报告。
3. 结构化对象生成
- 工具:
generateObject。 - 模式:定义 Zod 模式并获取严格类型的 JSON 返回。
- 用例:填充数据库表单、提取行程详情、内容分类。
4. 后台智能体(与 Inngest 结合)
- 工具:在 Inngest 步骤中使用
generateText/generateObject。 - 原因:Next.js 服务器操作/路由有超时限制(通常最多 60 秒)。耗时更长的智能体必须在后台运行。
- 模式:
- 从 UI 触发 Inngest 事件。
- Inngest 函数运行 LLM 逻辑(循环、多步骤)。
- 将结果存储在数据库中或通知用户。
- 文档:AI SDK 智能体。
最佳实践
- 流式传输:对于超过 2 秒的文本生成,始终优先使用流式传输以提高感知延迟。
- 认证:切勿暴露开放的 AI 路由。始终验证
session.user.id。 - 提供商:使用
@ai-sdk/openai或@ai-sdk/anthropic。在src/lib/ai/index.ts中抽象提供商配置。 - 背压处理:AI SDK 在
streamText中自动处理此问题。 - 缓存:如果查询是重复的,请使用
unstable_cache或 KV 存储。 - 提示工程:如果提示很复杂,请将其保存在专用文件夹或常量文件中。
文档与示例
reference.md:核心设置和基本代码片段。examples.md:详尽的示例,涵盖:- 基础聊天
- 生成式 UI
- 结构化对象生成
- 智能体与工作流(循环控制)
- 缓存
- 流式数据
- 读取 UI 流
- 处理背压
- 多模态聊天