# 第3章 工具调用（Tool Use / Function Calling）

> 🔧 *"如果 LLM 是一个博学但足不出户的学者，那工具就是它的手脚——让它能走出书房，触摸真实世界。"*

---

想象一下：你问 ChatGPT "现在苹果股价是多少？"，它只能回答"根据我训练数据中的信息……"。因为它被训练完后就与世隔绝了——不能搜索、不能计算、不能执行任何操作。

**工具调用（Function Calling）要解决的就是这个问题。**

它让模型不再只是"说"，还能"做"。模型自己不执行任何操作，而是输出一段结构化的指令："请帮我调用天气 API，查询北京"。我们的代码收到指令后执行真正的操作，再把结果反馈给模型。

这就是 Function Calling 的核心思想：**LLM 当大脑做决策，代码当手脚去执行。**

## 🎓 你将学会什么

| 能力 | 一句话说明 |
|------|-----------|
| 理解机制 | Function Calling 的 5 步流程到底是什么 |
| 设计工具 | 怎么写出让模型"听懂"的工具定义 |
| 编写描述 | 为什么 `description` 字段决定了 Agent 的智商 |
| 动手实战 | 从零搭建一个能搜索、能计算的 Agent |

## ⏱️ 预计学习时间

约 **60-80 分钟**（精读 + 动手实践）

## 💡 前置知识

- 了解 Python 基本语法（函数、字典）
- 知道 JSON 是什么
- 有过一次调用 OpenAI API 的经验即可

## 本章结构

| 章节 | 内容 |
|------|------|
| 3.1 为什么需要工具？ | 先建立直觉：LLM 的三个"先天残疾" |
| 3.2 Function Calling 机制 | 核心章节：5 步流程 + 最小可运行代码 |
| 3.3 自定义工具的设计原则 | 不是怎么写代码，而是怎么思考设计 |
| 3.4 工具描述的编写技巧 | description 写得好不好，Agent 智商差一倍 |
| 3.5 实战：搜索引擎+计算器 | 把前面学的全部串起来 |
| 3.6 论文解读 | 学术前沿：Toolformer / Gorilla / ToolLLM |

> 📌 **一句话总结本章**：工具调用的本质是 **"用自然语言桥接 LLM 的推理能力和外部系统的执行能力"**。掌握好这一章，后面学 RAG、Multi-Agent 都会顺畅很多。

---

*下一节：[3.1 为什么 Agent 需要工具？](./01_why_tools.md)*
