# AI Agent工具调用:让AI真正动手干活
> 大模型光会"说"还不够,得会"做"。工具调用,就是让AI从嘴炮王变成实干家的关键一步。
---
一、为什么AI需要工具调用?
你有没有发现一个尴尬的事实:ChatGPT再聪明,也没法帮你订机票、查库存、发邮件。
因为它本质上只是一个文本生成器——你给它输入,它给你输出,仅此而已。它没有手,没有脚,没有眼睛,活在一个纯文字的真空里。
但现实世界需要的是行动:查数据库、调API、操作文件、控制设备。
工具调用(Tool Calling)就是给AI装上手和脚的技术。让它在"思考"之后,能够真正"动手"——调用外部工具完成任务,再把结果拿回来继续推理。
这不是锦上添花,这是AI从"聊天机器人"进化成"数字员工"的分水岭。
---
二、三种主流方案:ReAct、Function Calling、MCP
目前业界让AI调用工具,主要有三条路线。每条路线解决不同的问题,适用场景也不同。
2.1 ReAct:让AI边想边做
ReAct = Reasoning + Acting,2022年由谷歌和普林斯顿联合提出。
核心思想极其简单:让模型交替进行"思考"和"行动"。
一个典型的ReAct循环长这样:
思考:用户想知道北京明天的天气,我需要调用天气API
行动:call weather_api(city="北京", date="tomorrow")
观察:返回结果——晴,25°C,微风
思考:已经拿到天气信息,可以回复用户了
行动:回复用户"北京明天晴,25°C,适合出行"
注意这个循环的精髓:Thought → Action → Observation → Thought → ...
模型不是一口气输出答案,而是:
- 先**想**(Reasoning):我该做什么?
- 再**做**(Acting):调用工具执行
- 然后**看**(Observation):工具返回了什么?
- 每一轮都需要模型推理,Token消耗大,速度慢
- 工具定义需要写进Prompt,模型上下文窗口有限
- 多工具协同复杂,容易"想偏"
- 模型经过专门训练,工具调用准确率高
- 支持**并行调用**——一次可以调多个工具
- 参数提取精准,不容易出格式错误
- 各大模型厂商纷纷跟进(Claude、Gemini、通义千问都支持了)
- 每个工具都要写JSON Schema定义,开发成本高
- 工具数量多了(>20个),模型选择准确率下降
- 不同模型的Function Calling格式不统一,迁移成本大
- **Tools**:可执行的操作(创建文件、发消息、查询数据)
- **Resources**:可读取的数据(文件内容、数据库记录)
- **Prompts**:预定义的提示词模板
- 一次开发,到处使用——工具提供方不用为每个AI平台写适配
- AI应用即插即用——装个MCP Server就能用新工具
- 社区生态快速扩张(已有数百个开源MCP Server)
- 协议还在快速迭代,稳定性待验证
- 安全性挑战——MCP Server能执行任意代码,需要严格的权限控制
- 目前主要是本地部署场景,云端多租户方案还不成熟
- **快速验证想法**:用ReAct,写个Prompt就能跑
- **生产级应用**:用Function Calling,准确率和性能都有保障
- **需要接入大量外部工具**:考虑MCP,长期维护成本更低
- 这个工具**做什么**
- **什么时候**该用它(触发条件)
- 返回数据的**格式**
- 边界情况(什么情况下**不该**用)
- 捕获工具执行异常
- 把错误信息**作为Observation返回给模型**
- 让模型决定重试还是换方案
- 最大调用轮次(建议5-10轮)
- 单轮最大工具数(建议3-5个)
- 超时机制(单次调用不超过30秒)
- **只读操作**可以自动执行(查询、搜索)
- **写入操作**必须人工确认(删除、发送、支付)
- **敏感操作**必须审计日志(涉及金额、权限变更)
- 永远不要把API密钥、数据库密码直接暴露给模型
- **多模态工具**:不只是文本API,还能调用图像生成、语音合成、视频处理工具
- **自主工具发现**:模型自己搜索、安装、学习使用新工具,不需要人工预定义
- **工具组合编排**:复杂任务自动拆解成多个工具调用的DAG(有向无环图)
- ReAct Agent完整实现(Python)
- Function Calling最佳实践模板
- MCP Server开发脚手架
- 10个常用工具的Schema定义
- 完整的Agent开发教程(从0到1搭建你的第一个Agent)
- 独家工具调用Prompt模板库
- 一对一问题答疑
4. 继续想:下一步该干嘛?
这种模式的好处是透明可控——你能看到AI每一步在想什么、做了什么,出了问题可以精准定位。
ReAct的局限:
2.2 Function Calling:原生工具调用能力
2023年6月,OpenAI在GPT-3.5/4中推出了Function Calling,这是目前最主流的工具调用方案。
和ReAct不同,Function Calling不是靠Prompt技巧实现的,而是模型原生支持的能力。
工作原理:
第一步:定义工具
你用JSON Schema告诉模型有哪些工具可用:
{
"name": "get_weather",
"description": "获取指定城市的天气信息",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "城市名称,如'北京'"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "温度单位"
}
},
"required": ["city"]
}
}
第二步:模型自动决定调用
用户问"北京天气怎么样",模型不会瞎编一个答案,而是返回:
{
"name": "get_weather",
"arguments": {"city": "北京", "unit": "celsius"}
}
第三步:你的代码执行工具,把结果喂回模型
你的程序拿到这个调用请求,真正去调天气API,拿到结果后把结果作为tool角色消息传回模型,模型基于真实数据生成最终回答。
Function Calling的优势:
Function Calling的局限:
2.3 MCP协议:工具调用的"USB接口"
2024年底,Anthropic推出了MCP(Model Context Protocol),试图解决工具调用的标准化问题。
痛点是什么?
现在每个AI应用要接入工具,都得自己写一套集成代码。接GitHub要写一套,接Slack要写一套,接数据库又要写一套。N个模型 × M个工具 = N×M个集成,维护成本爆炸。
MCP的思路:
定义一个统一协议,让工具提供方只需要实现一次MCP Server,任何支持MCP的AI应用(MCP Client)都能直接调用。
就像USB-C一样——你不需要为每个设备买不同的线,一根线通吃。
MCP的架构:
AI应用(MCP Client)
↕ MCP协议(JSON-RPC over stdio/SSE)
MCP Server(工具提供方)
↕
实际工具/API(GitHub、数据库、文件系统...)
MCP Server暴露三类能力:
MCP的优势:
MCP的局限:
---
三、三种方案怎么选?
| 维度 | ReAct | Function Calling | MCP |
|---|
| 适用场景 | 复杂推理链、多步任务 | 标准化API调用 | 多工具集成、跨平台 |
|---|
| 开发成本 | 低(纯Prompt) | 中(需写Schema) | 高(需实现Server) |
|---|
| 调用准确率 | 中 | 高 | 高 |
|---|
| 生态成熟度 | 成熟 | 最成熟 | 快速发展中 |
|---|
| Token消耗 | 高 | 中 | 低 |
|---|
| 典型框架 | LangChain Agent | OpenAI API | Claude Desktop、Cursor |
|---|