Files
ai-desktop/TOOL_CALLING_GUIDE.md
T

301 lines
7.1 KiB
Markdown

# 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<ToolResult> {
// ... 现有代码
switch (name) {
case 'your_tool_name':
result = await this.yourToolFunction(args.param1, args.param2)
break
// ...
}
}
private async yourToolFunction(param1: string, param2: number): Promise<any> {
// 实现工具逻辑
// 可以调用 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. 查看执行进度提示和最终结果
就这么简单!🚀