# AI Tool Calling 使用指南 ## 概述 AI Desktop 现已支持完整的 Tool Calling(函数调用)功能!AI 可以自动调用工具来完成复杂任务,如搜索平台内容、获取文章详情等。 ## 🎯 支持的工具 ### 1. `search_platform` - 搜索平台内容 在指定平台搜索内容,获取相关文章列表。 **参数:** - `platform` (string, 必需): 平台名称,目前支持 `xiaoheihe`(小黑盒) - `query` (string, 必需): 搜索关键词 **返回:** - `success` (boolean): 是否成功 - `count` (number): 结果数量 - `results` (array): 搜索结果列表 - `title`: 文章标题 - `url`: 文章链接 - `author`: 作者名称 - `publishTime`: 发布时间 - `summary`: 摘要 - `commentCount`: 评论数 - `likeCount`: 点赞数 **示例:** ``` 用户: 去小黑盒查询三角洲行动的最新更新日志 AI 会自动调用: { "platform": "xiaoheihe", "query": "三角洲行动 更新日志" } ``` ### 2. `fetch_article` - 获取文章详情 获取指定 URL 的文章详细内容。 **参数:** - `url` (string, 必需): 文章的完整 URL 地址 **返回:** - `success` (boolean): 是否成功 - `article` (object): 文章详情 - `title`: 标题 - `author`: 作者 - `publishTime`: 发布时间 - `content`: 正文内容 - `tags`: 标签列表 - `stats`: 统计数据(点赞、收藏、评论数等) - `topComments`: 前5条评论 **示例:** ``` 用户: 帮我看看这篇文章的详细内容 AI 会自动调用: { "url": "https://www.xiaoheihe.cn/article/123456" } ``` ## 🚀 使用方式 ### 方式一:自然语言对话(推荐) 直接用自然语言告诉 AI 你想做什么,AI 会自动判断是否需要调用工具。 **示例对话:** ``` 👤 用户: 去小黑盒搜索一下黑神话悟空的最新攻略 🤖 AI: 🔧 正在调用工具: search_platform ⚙️ 正在执行工具... ✅ 工具执行完成 我为您找到了 15 条关于黑神话悟空的最新攻略: 1. 【黑神话悟空】全Boss打法攻略合集 作者: 游戏大神 发布时间: 2小时前 点赞: 1234, 评论: 567 2. 黑神话悟空隐藏关卡完全指南 ... ``` ``` 👤 用户: 帮我看看第一篇文章的详细内容 🤖 AI: 🔧 正在调用工具: fetch_article ⚙️ 正在执行工具... ✅ 工具执行完成 这篇文章详细介绍了黑神话悟空中所有Boss的打法策略: 【文章标题】全Boss打法攻略合集 【作者】游戏大神 【发布时间】2小时前 【正文内容】 第一章:黑风山 1. 黑熊精: - 阶段一:... - 阶段二:... ... ``` ### 方式二:连续对话 AI 可以在一次对话中自动调用多个工具。 ``` 👤 用户: 去小黑盒查询三角洲行动的最新版本更新日志,然后告诉我主要更新了什么 🤖 AI: 🔧 正在调用工具: search_platform ⚙️ 正在执行工具... 🔧 正在调用工具: fetch_article ⚙️ 正在执行工具... ✅ 工具执行完成 根据最新的更新日志,三角洲行动 v1.2.0 主要更新内容包括: 1. 新增武器系统 - 新增 5 把新武器 - 优化武器平衡性 2. 地图更新 - 新地图「城市废墟」 - 优化现有地图性能 3. Bug修复 - 修复了 23 个已知问题 - 优化了网络延迟 完整更新日志链接:https://... ``` ## 💡 支持的使用场景 ### 1. 搜索游戏资讯 ``` - "去小黑盒搜索原神最新活动" - "查询王者荣耀新赛季更新" - "搜索黑神话悟空的评测" ``` ### 2. 获取详细攻略 ``` - "帮我看看这篇攻略的详细内容" - "获取这个链接的文章内容" - "这篇文章都说了什么?" ``` ### 3. 综合查询 ``` - "去小黑盒搜索三角洲行动的更新,然后总结主要内容" - "查询最新的游戏新闻,帮我挑出最重要的3条" - "搜索某某游戏的评价,告诉我玩家都在说什么" ``` ## 🔧 技术实现 ### 架构说明 1. **工具定义** (`tools.ts`) - 定义所有可用工具的接口和参数 - 实现工具执行器 `ToolExecutor` 2. **AI 服务** (`aiService.ts`) - `chatWithTools`: 支持 tool calling 的聊天函数 - `executeToolCalls`: 执行工具调用并返回结果 - 支持流式响应和工具调用通知 3. **界面集成** (`Chat.vue`) - 自动检测 AI 的工具调用 - 执行工具并显示进度提示 - 将工具结果返回给 AI 生成最终回复 ### 工作流程 ``` 用户输入 ↓ 发送给 AI (携带工具定义) ↓ AI 分析是否需要调用工具 ↓ 如果需要: 返回 tool_calls ↓ 执行工具调用 (search_platform / fetch_article) ↓ 将工具结果添加到对话历史 ↓ 再次发送给 AI ↓ AI 基于工具结果生成最终回复 ↓ 显示给用户 ``` ## 📝 添加新工具 如果你想添加新的工具,按照以下步骤: ### 1. 在 `tools.ts` 中定义工具 ```typescript export const availableTools: ToolDefinition[] = [ // ... 现有工具 { type: 'function', function: { name: 'your_tool_name', description: '工具的详细描述,AI 会根据这个描述判断何时使用', parameters: { type: 'object', properties: { param1: { type: 'string', description: '参数1的描述' }, param2: { type: 'number', description: '参数2的描述' } }, required: ['param1'] } } } ] ``` ### 2. 在 `ToolExecutor` 中实现工具 ```typescript async execute(toolCall: ToolCall): Promise { // ... 现有代码 switch (name) { case 'your_tool_name': result = await this.yourToolFunction(args.param1, args.param2) break // ... } } private async yourToolFunction(param1: string, param2: number): Promise { // 实现工具逻辑 // 可以调用 IPC、API 或执行其他操作 return { success: true, data: ... } } ``` ### 3. 如果需要新的 IPC 接口 在主进程 (`main/index.ts`) 中添加: ```typescript ipcMain.handle('your-ipc-channel', async (_, args) => { // 实现功能 return { success: true, ... } }) ``` ## ⚠️ 注意事项 1. **API 兼容性** - 确保使用的 AI 模型支持 Function Calling - OpenAI GPT-4, GPT-3.5-turbo 1106+ 支持 - DeepSeek Chat 支持 2. **工具执行时间** - 搜索和抓取可能需要几秒钟 - 界面会显示进度提示 3. **错误处理** - 工具执行失败时会显示错误提示 - AI 会尝试基于错误信息给出建议 4. **对话历史** - 工具调用和结果不会显示在对话界面 - 只显示用户消息和 AI 的最终回复 ## 🎉 开始使用 1. 确保已在设置中配置 AI 模型(推荐使用支持 Function Calling 的模型) 2. 打开对话窗口 3. 用自然语言告诉 AI 你想做什么 4. AI 会自动判断并调用相应的工具 5. 查看执行进度提示和最终结果 就这么简单!🚀