知识模块
🤖 Agent 知识模块
九、工具模块
章节概览

Agent 工具调用与执行

工具系统是 Agent 与外部世界交互的桥梁,赋予了 Agent"手"和"脚",使其从单纯的对话者变为行动者。掌握工具调用机制是构建实用 Agent 的核心能力。


一、为什么需要工具系统?

1.1 LLM 的局限性

大语言模型(LLM)虽然具备强大的语言理解和生成能力,但存在本质局限:

局限性具体表现工具解决方案
知识截止训练数据有时间边界搜索工具获取实时信息
无法计算复杂数学计算易出错计算器工具精确计算
无执行能力只能"说"不能"做"代码执行工具落地操作
无外部感知无法访问外部系统API 工具连接外部服务
无持久记忆会话结束后遗忘数据库工具存储信息

1.2 工具系统的价值

┌─────────────────────────────────────────────────────────────┐
│                    工具系统的核心价值                        │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   无工具的 LLM:                                            │
│   ┌─────────┐     ┌─────────┐     ┌─────────┐             │
│   │  用户   │ ──→ │   LLM   │ ──→ │  文本   │             │
│   └─────────┘     │ (大脑)  │     │  回答   │             │
│                   └─────────┘     └─────────┘             │
│                   只能"纸上谈兵"                            │
│                                                             │
│   有工具的 Agent:                                          │
│   ┌─────────┐     ┌─────────┐     ┌─────────┐             │
│   │  用户   │ ──→ │ Agent   │ ──→ │  结果   │             │
│   └─────────┘     │ (大脑)  │     │ (行动)  │             │
│                   └────┬────┘     └─────────┘             │
│                        │                                   │
│                        ↓                                   │
│              ┌─────────────────────┐                      │
│              │      工具箱         │                      │
│              │  ┌───┐ ┌───┐ ┌───┐│                      │
│              │  │搜索│ │计算│ │API││                      │
│              │  └───┘ └───┘ └───┘│                      │
│              │  ┌───┐ ┌───┐ ┌───┐│                      │
│              │  │代码│ │数据│ │文件││                      │
│              │  └───┘ └───┘ └───┘│                      │
│              └─────────────────────┘                      │
│              "手"+"脚",能执行实际操作                      │
│                                                             │
└─────────────────────────────────────────────────────────────┘

1.3 工具系统的演进历程

┌─────────────────────────────────────────────────────────────┐
│                    工具系统演进历程                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  2023.03          2023.06         2023.11        2024.11   │
│    │                │               │              │        │
│    ↓                ↓               ↓              ↓        │
│ ┌──────┐      ┌──────────┐    ┌─────────┐    ┌─────────┐   │
│ │Prompt│  ──→ │ Function │ ──→ │ Tool    │ ──→ │  MCP    │   │
│ │Hack  │      │ Calling  │     │ Use API │     │ Protocol│   │
│ └──────┘      └──────────┘     └─────────┘     └─────────┘   │
│                                                             │
│ 手动解析      OpenAI 原生    多模态工具     标准化协议       │
│ 正则提取      结构化输出     图片/文件      跨平台兼容       │
│ 易出错        高可靠性       多输入类型     生态互联         │
│                                                             │
│ LangChain     GPT-4         Claude 3      Anthropic         │
│ ReAct Prompt  Tool Choice   Computer Use  Model Context     │
│                                                             │
└─────────────────────────────────────────────────────────────┘

二、工具系统核心概念

2.1 核心组件概览

组件英文作用示例
工具描述Tool Description告诉 LLM 工具的用途"搜索互联网获取实时信息"
参数模式Parameter Schema定义输入参数结构JSON Schema
执行环境Execution Environment工具运行的安全沙箱Docker、进程隔离
结果处理Result Processing处理工具返回结果截断、摘要、格式化
注册中心Tool Registry管理可用工具列表工具目录、索引

2.2 工具调用生命周期

┌─────────────────────────────────────────────────────────────┐
│                    工具调用生命周期                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   ┌──────────┐                                             │
│   │ 1. 意图  │  分析用户需求,判断是否需要工具             │
│   │   识别   │                                             │
│   └────┬─────┘                                             │
│        │                                                    │
│        ↓                                                    │
│   ┌──────────┐                                             │
│   │ 2. 工具  │  根据意图匹配最合适的工具                   │
│   │   选择   │                                             │
│   └────┬─────┘                                             │
│        │                                                    │
│        ↓                                                    │
│   ┌──────────┐                                             │
│   │ 3. 参数  │  生成工具调用的输入参数                     │
│   │   构建   │                                             │
│   └────┬─────┘                                             │
│        │                                                    │
│        ↓                                                    │
│   ┌──────────┐                                             │
│   │ 4. 安全  │  权限检查、参数校验                         │
│   │   校验   │                                             │
│   └────┬─────┘                                             │
│        │                                                    │
│        ↓                                                    │
│   ┌──────────┐                                             │
│   │ 5. 执行  │  在隔离环境中运行工具                       │
│   │   工具   │                                             │
│   └────┬─────┘                                             │
│        │                                                    │
│        ↓                                                    │
│   ┌──────────┐                                             │
│   │ 6. 结果  │  处理返回值,转换为 LLM 可理解格式          │
│   │   处理   │                                             │
│   └────┬─────┘                                             │
│        │                                                    │
│        ↓                                                    │
│   ┌──────────┐                                             │
│   │ 7. 反馈  │  将结果返回给 Agent 进行下一步决策          │
│   │   整合   │                                             │
│   └──────────┘                                             │
│                                                             │
└─────────────────────────────────────────────────────────────┘

2.3 工具分类

┌─────────────────────────────────────────────────────────────┐
│                    工具类型分类                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  按功能分类:                                               │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ • 信息获取类:搜索、数据库查询、API 调用             │   │
│  │ • 计算处理类:数学计算、代码执行、数据处理           │   │
│  │ • 文件操作类:读写文件、文档处理、图片处理           │   │
│  │ • 系统交互类:命令执行、进程管理、网络请求           │   │
│  │ • 通信协作类:邮件发送、消息推送、日程管理           │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  按风险等级分类:                                           │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ • 低风险:只读操作(搜索、查询)                      │   │
│  │ • 中风险:有限写入(创建文件、发送通知)              │   │
│  │ • 高风险:系统操作(删除、修改配置、执行代码)        │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  按执行方式分类:                                           │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ • 同步工具:即时返回结果(计算、查询)                │   │
│  │ • 异步工具:后台执行(文件上传、长任务)              │   │
│  │ • 流式工具:持续返回数据(日志监控、实时数据)        │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

三、核心架构流程

3.1 整体架构图

┌─────────────────────────────────────────────────────────────────────┐
│                    Agent 工具系统架构                                │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│   ┌─────────────────────────────────────────────────────────────┐ │
│   │                        用户层                                │ │
│   │                    ┌─────────────┐                          │ │
│   │                    │  用户请求   │                          │ │
│   │                    └──────┬──────┘                          │ │
│   └───────────────────────────┼─────────────────────────────────┘ │
│                               │                                     │
│   ┌───────────────────────────┼─────────────────────────────────┐ │
│   │                       Agent 层                               │ │
│   │   ┌───────────────────────┼───────────────────────┐         │ │
│   │   │                   LLM 核心                     │         │ │
│   │   │  ┌─────────┐  ┌─────────┐  ┌─────────┐       │         │ │
│   │   │  │意图识别 │  │工具选择 │  │参数构建 │       │         │ │
│   │   │  └─────────┘  └─────────┘  └─────────┘       │         │ │
│   │   └───────────────────────┬───────────────────────┘         │ │
│   └───────────────────────────┼─────────────────────────────────┘ │
│                               │                                     │
│   ┌───────────────────────────┼─────────────────────────────────┐ │
│   │                      工具管理层                              │ │
│   │   ┌───────────────────────┼───────────────────────┐         │ │
│   │   │                   工具注册中心                  │         │ │
│   │   │  ┌─────────┐  ┌─────────┐  ┌─────────┐       │         │ │
│   │   │  │工具索引 │  │权限管理 │  │版本控制 │       │         │ │
│   │   │  └─────────┘  └─────────┘  └─────────┘       │         │ │
│   │   └───────────────────────┬───────────────────────┘         │ │
│   └───────────────────────────┼─────────────────────────────────┘ │
│                               │                                     │
│   ┌───────────────────────────┼─────────────────────────────────┐ │
│   │                      执行层                                  │ │
│   │   ┌───────────────────────┼───────────────────────┐         │ │
│   │   │                   执行环境                      │         │ │
│   │   │  ┌─────────┐  ┌─────────┐  ┌─────────┐       │         │ │
│   │   │  │  沙箱   │  │ 资源池  │  │ 监控器  │       │         │ │
│   │   │  └─────────┘  └─────────┘  └─────────┘       │         │ │
│   │   └───────────────────────┬───────────────────────┘         │ │
│   └───────────────────────────┼─────────────────────────────────┘ │
│                               │                                     │
│   ┌───────────────────────────┼─────────────────────────────────┐ │
│   │                      工具层                                  │ │
│   │   ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐         │ │
│   │   │搜索 │ │计算 │ │代码 │ │文件 │ │API │ │数据库│         │ │
│   │   │工具 │ │工具 │ │执行 │ │工具 │ │工具 │ │工具 │         │ │
│   │   └─────┘ └─────┘ └─────┘ └─────┘ └─────┘ └─────┘         │ │
│   └─────────────────────────────────────────────────────────────┘ │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

3.2 核心流程详解

[用户请求] 
    -> [意图分类器]                    # 判断是否需要工具
    -> [工具检索器] (如果工具数量多)   # 从工具库中检索相关工具
    -> [LLM (带工具 Schema)]           # LLM 决定调用哪个工具
    -> [参数解析器]                    # 解析工具参数
    -> [权限网关]                      # 检查调用权限
    -> [工具执行器 (沙箱/API)]         # 安全执行工具
    -> [结果处理器 (摘要/截断)]        # 处理工具返回结果
    -> [LLM (最终回答)]                # 生成最终答案

四、章节内容导航


五、学习建议

5.1 学习路径

入门 → 工具调用概述(理解工具系统价值)

进阶 → Function Calling(掌握原生调用机制)

深入 → 工具定义与注册(学会设计工具)

扩展 → 工具选择策略(优化工具匹配)

高级 → 工具组合编排、MCP 协议(企业级应用)

5.2 实践建议

阶段实践内容预期收获
入门使用 OpenAI Function Calling理解工具调用基本流程
进阶自定义工具并注册掌握工具设计原则
深入实现工具选择策略提升工具匹配准确率
扩展多工具编排执行处理复杂任务场景
高级集成 MCP 协议企业级工具生态

六、总结

概念一句话总结面试关键词
工具系统Agent 与外部世界交互的桥梁Tool Use、Function Calling
核心组件描述、参数、执行、结果处理JSON Schema、沙箱、权限
调用流程意图识别 → 工具选择 → 参数构建 → 执行 → 结果处理Tool Lifecycle
协议标准MCP 实现跨平台工具互联Model Context Protocol
最佳实践安全隔离、权限控制、可观测性沙箱、审计、监控

一句话总结:工具系统赋予 Agent 执行能力,是构建实用 Agent 的核心基础设施,需要关注安全性、可靠性和可扩展性。


最后更新:2026年3月18日