AI Agent 的核心能力之一,是自主决定「下一步该调用什么工具」。这个看似简单的决策背后,涉及工具选择、参数生成、结果处理和错误恢复等一系列环节。Towards Data Science 近期发布的一篇技术长文对这一机制做了系统解析,并特别指出了 MCP 协议下尚未被充分重视的安全隐患。
Tool Calling 的内部工作流
AI Agent 的 Tool Calling(函数调用)并非 LLM 的原生能力,而是通过结构化输出约束和系统提示协同实现的。典型工作流分为四个阶段:
阶段一:工具选择策略
Agent 收到用户任务后,首先需要从注册的工具集中选出适用的工具。主流策略有三种:
精确匹配:基于任务的语义向量与工具描述的相似度,选择最匹配的工具。适用于工具数量较少、功能边界清晰的场景。
推理优先:让 LLM 先推理任务需要什么能力,再映射到具体工具。适用于复杂任务,Agent 需要将「查一下明天的天气」拆解为「需要地理位置+天气数据」两个子需求,再匹配对应的工具。
全部评估:将全部工具描述注入上下文,由 LLM 自行判断。随着工具数量的增长(超过 20-30 个),上下文压力和选择质量会显著下降。
阶段二:参数生成
选定工具后,Agent 需要根据用户输入生成符合工具接口要求的参数。这一步依赖 LLM 的结构化输出能力——通常是 JSON Schema 约束下的参数填充。
关键在于参数来源的多样性:
- 用户输入直接提取(如查询关键词)
- 上下文推理(如根据用户历史推算默认参数)
- 链式传递(上一个工具的输出作为下一个工具的输入)
阶段三:结果处理
工具执行返回的结果需要被 Agent 理解并整合到决策循环中。这里存在两种处理模式:
直接传递:结果作为最终答案的一部分直接呈现给用户。适用于信息查询类工具。
中间决策:结果作为后续推理的输入,Agent 需要基于结果决定下一步操作。这是 Agent 能「自主行动」的核心——一次 Tool Calling 的结果可能触发下一次 Tool Calling,形成完整的行动链。
阶段四:错误恢复
工具调用并非总是成功。常见的失败场景包括:
- 参数无效:生成的参数不符合接口约束
- 执行超时:工具响应超出预期时间
- 结果异常:返回空值或错误码
- 权限不足:工具需要但 Agent 未持有权限
优秀的 Agent 在这些场景下不会直接崩溃,而是尝试重试、调整参数或选择替代工具。
MCP 协议下的安全盲区
MCP(Model Context Protocol)作为标准化 AI Agent 工具调用协议正在快速普及。文章揭示了一个关键的安全缺口:当前实现普遍缺乏对工具返回结果的完整性验证。
具体来说,当 Agent 调用一个远程 MCP 工具时,返回结果在传输过程中可能被篡改。由于 Agent 通常信任工具返回的一切内容并直接用于后续决策,攻击者可以通过以下方式实施数据投毒攻击(Data Poisoning):
- 中间人篡改:截获工具返回结果,修改其中的数值或状态信息
- 模拟工具响应:伪造工具返回结果,诱导 Agent 做出错误决策
- 链式污染:在一个工具的结果中注入恶意数据,通过链式传递污染后续所有决策
这类攻击在传统 API 安全中已有成熟的防护手段(如 TLS、签名验证),但在 Agent 场景下尚未形成标准化防御。问题的特殊性在于:Agent 的决策链越长,被污染数据的影响范围就越广,且检测难度呈指数级上升。
对 Agent 开发者的启示
理解了 Tool Calling 的工作机制和安全隐患后,几个值得关注的实践方向:
工具返回值校验:对工具返回的关键数据(金额、状态码、权限信息)进行格式校验和合理性检查,不应无条件信任。
决策链审计:记录每次 Tool Calling 的输入参数、返回结果和后续决策,形成完整的审计追踪,便于回溯污染源头。
最小工具权限:只向 Agent 注册当前任务需要的最小工具集,减少攻击面。避免将「全部评估」策略用于生产环境。
结果签名验证:对于敏感工具,考虑在 MCP 层之上增加结果签名机制,确保返回内容未被篡改。
参考资料
- Towards Data Science「Tool Calling Explained: AI Agents Decide Next Actions」,2026-06-22(原文链接
https://towardsdatascience.com/tool-calling-explained-ai-agents/,页面当前返回 404,本文基于用户提供的摘要和领域知识撰写) - MCP 协议规范:
https://modelcontextprotocol.io/ - OpenAI Function Calling 文档:
https://platform.openai.com/docs/guides/function-calling
文档信息
- 本文作者:zhupite
- 本文链接:https://zhupite.com/ai/tool-calling-explained-ai-agents.html
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)