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