Function Calling 的完整流程是什么?

考查重点:调用生成、执行与结果回填。提供工具定义,模型生成调用,应用校验执行,按调用 ID 回填真实结果,再由模型继续或回答

本题目录

参考答案

核心回答

Function Calling 是模型根据用户问题和工具定义,生成工具名称及结构化参数,再由应用执行工具、把结果交回模型的过程。完整流程可以分成五步:提供工具定义、模型生成调用、应用校验并执行、按调用标识回填结果、模型继续判断或回答。

例如用户问北京天气,应用把天气工具的用途和城市参数说明发给模型。模型提出查询北京的调用,应用实际请求天气服务,再把查询结果关联到这次调用交回模型,模型才据此组织回答。工具定义不代表函数已经执行;一次任务也可能不调用工具,或者连续调用多轮。

从工具定义到最终回答

这里以应用执行自定义工具的常见方式为例,模型供应商托管的工具可以由其服务端完成执行。

第一步,应用准备工具定义和对话上下文。 工具定义通常包括名称、用途描述和参数 Schema。名称用于分发,描述帮助模型判断何时使用,Schema 说明参数类型、必填项等约束。例如 get_weather 需要 city,可以让温度单位使用有限的枚举。应用把本次问题、必要历史和可用工具一起发送给模型;在框架里,bind_tools 主要完成工具定义的绑定,执行仍需工具执行器或 Agent 运行时。

第二步,模型决定直接回答,还是提出工具调用。 如果需要外部数据,模型返回结构化的工具名和参数,常见协议还会附带调用 ID。应用应解析接口提供的调用字段,不能仅凭回答中出现“我要查天气”就认为有一次有效调用。

第三步,应用检查调用并执行。 应用确认工具存在、参数符合要求,并结合登录用户等可信上下文检查可访问范围,再调用对应函数或接口。结构合法只说明参数满足格式约束,不能证明城市识别正确、资源属于当前用户或操作符合业务条件。

第四步,把实际执行结果关联到原调用。 保留模型提出调用的消息,并按照所用 API 的格式回传工具结果。例如 LangChain 的 ToolMessage 用 tool_call_id 对应原调用;不同供应商的消息字段可能不同。并行查询多座城市时,结果也要各自对应,不能按返回先后猜测归属。查询失败时返回明确的失败信息,不能把模型预想的数据当成工具结果。

第五步,让模型根据结果继续。 信息足够时生成最终回答;还缺信息时可以提出新的工具调用,或向用户询问。应用负责设置调用次数、总时长等停止条件。因此,简单查询常见两次模型请求,但“两次”不是整个机制的固定要求。

下图重点看职责:模型提出调用,应用执行并回填,结果再进入下一次判断。

%%{init: {"themeVariables":{"fontSize":"16px"},"flowchart":{"nodeSpacing":16,"rankSpacing":30,"padding":10}}}%%
flowchart TD
    A["应用提供问题、上下文<br/>和工具定义"] --> B["模型判断下一步"]
    B -->|可以回答| C["返回答案"]
    B -->|需要工具| D["模型生成工具调用<br/>工具名、参数、调用标识"]
    D --> E["应用校验并执行<br/>或返回失败信息"]
    E --> F["应用关联调用标识<br/>回填实际结果"]
    F --> G{"应用检查<br/>是否继续?"}
    G -->|允许| B
    G -->|达到上限| H["停止,说明未完成部分"]

图中的循环由应用或框架驱动。模型给出一次调用意图后,不会自行跳进业务进程执行函数。

怎样判断这条链路接对了?

可以先检查一段最小消息轨迹。下面是机制示意,天气数据为假设值,不是某家 API 的完整请求格式:

用户:北京现在多少摄氏度?
模型:调用 call_1,工具 get_weather,参数 {"city":"北京","unit":"celsius"}
应用:执行天气查询,得到 {"city":"北京","temperature":26,"unit":"celsius"}
应用:回填 call_1 对应的工具结果
模型:根据查询结果,北京当前为 26°C。

排查时沿着“是否产生调用 → 参数是否正确 → 工具是否实际执行 → 结果是否对应并回填 → 模型是否使用结果”检查。只有拿到了 tool_calls,还不能说明外部系统已经执行成功。

追问

多个工具调用能一起执行吗?

没有数据依赖的查询可以在模型、接口和运行时支持时并行执行;后一步需要前一步返回的订单号等数据时,应先取得结果。并行不改变调用与结果的一一对应要求,也不能越过业务约束。

工具调用成功,任务就成功了吗?

还要检查是否查对对象、结果是否完整、最终回答是否准确使用了结果。超时、重试和重复执行等问题,可结合如何提高工具调用可靠性继续展开。

对应教程

参考资料

  • 国内:JavaGuide:大模型结构化输出——Function Calling 到底调用了什么:参考模型表达调用意图、应用执行工具的职责划分,说明业务参数为什么仍需由应用校验。
  • 国内:阿里云:Function Calling:参考完整的调用交互过程,串起模型生成调用、应用执行、结果回传与后续多轮调用。
  • 国内:AgentScope:工具:结合工具定义的用法,解释函数怎样转成模型可见的 Schema,以及应用执行上下文为何要与模型生成的参数区分。
  • 国外:Claude:Define tools:依据工具定义和调用字段的说明,解释模型需要看到哪些信息,以及调用请求怎样表达。
  • 国外:LangChain:Tools:参考工具定义、执行与结果返回的用法,把 Function Calling 的各步骤对应到框架中的实现。

相关面经

49 篇

快手

Agent 开发工程师
二面
查看原面经 →
大模型的工具调用大致经历哪些步骤?选择或设计工具时,你会如何权衡能力边界、调用成本、可靠性和安全性?

携程

大模型算法工程师
一面
查看原面经 →
说明从用户自然输入到调用后端接口的完整链路

麒麟软件

后端研发工程师
一面
查看原面经 →
你的 Agent 项目中,Tool Calling 是如何使用的?

公司未注明

面经合集实习
查看原面经 →
工具有哪些?怎么发现和调用

纷享销客

后端开发工程师
实习
查看原面经 →
工具是如何注入大模型进行循环调用与观察的?
展开剩余 44 篇面经

蚂蚁集团

AI Agent 应用工程师
查看原面经 →
讲解大模型工具调用原理,以及工具的选型思路

汽车之家

面经合集
查看原面经 →
**17. Agent 是如何调用工具的?Function Calling 的原理是什么?**

阿里巴巴

Agent 开发工程师
一面
查看原面经 →
追问
更底层的实现有没有了解过?agent怎么知道要进行工具调用,以及选择哪个工具调用。

东方财富

AI 应用开发工程师
一面
查看原面经 →
Agent 具体是怎样调用一个工具的?
大模型本身只输出文本,为什么它还能执行工具或命令?完整的调用链路是什么?

水滴

AI全栈
校招一面
查看原面经 →
Agent 中的工具调用能力是如何实现的?
什么是 Function Calling?

水滴

AI 全栈工程师
校招秋招一面
查看原面经 →
Function calling、MCP、skills讲一下?有自己写过skills的实践吗?

滴滴

Java 开发工程师
一面
查看原面经 →
外部工具和数据源是怎么接入的?

网易

Agent 开发工程师
一面
查看原面经 →
Tool调用流程是什么?如何设计Tool的description以提升调用准确率?

懂车帝

后端开发工程师
秋招一面
查看原面经 →
● 如果需要将工具调用的结果提供给模型生成最终回答,如何实现?

哔哩哔哩

AI Agent 开发
一面
查看原面经 →
### 11、Function Calling和Tool Calling的执行流程是什么?模型是如何判断需要调用工具,以及生成对应参数的?

字节跳动

AI 应用开发工程师
一面
查看原面经 →
项目追问
选一个你实现的工具,讲清完整调用链路:模型如何知道工具接收哪些参数?模型返回调用请求后,程序如何处理?执行结果如何返回给模型?

恒生电子

AI 应用开发工程师
校招秋招
查看原面经 →
Function Calling 如何实现大模型调用外部 API?模型本身无法执行函数,在整个机制中承担的核心作用是什么?

百度

后端开发工程师
一面
查看原面经 →
Function Calling的原理了解吗?JSON Schema起到什么作用?

阿里巴巴

AI 全栈开发工程师
一面
查看原面经 →
项目追问
你说用到的 ReAct 模式,工具调用是怎么做的?是基于 Spring AI 还是 LangChain 还是某些框架实现的?

快手

AI 全栈开发工程师(音视频)
二面
查看原面经 →
你是否了解主流 Agent 架构、工具调用链路和 Skill 评测等概念?

BIGO

客户端开发工程师
秋招一面
查看原面经 →
FunctionCall

蚂蚁集团

Agent 开发工程师
秋招一面
查看原面经 →
大模型调用外部工具的底层机制是什么?模型如何决定调用哪个工具?

阿里巴巴

AI 应用开发工程师
秋招一面
查看原面经 →
functioncalling

宁波银行

校招秋招
查看原面经 →
工具调用

阿里巴巴

Agent 应用开发工程师
一面
查看原面经 →
Agent 是如何实现“调用一个函数/工具”的?底层原理是什么?

蚂蚁集团

全栈开发工程师
社招一面
查看原面经 →
Agent是如何调用底层工具

快手

AI Agent 开发
一面
查看原面经 →
Function Calling 是怎么设计的?

法本信息

AI Agent 开发
查看原面经 →
你项目里的工具系统是怎么做的?比如一个新工具从定义、注册、被Agent发现,到最后被调用,完整流程是什么?

公司未注明

后端开发
查看原面经 →
你项目里的 Agent 自主决策、工具调用链路是怎么设计的?

百度

Java 开发工程师(智能客服)
实习二面
查看原面经 →
模型已经思考完成,也选择好了工具,接下来它是怎么真正调用工具的?

阿里巴巴

Agent 应用开发工程师
查看原面经 →
项目二中Function Calling的流程是怎样的?

字节跳动

全栈开发工程师(Agent)
一面
查看原面经 →
agent是怎么调用工具的?

阿里巴巴

Agent
查看原面经 →
项目二中Function Calling的流程是怎样的?

阿里巴巴

大模型推荐算法工程师
一面
查看原面经 →
agent工具调用调用

快手

面经合集
查看原面经 →
追问
刚才提到工具上下文,聊聊你对Function Call的理解。
介绍一下Function Call的流程,模型是如何知道该调用哪个工具的?

阿里巴巴

后端开发工程师(AI)
实习一面
查看原面经 →
Function Calling 的原理是什么?你怎么理解 Tool Use?

阿里国际

AI 应用开发
一面、二面
查看原面经 →
项目中怎么实现fuction calling的

快手

AI Agent
实习一面
查看原面经 →
Function Calling 是怎么设计的?

阿里巴巴

AI 应用开发工程师
实习一面
查看原面经 →
ai开发过程中,调用工具,记忆管理怎么实现的

美团

后端开发工程师
暑期实习一面
查看原面经 →
Tool Calling 是什么?Agent 怎么自主决策调用?

字节跳动

Agent 开发工程师
实习一面
查看原面经 →
你的Agent具备哪些核心能力?工具调用的整体流程讲一下,工具注册、解析、调用、结果回传全链路

蚂蚁集团

Agent 开发工程师
实习一面
查看原面经 →
说一说你对function calling的理解。

蚂蚁国际

AI 应用 / Agent 开发
暑期实习一面
查看原面经 →
说一说你对function calling的理解。

阿里巴巴

AI 应用开发工程师
暑期实习二面
查看原面经 →
项目追问
LocalLife是你自己做的项目吗,说一下其中的function Calling完整的工作流

快手

后端开发
日常实习二面
查看原面经 →
Agent 工具调用的完整业务流程是怎样的?

美团

后端开发
日常实习一面
查看原面经 →
了解 MCP 吗?那 Function call 呢?
手机里有个 Chatbot,我跟他说帮我点一份外卖,那么这个时候只有 Function call 是怎样的?

腾讯

后端开发工程师
一面
查看原面经 →
agent 如何执行工具的

字节跳动

AI 开发工程师
实习一面
查看原面经 →
tool调用机制

字节跳动

Agent 开发工程师
一面、二面、三面
查看原面经 →
function calling

收录题集

12 个来源,共20 份题集
展开剩余 15 份题集

Agent开发面试题

摸鱼酱mio · 个人整理 · 2 条原题

查看题集 →

AI Agent 面试 Top50 必刷题

程序员马丁 · ai-handbook · 1 条原题

查看题集 →

LLM 工具调用面试题

小林 Coding · 个人整理 · 1 条原题

查看题集 →

工具管理:参数校验、工具路由与百级工具库

Onefly · zero2Agent · 3 条原题

查看题集 →

Agent 核心面试题

阿东玩 AI · AgentGuide · 1 条原题

查看题集 →

后训练综合问答

阿东玩 AI · AgentGuide · 1 条原题

查看题集 →

Agent与工具调用

阿东玩 AI · AgentGuide · 9 条原题

查看题集 →
展开其余 6 条原题

AIGC时代AI Agent基础

Rocky Ding · AIGC-Interview-Book · 1 条原题

查看题集 →

MCP与A2A协议

Rocky Ding · AIGC-Interview-Book · 2 条原题

查看题集 →

Agent 工程追问

Rocky Ding · AIGC-Interview-Book · 1 条原题

查看题集 →

阿里巴巴问答汇编

Rocky Ding · AIGC-Interview-Book · 1 条原题

查看题集 →

哔哩哔哩高频面试题

Rocky Ding · AIGC-Interview-Book · 1 条原题

查看题集 →

AI 机制与工程问答

Guide · JavaGuide · 1 条原题

查看题集 →

模型接口与评测问答

Guide · JavaGuide · 3 条原题

查看题集 →

大模型基础面试题

Guide · JavaGuide · 1 条原题

查看题集 →

相关题目

4 题