SuperAPI AI 工具集

convex-agents

智能体与模型

查看项目

更新于 10-15 09:48

技能介绍

用途

convex-agents 用于在 Convex 平台上构建 AI 智能体与助手。根据资料,其适用场景包括:实现聊天界面、AI 助手、工具调用(tool-calling)智能体,以及 RAG(检索增强生成)。

主要能力

该技能以代码示例的形式覆盖以下能力:

  1. 基础聊天数据结构:在 convex/schema.ts 中定义 threads 与 messages 两张表。threads 包含 userId、可选 title、createdAt、updatedAt,并建立 by_user 索引;messages 包含 threadId、role(user/assistant/system)、content、createdAt,并建立 by_thread 索引。

  2. 线程管理:在 convex/threads.ts 中提供 create(mutation,需登录,未认证时抛出 ConvexError)、list(query,按用户索引倒序返回线程)、getMessages(query,按线程索引正序返回消息)。

  3. AI 集成(Actions):在 convex/ai.ts 中使用 "use node" 与 OpenAI SDK,通过 internalAction 实现 chat,流程为保存用户消息、读取历史、调用 OpenAI 聊天补全、保存助手回复;配套 saveMessage(internalMutation,同时更新线程时间戳)与 getHistory(internalQuery)。

  4. 流式响应:streamChat 先保存用户消息并创建空的助手消息占位,再以 stream: true 调用 OpenAI,逐块累积内容,约每 500ms 通过 updateMessage 更新一次,最后做一次最终更新。

  5. 工具调用 / 函数调用:定义 tools 数组(示例包含 search_documents 与 create_task),在 chatWithTools 中调用带 tools 的聊天补全;当 finish_reason 为 tool_calls 时解析参数并分发执行,示例中分别调用内部搜索 action 与任务创建 mutation,并返回结果文本。

  6. RAG(检索增强生成):在 schema 中为 documents 表定义 content、embedding(float64 数组)、metadata,并建立 by_embedding 向量索引(示例维度 1536,对应 OpenAI ada-002)。convex/search.ts 提供 embed(调用 text-embedding-ada-002 生成向量)、indexDocument、saveDocument、search(先嵌入查询再向量检索,默认 limit 5)与 vectorSearch(使用 withSearchIndex 与 q.vector(...).limit(...),返回内容与 _score)。ragChat 示例先检索相关文档,拼接为上下文,再构造带上下文的 system 提示词继续对话。

使用方式

资料以 TypeScript 代码片段呈现,涉及 Convex 的 schema、mutation、query、internalAction、internalMutation、internalQuery 等函数类型,以及 OpenAI SDK 的调用方式。API 密钥通过环境变量(如 process.env.OPENAI_API_KEY)读取。资料未提供安装命令或具体部署步骤。

适用场景

适合以 Convex 为后端、需要构建对话式 AI 应用的开发者,尤其是需要线程化聊天记录、流式输出、工具调用或基于向量检索的知识问答的场景。

限制与注意事项

资料列出常见陷阱:不要在客户端放置 API 密钥,应使用带 "use node" 的 action 发起 API 调用;长对话需实现上下文窗口控制或摘要;需处理 API 速率限制与失败;应准备非流式的降级方案;发送给 LLM 的消息历史应有上限。

参考链接

  • Actions: https://docs.convex.dev/functions/actions
  • Vector Search: https://docs.convex.dev/search/vector-search
  • Environment Variables: https://docs.convex.dev/production/environment-variables

关于收费、价格、平台支持范围等信息,资料暂未提供。