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 的各步骤对应到框架中的实现。

相关面经

104 篇

阿里巴巴

AI Agent 应用开发工程师
查看原面经 →
Function Calling 的完整流程是什么?在你的项目里怎么用?

小米

大模型算法
一面、二面
查看原面经 →
模型和工具怎么交互?工具报错怎么处理?

快手

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

携程

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

麒麟软件

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

公司未注明

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

纷享销客

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

蚂蚁集团

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起到什么作用?

字节跳动

前端开发
校招一面、二面
查看原面经 →
Function Calling 的原理是什么?
追问
在 Function Calling 中,大模型本身会执行这个方法吗?

阿里巴巴

AI 研发
一面
查看原面经 →
完整的工具调用链路是怎样的?模型生成工具调用 JSON之后代码层做什么?

快手

前端
实习一面
查看原面经 →
我看你这里有提到像 SSE 啊以及 tool call 这种,你能具体介绍一下吗?

字节跳动

Agent 开发
一面
查看原面经 →
什么是Functional calling?

字节跳动

客户端开发
秋招一面
查看原面经 →
大模型是怎么调用外部工具的?
追问
大模型怎么知道要调用哪个工具?调用后的结果怎么返回?

帆软

后端开发
秋招二面
查看原面经 →
Agent的工具调用链路、skill开发、CLI脚本的设计实现细节?

美团

面经合集实习
查看原面经 →
平常有使用过 Tool Calling 吗?

快手

Java 开发实习生(商品方向)
实习一面
查看原面经 →
模型如何判断需要调用哪些工具?

字节跳动

数据开发
秋招
查看原面经 →
介绍大模型怎么调用工具(LLM Agent)
云端接口包含messages、tools参数,框架如何控制工具调用?

快手

后端开发
秋招一面
查看原面经 →
skill和工具是怎么被大模型调用的

阿里巴巴

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

快手

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

字节跳动

面经合集社招
查看原面经 →
4️⃣ 追问:工具调用的入参怎么让模型自己填?

公司未注明

面经合集
查看原面经 →
Function calling的原理,模型是怎么"知道"要调工具的

启云方

AI Agent 开发
一面
查看原面经 →
以“查询天气工具”为例,用户说一句自然语言后,工具是怎么被触发的?

BIGO

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

蚂蚁集团

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

阿里巴巴

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

宁波银行

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

阿里巴巴

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

新蛋

AI 软件工程师实习生
实习一面
查看原面经 →
工具调用实现?(还是没太懂什么意思,答了注册工具,再LLM 调用)

蚂蚁集团

AI应用开发
校招秋招一面
查看原面经 →
模型是怎么调用工具的

阿里巴巴

AI 应用开发工程师
日常实习一面
查看原面经 →
需求交给模型后,模型返回的是什么?

蚂蚁集团

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

哔哩哔哩

前端开发实习生
日常实习一面
查看原面经 →
大模型想调用一个读的工具,整个过程是什么样的?

快手

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

法本信息

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

字节跳动

Agent 开发工程师
一面、二面
查看原面经 →
工具的话你会用MCP之类的吗?还是就自己写代码写?你觉得大模型的工具实现有什么好处吗?

公司未注明

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

公司未注明

面经合集
查看原面经 →
### 1. 你了解的 Tool 调用机制是怎样的?
### 2. 介绍一下 Function Call 原理,模型生成的 JSON 如何通过逻辑触发表层代码执行并返回给模型?
### 7. Tool 层怎么定义的?Tool 层具体在 Agent 运行中是怎么被调用的?

百度

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

阿里巴巴

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

小红书

AI应用开发工程师
查看原面经 →
MCP 之前是怎么实现和 AI 调用外部工具的?了解吗?

字节跳动

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

ThunderBit

AI 后端
实习一面、二面
查看原面经 →
AI 是怎么调用工具的?整个流程是怎么样的?
这个工具是否执行,是由大模型决定的,还是由外面的主线程来执行的?

哔哩哔哩

AI 应用研发实习
实习二面
查看原面经 →
工具的触发与调用

阿里巴巴

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

字节跳动

前端开发
实习三面
查看原面经 →
Function Calling 了解吗?

公司未注明

Java 后端开发
实习
查看原面经 →
Function Call 是什么?
Function Call 在智能体中怎么实现工具调用?
大模型返回 JSON 后,后端如何解析并调用工具?

阿里巴巴

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

火齐境

实习一面
查看原面经 →
Python Agent项目介绍与Function Call

快手、金山云、蔚蓝云创、深势科技、滴滴

面经合集实习
查看原面经 →
了解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的理解。

公司未注明

AIGC 研发实习生
实习
查看原面经 →
Agent 是具体如何调用外部工具的?

蚂蚁国际

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

阿里巴巴

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

阿里巴巴

C++客户端
一面
查看原面经 →
工具注册和工具调用这部分,你是怎么设计的?

阿里巴巴

AI Agent 应用开发
二面
查看原面经 →
详细阐述大模型实现函数调用(Function Call)的完整流程,模型是如何将自然语言语义转化为标准化结构化参数的?

字节跳动

后端开发
日常实习二面
查看原面经 →
mcp是什么 functioncalling是什么

钉钉

AI 应用开发
一面
查看原面经 →
function call

快手

AI 应用开发
一面
查看原面经 →
刚才提到 工具上下文,聊聊你对 function call 的理解

阿里巴巴

AI 应用研发实习生
实习一面
查看原面经 →
LLM怎么匹配工具参数

快手

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

腾讯

后台开发
一面
查看原面经 →
Agent如何决定什么时候调数据库,什么时候生成图表?这个决策是怎么实现的?
了解过工具的组成吗(name?description?prompt)?LLM输出框架Functioncalling?

阿里巴巴

AI 应用开发 / Agent
一面
查看原面经 →
大模型在调用这个工具的时候,比如说有 MCP 之前,它的调用的处理流程是什么样子的?

字节跳动

Agent 开发
实习一面
查看原面经 →
Agent 的记忆、工具调用、知识库检索等关键组件是如何实现的?
Agent 工具调用的完整业务流程是怎样的?

影石创新

AI 开发
日常实习二面
查看原面经 →
function call 的原理你知道吗?
大模型是怎么去调用 function call、又是怎么执行的?
比如我本地写了一个 Java 进程并配好了入参、出参和描述,大模型会直接去运行这个 Java 函数吗?

公司未注明

面经合集
查看原面经 →
LLM 是如何实现工具调用的?详细讲讲 Function Calling 的底层机制与执行流程

公司未注明

面经合集
查看原面经 →
什么是 Tool Calling?

美团

AI 软件开发实习生
实习暑期一面
查看原面经 →
介绍多智能体的项目,智能体如何进行自主工具调用

虾皮

AI 开发实习生
日常实习二面
查看原面经 →
tool层怎么定义的?tool层具体在agent运行是怎么被调用的?

美团

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

美团

后端开发实习生
实习暑期一面
查看原面经 →
skills,tool,mcp,openclaw 都有问到,以及自己在科研或者实习项目中怎么用,有什么心得

字节跳动

后端
实习一面
查看原面经 →
讲讲工具调用和多智能体协作

腾讯

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

腾讯

后端开发
暑期实习一面
查看原面经 →
手机里有个chatbot,我跟他说帮我点一份外卖,那么这个时候只有Function call是怎样的?

阿里巴巴

AI 应用开发
实习一面
查看原面经 →
LLM返回的调用工具参数具体是什么,怎么写工具

百度

AIGC 算法实习生
实习
查看原面经 →
在 Agent 或助手系统里,tool calling 一般适合解决什么问题?

快手

Agent 算法
暑期实习一面
查看原面经 →
模型怎么去调用工具的?

腾讯

后端开发
暑期实习一面
查看原面经 →
Agent 插件化:Agent 工具链实现了什么功能?是类似于 MCP 还是 Function Calling?Function Calling 具体做了什么事情?AI 是如何调用到你后端写的代码接口的?

美的

AI Agent
实习
查看原面经 →
什么是Function Calling(工具调用)?在LangChain中如何实现?

字节跳动

AI 全栈工程师
实习一面、二面
查看原面经 →
简述一下大模型调用数据库工具的全链路
什么是function calling

字节跳动

AI 开发
一面
查看原面经 →
你了解的tool调用机制是怎样的?

字节跳动

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 题