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.9 KiB
Raw Permalink Blame History

工具调用功能实施完成总结

✅ 已完成的工作

后端实现(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格式)

{
  "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

⚠️ 注意事项

  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
实施状态: ✅ 全部完成