Files
aiagent/工具调用功能完成总结.md
2026-01-23 09:49:45 +08:00

178 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 工具调用功能实施完成总结
## ✅ 已完成的工作
### 后端实现100%完成)
1. **工具定义模型** (`backend/app/models/tool.py`)
- ✅ 完整的工具数据模型
- ✅ 支持工具分类、函数定义、实现类型等
2. **工具注册表** (`backend/app/services/tool_registry.py`)
- ✅ 管理所有可用工具
- ✅ 支持注册内置工具和从数据库加载
3. **内置工具实现** (`backend/app/services/builtin_tools.py`)
-`http_request`: HTTP请求工具
-`file_read`: 文件读取工具
- ✅ 完整的工具定义OpenAI Function格式
4. **LLM服务扩展** (`backend/app/services/llm_service.py`)
-`call_openai_with_tools`: 支持工具调用的OpenAI调用
-`call_deepseek_with_tools`: 支持工具调用的DeepSeek调用
-`call_llm_with_tools`: 通用工具调用接口
-`_execute_tool`: 工具执行方法
- ✅ 支持多轮工具调用循环最多5次迭代
5. **工作流引擎集成** (`backend/app/services/workflow_engine.py`)
- ✅ LLM节点执行时检查工具配置
- ✅ 自动加载工具定义并传递给LLM服务
6. **工具管理API** (`backend/app/api/tools.py`)
-`GET /api/v1/tools` - 获取工具列表
-`GET /api/v1/tools/builtin` - 获取内置工具列表
-`GET /api/v1/tools/{tool_id}` - 获取工具详情
-`POST /api/v1/tools` - 创建工具
-`PUT /api/v1/tools/{tool_id}` - 更新工具
-`DELETE /api/v1/tools/{tool_id}` - 删除工具
- ✅ 已注册到main.py
7. **初始化脚本** (`backend/scripts/init_builtin_tools.py`)
- ✅ 已执行成功创建了2个内置工具
8. **数据库迁移** (`backend/alembic/versions/004_add_tools_table.py`)
- ✅ 创建tools表的迁移文件
### 前端实现100%完成)
1. **工具配置界面** (`frontend/src/components/WorkflowEditor/WorkflowEditor.vue`)
- ✅ 在LLM节点配置面板中添加"工具"标签页
- ✅ "启用工具调用"开关
- ✅ 工具选择器(多选,支持筛选)
- ✅ 工具分组显示(内置工具/自定义工具)
- ✅ 显示选中工具的详细信息(描述、参数定义)
- ✅ 工具移除功能
- ✅ 自动加载工具列表
2. **默认配置**
- ✅ LLM节点创建时自动初始化工具配置
-`enable_tools: false`, `tools: []`
## 📊 功能特性
### 1. 工具调用流程
```
用户输入 → LLM节点启用工具 → LLM API带tools参数
LLM返回tool_call → 工具执行器 → 执行工具
工具结果 → 返回LLM → 生成最终回复
```
### 2. 支持的工具
**内置工具**
- `http_request`: 发送HTTP请求GET/POST/PUT/DELETE
- `file_read`: 读取文件内容(限制在项目目录内)
**自定义工具**
- 支持通过API创建自定义工具
- 支持多种实现类型builtin/http/workflow/code
### 3. 安全特性
- 文件读取限制在项目目录内
- 工具参数验证
- 工具执行超时30秒
- 最大工具调用迭代次数5次
## 🎯 使用方法
### 1. 在LLM节点中启用工具调用
1. 选择LLM节点
2. 打开"工具"标签页
3. 启用"启用工具调用"开关
4. 选择需要的工具(如:`http_request`, `file_read`
5. 保存配置
### 2. 测试工具调用
创建一个简单的Agent
- 开始节点
- LLM节点启用工具调用选择`http_request`工具)
- 结束节点
测试输入:`"查询 https://api.github.com/users/octocat 的信息"`
LLM应该会
1. 识别需要调用工具
2. 调用 `http_request` 工具获取GitHub API数据
3. 基于获取的数据生成回复
## 📝 配置示例
### LLM节点配置JSON格式
```json
{
"id": "llm-1",
"type": "llm",
"data": {
"label": "智能助手",
"provider": "openai",
"model": "gpt-4",
"prompt": "请帮助用户解决问题,可以使用工具获取信息。",
"enable_tools": true,
"tools": ["http_request", "file_read"]
}
}
```
## 🔧 API使用示例
### 获取工具列表
```bash
curl http://localhost:8037/api/v1/tools
```
### 获取内置工具
```bash
curl http://localhost:8037/api/v1/tools/builtin
```
## ⚠️ 注意事项
1. **模型支持**
- 当前支持OpenAI和DeepSeek兼容OpenAI API格式
- 需要模型支持function calling功能
- 推荐使用:`gpt-4`, `gpt-3.5-turbo`, `deepseek-chat`
2. **工具调用限制**
- 最大迭代次数5次
- 工具执行超时30秒
- 如果达到最大迭代次数,会返回最后一次的结果
3. **安全考虑**
- 文件读取限制在项目目录内
- HTTP工具没有域名限制生产环境建议添加
- 工具参数需要验证(当前为基本验证)
## 🎉 完成状态
- ✅ 后端核心功能100%
- ✅ API接口100%
- ✅ 前端界面100%
- ✅ 内置工具100%
- ✅ 文档100%
**工具调用功能已完全实施完成!** 🎊
---
**完成时间**: 2026-01-23
**实施状态**: ✅ 全部完成