Files
aiagent/docs/tool-calling/工具调用实施总结.md
renjianbo eabf90c496 feat: add AI学习助手 agent (KG+RAG ideal) and renshenguo feishu bot
- Add AI学习助手 agent creation script with all 39 tools, 3-layer KG+RAG memory
- Add renshenguo (人参果) feishu bot integration (app_service + ws_handler)
- Register renshenguo WS client in main.py startup
- Add RENSHENGUO_APP_ID / RENSHENGUO_APP_SECRET / RENSHENGUO_AGENT_ID config
- Reorganize docs from root into docs/ subdirectories
- Move startup scripts to scripts/startup/
- Various backend optimizations and tool improvements

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-06 01:37:13 +08:00

4.8 KiB
Raw Permalink Blame History

工具调用功能实施总结

✅ 已完成的工作

阶段1: 后端核心功能 ✅

1.1 工具定义模型 ✅

  • 文件: backend/app/models/tool.py
  • 功能: 定义了工具数据模型,包括工具名称、描述、函数定义等
  • 状态: 已完成

1.2 工具注册表 ✅

  • 文件: backend/app/services/tool_registry.py
  • 功能: 管理所有可用工具,支持注册内置工具和从数据库加载工具
  • 状态: 已完成

1.3 内置工具实现 ✅

  • 文件: backend/app/services/builtin_tools.py
  • 功能: 实现了两个内置工具:
    • http_request: HTTP请求工具
    • file_read: 文件读取工具
  • 状态: 已完成

1.4 LLM服务扩展 ✅

  • 文件: backend/app/services/llm_service.py
  • 功能:
    • 添加了 call_openai_with_tools 方法
    • 添加了 call_deepseek_with_tools 方法
    • 添加了 call_llm_with_tools 通用方法
    • 添加了 _execute_tool 工具执行方法
    • 支持多轮工具调用循环
  • 状态: 已完成

1.5 工作流引擎扩展 ✅

  • 文件: backend/app/services/workflow_engine.py
  • 功能: 在LLM节点执行时检查工具配置,如果启用则调用工具调用接口
  • 状态: 已完成

阶段2: 数据库迁移 ✅

  • 文件: backend/alembic/versions/004_add_tools_table.py
  • 功能: 创建tools表的数据库迁移
  • 状态: 已完成(需要执行迁移)

阶段3: 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

阶段4: 初始化脚本 ✅

  • 文件: backend/scripts/init_builtin_tools.py
  • 功能: 初始化内置工具到数据库和注册表
  • 状态: 已完成并执行成功

📋 下一步工作

阶段5: 前端实现(待实施)

5.1 LLM节点配置扩展

  • 在LLM节点配置面板中添加"工具"标签页
  • 添加"启用工具调用"开关
  • 添加工具选择器(多选)
  • 显示选中工具的详细信息

5.2 工具调用可视化

  • 在工作流执行时显示工具调用过程
  • 显示工具名称、参数、执行结果
  • 显示工具调用状态(成功/失败)

5.3 工具管理界面(可选)

  • 工具列表页面
  • 工具创建/编辑页面
  • 工具详情页面

🔧 使用说明

1. 执行数据库迁移

cd /home/renjianbo/aiagent/backend
alembic upgrade head

2. 初始化内置工具(已完成)

python3 backend/scripts/init_builtin_tools.py

3. 在LLM节点中启用工具调用

在LLM节点的配置中,需要设置:

{
  "enable_tools": true,
  "tools": ["http_request", "file_read"]
}

4. 测试工具调用

创建一个简单的Agent,包含:

  • 开始节点
  • LLM节点(启用工具调用)
  • 结束节点

测试输入:"查询 https://api.github.com/users/octocat 的信息"

LLM应该会:

  1. 识别需要调用工具
  2. 调用 http_request 工具
  3. 获取结果后生成回复

📊 当前状态

  • ✅ 后端核心功能:100% 完成
  • ✅ 数据库迁移:100% 完成
  • ✅ API接口:100% 完成
  • ✅ 初始化脚本:100% 完成
  • ⏳ 前端实现:0% 完成(待实施)

🎯 测试建议

  1. API测试

    # 获取工具列表
    curl http://localhost:8037/api/v1/tools
    
    # 获取内置工具
    curl http://localhost:8037/api/v1/tools/builtin
    
  2. 工作流测试

    • 创建一个包含LLM节点的Agent
    • 在LLM节点配置中启用工具调用
    • 选择 http_request 工具
    • 测试执行

⚠️ 注意事项

  1. 数据库迁移

    • 需要执行 alembic upgrade head 创建tools表
    • 如果表已存在,迁移会失败(需要先检查)
  2. 工具调用限制

    • 当前支持OpenAI和DeepSeek(兼容OpenAI API)
    • 最大工具调用迭代次数:5次
    • 工具执行超时:30秒(HTTP工具)
  3. 安全考虑

    • 文件读取工具限制在项目目录内
    • HTTP工具没有域名限制(生产环境需要添加)
    • 工具参数需要验证(当前为基本验证)

📝 后续优化

  1. 更多内置工具

    • 数据库查询工具
    • 邮件发送工具
    • 文件写入工具
  2. 工具调用优化

    • 并行工具执行
    • 工具结果缓存
    • 工具调用日志
  3. 前端增强

    • 工具调用可视化
    • 工具参数配置界面
    • 工具执行历史

实施时间: 2026-01-23
实施状态: 后端核心功能已完成,前端待实施