# AI 智能体接入指南 > 集成 OpenClaw AI Agent,实现知识库问答、工作流触发与多模型切换。 ## 🧠 什么是 AI 智能体? AI 智能体(AI Agent)是 Websopy 平台的核心能力,它能: - 🤖 基于自然语言理解用户意图 - 📚 连接你的知识库进行精准问答 - 🔗 触发业务工作流执行自动化任务 - 🔄 在多个 AI 模型间智能切换 ## 📋 前提条件 - 已完成 [快速上手](./quickstart.md) - 已开通 AI 功能(控制台 → 开发者中心 → AI 功能) ## 🚀 接入步骤 ### 第一步:安装 AI SDK ```bash npm install @websopy/ai-sdk ``` ### 第二步:初始化 Agent ```typescript import { AIAgent } from '@websopy/ai-sdk' const agent = new AIAgent({ apiKey: process.env.WEBSOPY_API_KEY, // 选择默认模型 defaultModel: 'gpt-4', // 可用模型列表 models: ['gpt-4', 'claude-3', 'gemini-pro'] }) ``` ### 第三步:创建会话 ```typescript // 创建新的对话会话 const session = await agent.createSession({ userId: 'user-123', // 关联知识库(可选) knowledgeBaseId: 'kb-abc456', // 会话元数据 metadata: { source: 'website', language: 'zh-CN' } }) console.log('会话 ID:', session.id) ``` ### 第四步:发送消息 ```typescript // 发送用户消息 const response = await agent.sendMessage(session.id, { content: '我想了解你们的产品价格', // 可选:附加参数 context: { userPlan: 'free', priority: 'normal' } }) console.log('AI 回复:', response.content) console.log('使用模型:', response.model) console.log('置信度:', response.confidence) ``` ### 第五步:流式响应(SSE) 对于需要实时反馈的场景,使用流式输出: ```typescript const stream = await agent.sendMessageStream(session.id, { content: '写一篇关于 AI 的博客文章' }) for await (const chunk of stream) { process.stdout.write(chunk.content) } ``` ## 📚 知识库集成 ### 创建知识库 ```typescript const kb = await agent.createKnowledgeBase({ name: '产品文档', description: '公司产品相关文档', // 向量化模型 embeddingModel: 'text-embedding-3-small' }) // 上传文档 await agent.uploadDocument(kb.id, { file: './docs/product-guide.pdf', // 文档元数据 metadata: { category: 'documentation', version: '2.0' } }) ``` ### 关联知识库问答 ```typescript const response = await agent.sendMessage(session.id, { content: '你们的退款政策是什么?', // 强制从知识库检索 retrieveFrom: 'kb-abc456', // 检索参数 retrievalConfig: { topK: 5, // 返回前 5 条相关片段 scoreThreshold: 0.7 // 相似度阈值 } }) ``` ## 🔧 工作流触发 AI Agent 可以根据对话内容自动触发业务工作流: ```typescript // 配置意图识别和触发 await agent.setIntentHandler(session.id, { intents: [ { name: 'create_order', patterns: ['下单', '购买', '创建订单'], action: 'trigger_workflow', workflowId: 'wf-order-create' }, { name: 'cancel_subscription', patterns: ['取消订阅', '退订'], action: 'trigger_workflow', workflowId: 'wf-subscription-cancel' } ] }) // 处理工作流结果 agent.onWorkflowComplete((result) => { console.log('工作流完成:', result.workflowId) console.log('结果:', result.output) }) ``` ## 🔄 多模型切换 ### 手动切换 ```typescript // 切换到指定模型 await agent.switchModel(session.id, 'claude-3') const response = await agent.sendMessage(session.id, { content: '解释量子计算原理' }) ``` ### 自动路由 根据任务类型自动选择最优模型: ```typescript const agent = new AIAgent({ apiKey: process.env.WEBSOPY_API_KEY, // 配置自动路由 autoRoute: { enabled: true, rules: [ { task: 'coding', models: ['gpt-4', 'claude-3'] }, { task: 'creative', models: ['gpt-4', 'gemini-pro'] }, { task: 'analysis', models: ['claude-3', 'gpt-4'] } ] } }) ``` ## 📊 高级配置 ### 对话上下文管理 ```typescript // 设置上下文窗口大小 agent.setContextWindow(session.id, { maxMessages: 50, // 保留最近 50 条消息 maxTokens: 8000 // 最大 token 数 }) // 手动添加系统提示 agent.addSystemPrompt(session.id, { role: 'system', content: '你是一个专业的客服助手,说话风格友好、专业。' }) ``` ### 错误处理与重试 ```typescript const response = await agent.sendMessage(session.id, { content: '复杂问题...' }, { // 重试配置 retry: { maxAttempts: 3, delayMs: 1000, backoff: 'exponential' }, // 超时配置(毫秒) timeout: 30000 }) ``` ## 🧪 完整示例 ```typescript import { AIAgent } from '@websopy/ai-sdk' async function main() { const agent = new AIAgent({ apiKey: process.env.WEBSOPY_API_KEY, defaultModel: 'gpt-4' }) // 创建会话 const session = await agent.createSession({ userId: 'user-123', knowledgeBaseId: 'kb-product-docs' }) // 对话循环 const messages = [ '你好,我想了解一下企业版的功能', '支持私有化部署吗?', '好的,我想试用一下' ] for (const msg of messages) { const response = await agent.sendMessage(session.id, { content: msg }) console.log(`\n👤 用户: ${msg}`) console.log(`🤖 AI: ${response.content}`) } } main() ``` ## ❓ 常见问题 ### Q: 如何查看 API 调用量? 在控制台 → 开发者中心 → AI 功能,可以查看详细的使用统计。 ### Q: 支持哪些 Embedding 模型? 目前支持: - `text-embedding-3-small`(推荐,速度快) - `text-embedding-3-large`(高精度) - `text-embedding-ada-002`(兼容性) ### Q: 知识库检索不到相关内容? 1. 检查文档是否已成功上传和向量化 2. 调整 `scoreThreshold` 降低阈值 3. 尝试增加 `topK` 获取更多候选 --- **上一步:** [5 分钟快速上手](./quickstart.md) **下一步:** [私有化部署完全指南](./deployment.md)