在 AI Agent 的能力体系中,工具调用(Function Calling) 是大模型从 "对话问答" 走向 "任务执行" 的核心拐点,也是所有智能体系统的底层基础。本文结合标准时序流程图,从零拆解单工具调用的全链路执行过程,帮你彻底理解 Agent 是如何让大模型对接真实世界能力的,适合作为技术知识库归档内容。
下图为完整的单工具调用时序流程,覆盖了从用户提问到返回答案的全部环节:

一、参与角色说明
整个流程共有 4 个核心参与方,分工明确,共同构成 "决策 - 执行 - 生成" 的完整闭环:
表格
| 角色 | 定位 | 核心职责 |
|---|---|---|
| 用户 | 任务发起方 | 用自然语言提出具体需求,无需感知底层工具调用逻辑 |
| Agent | 调度执行中枢 | 衔接用户、大模型、外部工具;负责参数组装、工具执行、结果转发、状态管理 |
| 大模型 | 推理决策大脑 | 理解用户意图、判断是否调用工具、匹配工具、提取参数、基于工具结果生成最终回答 |
外部工具(示例:get_weather) |
能力扩展单元 | 提供大模型自身不具备的能力(实时查询、联网搜索、代码执行、数据读写等),输出结构化结果 |
二、分步拆解:工具调用完整执行链路
我们沿着时序图的箭头顺序,一步步拆解每一步的动作与设计逻辑:
第 1 步:用户发起自然语言请求
用户向 Agent 提出问题:杭州天气如何?
- 这是任务的起点,用户仅需用日常自然语言描述需求,不需要知道工具的存在,也无需指定调用方式。
第 2 步:Agent 组装请求上下文
Agent 收到用户问题后,不会直接把问题丢给模型,而是会组装两部分核心信息,形成标准请求参数:
- 用户的原始问题(对话消息)
- 可用工具的完整定义信息(Tools Schema),也就是图中标注的工具信息:
name:工具唯一名称get_weatherdescription:工具功能描述查询天气parameter:工具入参定义city(城市名称)
这一步相当于 Agent 把 "用户问题" 和 "工具说明书" 一起打包,交给大模型做决策判断。 对应的标准工具定义格式(JSON)如下:
json
{
"name": "get_weather",
"description": "查询指定城市的实时天气情况",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "需要查询天气的城市名称"
}
},
"required": ["city"]
}
}
第 3 步:Agent 第一次调用大模型
Agent 将组装好的「用户问题 + 工具列表」作为输入,调用大语言模型。
- 这是第一次模型调用,核心目的是做工具决策,而非直接生成最终回答。
第 4 步:模型进行工具调用判断
大模型接收到请求后,完成两步核心推理:
- 是否需要调用工具:识别到用户询问实时天气,属于自身静态知识库无法覆盖的场景,因此判定需要调用外部工具。
- 工具匹配与参数提取 :通过语义匹配选中
get_weather工具,并从用户问题中提取出参数值city: 杭州。
最终模型向 Agent 返回结构化的「工具调用指令」,也就是图中标注的【调用工具】。
注:这一过程本质是模型通过下一词元预测(Next Token Prediction)生成符合格式的结构化 JSON,并没有独立的 "决策模块",这是 Function Calling 的底层原理。
第 5 步:Agent 执行外部工具
Agent 接收到模型的工具调用指令后,由自身真实执行对应的外部工具:
- 调用天气查询 API,传入参数
杭州 - 获取工具返回的原始结果:
The weather in Hangzhou is sunny!
这是 Agent 与纯大模型的核心边界:大模型只负责 "动脑决策",真正 "动手执行" 的是 Agent。大模型本身无法直接联网、调用接口、操作文件,所有与真实世界交互的动作,全部由 Agent 层完成。
第 6 步:Agent 携带工具结果第二次调用模型
Agent 拿到工具返回的原始数据后,会将「原始用户问题 + 工具执行结果」一起,第二次调用大模型。
- 这一次调用的目的,是让模型基于真实的工具结果,生成符合人类表达习惯的自然语言回答。
第 7 步:模型分析结果,生成最终回答
大模型接收工具返回的结果,理解数据含义后,整理成通顺的自然语言回答:杭州天气晴朗!
第 8 步:Agent 向用户返回最终答案
Agent 将模型生成的自然语言回答返回给用户,整个工具调用流程结束。
- 用户全程只感知到 "问了一个问题,得到了答案",完全感知不到中间两次调用模型、执行工具的复杂过程。
三、核心机制深度解析
3.1 为什么必须调用两次模型?
两次调用是工具调用的标准设计,各司其职,在时序上无法合并:
表格
| 调用阶段 | 执行主体 | 核心动作 | 设计目的 |
|---|---|---|---|
| 第一次调用 | 大模型 | 判断是否调用工具、选择工具、提取参数 | 完成意图理解与决策推理 |
| 工具执行 | Agent | 真实调用接口 / 函数,获取结果 | 安全可控地连接外部能力 |
| 第二次调用 | 大模型 | 基于工具结果生成自然语言回答 | 完成信息整合与内容生成 |
工具结果必须在模型输出调用指令后才能真实获取,因此存在严格的先后顺序。第二次调用的本质,是让大模型基于真实数据 "重新思考并表达",而非简单回传原始数据。
3.2 工具定义的核心作用
工具定义(Tool Schema)就是给大模型看的 "工具说明书",是调用准确率的核心前提:
name:工具的唯一标识,Agent 通过名称匹配执行对应的函数description:工具的功能语义描述,模型依靠它判断 "什么时候该用这个工具",描述越精准,调用准确率越高parameters:工具的入参规范,模型会按照这个格式从用户问题中提取对应参数
3.3 Agent 与大模型的边界
很多初学者会混淆 Agent 和大模型,通过这张图可以清晰划分二者的边界:
- 大模型是纯推理大脑:只负责理解、决策、生成文本,不执行任何真实操作
- Agent 是完整执行体:包裹着大模型,负责和外界交互、调度工具、管理状态、执行指令
没有大模型,Agent 没有智能;没有 Agent,大模型只能停留在对话层面,无法落地执行任何真实任务。
四、从单工具调用到完整 AI Agent
本文讲解的「单轮单工具调用」,是 AI Agent 最基础的最小执行单元。真实业务中的复杂 Agent,都是在这个基础上扩展而来:
- 多工具选择:同时注册数十上百个工具,由模型自主匹配最合适的工具组合
- 多轮规划执行:面对复杂任务,模型自主拆解成多步,依次调用多个工具逐步完成,出错时可自我修正
- 并行工具调用:多个无依赖的工具同时执行,提升任务执行效率
- 记忆与上下文:携带多轮对话历史与任务状态,连续完成跨轮次的复杂任务
- 自主目标驱动:无需用户逐次下达指令,自主设定目标、规划路径、完成长流程任务
五、总结
工具调用(Function Calling)是大模型能力的重要拐点:它让大模型突破了自身静态知识的边界,获得了对接真实世界的能力。而 Agent 正是这套能力的载体与执行者,从单工具调用到多工具多轮规划,最终的演进方向就是具备完整自主执行能力的智能体系统。 理解这张基础流程图,是深入学习所有复杂 AI Agent 机制的起点。