Agent 工程 · Tool Use 深潜
工具调用(Tool Use):从协议到 Agent 自主行为
一篇为「理解」而非「抄代码」写的教程。讲清一次工具调用在协议层到底发生了什么、agent 循环如何把单次调用变成多步自主行为、怎样设计工具,以及 MCP 与「代码调工具」这些前沿在优化哪一段。
工具调用是 LLM 从「会聊天」跨到「能干活」的那道门。但它最反直觉的一点,恰恰藏在名字里:模型其实什么都没「调用」。
·这篇适合谁
适合你,如果你
- 调用过至少一次 LLM 的 chat / messages API(OpenAI、Claude 或同类),见过 request / response 长什么样
- 能读懂一段 JSON,分得清 object / array / string
- 写过基本的 Python 或 JavaScript,能跟着改一个函数
先别读这篇,如果你
- 从没调过任何 LLM API——先用官方 quickstart 跑通一次普通对话再回来
- 只想复制一段能交差的代码——直接看 Anthropic / OpenAI 的 quickstart 更快
- 想深入多个 agent 之间的协作编排——去看兄弟篇 multi-agent-patterns
·读完之后你能做到什么
工具调用的本质不是「模型调用你的函数」,而是「模型生成一个请求、然后停下、把控制权交还给你的程序」。抓住这个控制流的反转,你能预判一个 agent 会在哪一步失控、为什么陷入无限循环、token 为什么爆炸,也能看懂 MCP、code execution 这些前沿到底在优化哪一段——这是读完官方文档也未必能讲清的那层。
具体地,读完你应当能够:
- 手画出一次完整 tool-use 往返的 5 个阶段,并准确指出模型在哪一步停机
- 对照读懂 Anthropic 与 OpenAI 的 tool-use 请求 / 响应字段,说出两者术语与数据形状的差异
- 解释 agent loop 的终止条件由谁决定,写出至少 2 种防止无限循环的 guard
- 评审一个工具定义,指出 description / 参数 / 返回值 / 错误处理 四处可改进点
- 说清 MCP 解决的是什么问题(M×N → M+N),以及「模型写代码调工具」相比「吐 JSON 调工具」省在哪里
一句话本质
- 在工具调用里,模型自己什么都不执行。它只生成一段结构化文本——「我要调用
X,参数是Y」——然后停下。 - 真正执行工具、把结果塞回对话、驱动下一轮的,是模型外面的程序(harness)。模型既看不到你的实现,也不会自己循环。
稳定基石:JSON-Schema 函数调用 + tool_use / tool_result 循环,三大厂商通用,先把它学扎实。
正在变:MCP(2024-11 由 Anthropic 提出 → 2025 年被 OpenAI、Google、微软采纳 → 2025-12 捐给 Linux Foundation)已成跨厂商标准;前沿正从「模型吐 JSON 调工具」转向「模型写代码调工具」(Anthropic 2025-11 的 Code execution / Programmatic Tool Calling / Tool Search Tool,号称省约 85% token)。
已被取代:OpenAI 的 functions / function_call 旧参数 → tools / tool_calls;Assistants API → Responses API。本教程不教旧写法。
这篇有意在几个地方放慢、让你先猜再看答案。如果你发现自己冒出这三句话,多半是熟悉感冒充了理解,停下来做一遍自测:
「我读得很顺」——顺,往往只说明文字好读,不说明 schema 进了脑子。
「我做题很快」——快,多半是在套已经见过的题型。
「我没卡壳」——没卡壳,多半是还没碰到真正难的那一步。
·概念地图
tool_use 请求 就停机,那条竖线右边(执行、回填)全部是你的程序在做,模型看不见也管不着。·三条学习路径
- 只想建立心智模型01 概念 → 02 协议 →(跳读 04 的前沿部分)→ 05 自测。约 2 小时,拿到能讲清楚的核心模型。
- 准备面试 / 求职01 → 02 → 03 → 04 全读。重点记:术语对照表(02)、终止条件与防循环 guard(03)、设计权衡表与前沿时间线(04)。最后做 05 的辨析题检验。
- 做选型 / 读懂别人的 agent 代码01 → 03 → 04。关注 loop 怎么驱动、为什么这样设计、生态现在用什么。
·章节目录
·学完之后往哪走
- 多智能体编排——单 agent 的工具循环讲透后,multi-agent-patterns 教多个 agent 如何分工与传递。在你的 schema 上加「编排层」。
- LangGraph——把这一篇里隐式的 loop 显式建模成状态图(langgraph)。加「把循环画成图」的工具。
- Agent 记忆与上下文管理——工具结果会撑爆 context(03 会讲),如何裁剪 / 外置是下一道坎。加「上下文预算」这一维。
- Agent 评测——怎么量化一个 agent 的工具调用准确率与成本。加「可度量」这一维。