【专栏一:AI基础】-【一张图讲清楚Function Call完整流程】

发布时间:2026/7/15 13:55:38

【专栏一:AI基础】-【一张图讲清楚Function Call完整流程】 文章目录前言一、根据图片逐步拆解1、用户提问流程的起点2、工具说明书模型为什么会知道有哪些工具可以调用3、LLM 第一次工作理解问题、看工具说明、判断是否调用工具4、系统执行工具真正动手的不是 LLM而是外部系统5、执行结果回填给 LLM工具执行完还没有结束6、LLM 第二次工作接收结果再组织最终自然语言回答7、生成最终自然语言回答用户看到的只是最后一层二、用“查天气”案例走一遍完整流程第一步用户提问第二步工具说明一起给到 LLM第三步LLM 第一次工作第五步工具执行结果返回第六步结果回填给 LLM第七步LLM 第二次工作三、思考题前言很多人第一次接触 Function Call 时都会下意识地以为大模型既然知道要查天气、查快递、查订单那它是不是就能自己直接去执行这些工具但真实情况并不是这样。大模型本身擅长的是理解语言、生成内容、做决策它并不会真的自己去点按钮、调用接口或者操作数据库。在 Function Call 流程里大模型真正做的事情其实分成两次第一次理解用户问题看有哪些工具可用判断要不要调用工具并生成工具调用意图第二次接收工具执行结果再组织成用户最终看到的自然语言回答也就是说Function Call 的本质不是“模型自己执行工具”而是模型负责决策系统负责执行结果再返回给模型继续组织答案。对 Function Call 最核心的理解是用户问题和工具说明会一起给到 LLMLLM 第一次负责判断是否需要调用工具并生成工具调用意图系统再根据这个意图真正执行工具执行结果返回后LLM 第二次再基于结果组织最终自然语言回答。一、根据图片逐步拆解1、用户提问流程的起点Function Call 的起点永远是用户先提出一个自然语言问题。比如帮我查一下今天成都的天气帮我看看我的订单现在到哪了帮我发一封邮件给领导帮我查一下这个产品库存还有多少这些问题有一个共同点用户说的是“需求”不是“API 调用命令”。用户不会告诉模型调哪个接口参数怎么写用哪个工具返回值怎么处理这些都需要后面的系统和模型协同完成。所以在第一步里用户只是提出了一个自然语言层面的任务需求。2、工具说明书模型为什么会知道有哪些工具可以调用这是很多初学者最容易困惑的地方大模型怎么会知道自己可以调天气工具、查订单工具或者发邮件工具答案是因为系统会提前把可用工具的信息告诉它。也就是说在 Function Call 流程里送进 LLM 的不只是用户问题通常还会包括一份“工具说明书”。这份说明里一般会包含工具名称工具作用参数说明参数类型必填字段比如一个天气工具系统可能会告诉模型工具名get_weather功能查询指定城市、指定日期的天气参数city、date这样模型才知道哦原来我现在手上有一个可以查天气的工具。所以模型不是“自己发现工具”而是系统在当前上下文里把工具能力显式暴露给它。3、LLM 第一次工作理解问题、看工具说明、判断是否调用工具这一步是 Function Call 的第一次核心推理。模型第一次拿到的信息通常包括两部分用户问题工具说明它要做的事情包括第一理解用户问题。比如用户问的是天气、订单、邮件还是普通问答。第二看工具说明。看看当前有哪些工具可用每个工具分别能干什么。第三判断要不要调用工具注意了不是所有问题都要调工具。有些问题模型自己就能答比如 - 什么是函数调用 - RAG 和 Function Call 有什么区别 这些就不一定需要工具。但像“今天成都天气怎么样”这种实时问题 模型就会判断这个问题我不能只靠自己的知识回答需要调工具。第四生成工具调用意图模型在这一步还没有真正执行工具。它只是生成一段结构化的调用意图比如我要调用哪个工具需要传什么参数所以这一步更准确地说不是“模型执行工具”而是模型先生成一份“工具调用请求”。4、系统执行工具真正动手的不是 LLM而是外部系统当 LLM 生成了工具调用意图之后接下来真正执行工具的并不是模型而是外部系统。这可能是后端服务Agent 框架中间调度层应用程序本身也就是说系统拿到模型生成的调用请求后才会真的去请求天气 API查询订单数据库调用邮件发送服务访问地图或搜索接口所以如果要用一句话总结这里的分工那就是LLM 负责决定“做什么”系统负责真正“去做”。这一点非常关键因为它正是Function Call 和普通自然语言生成的本质区别之一。5、执行结果回填给 LLM工具执行完还没有结束这是另一个很容易被忽略的步骤。很多人以为系统执行完工具后流程就结束了。但实际上在大多数 Function Call 场景里工具结果还需要再回填给 LLM。比如天气工具执行完之后系统可能拿到了这样一份结构化结果城市成都日期今天天气阴天气温18℃~24℃空气质量良这份结果本身更像是机器可读的原始数据还不是最终给用户看的自然语言回答。所以这时候系统会把这份执行结果再交回给 LLM。这一步的意义是让模型基于真实工具结果再进行第二次组织和表达。6、LLM 第二次工作接收结果再组织最终自然语言回答当工具结果返回给模型之后LLM 就开始第二次工作。这一次它不再主要负责“判断要不要调工具”而是负责理解工具执行结果提取对用户最有用的信息组织成自然语言生成最终回答还是以天气为例工具返回的是结构化数据但用户最终看到的可能是今天成都阴天气温 18℃ 到 24℃空气质量良适合外出建议带一件薄外套。这时候你就会发现用户最终看到的是一句很自然的话但它其实不是模型“凭空想出来”的而是模型在第二次拿到工具结果后再整理出来的。7、生成最终自然语言回答用户看到的只是最后一层从用户角度看整个过程可能只是一瞬间提一个问题得到一个答案但从系统内部看其实已经走完了一整条链路用户提问工具说明输入给模型模型第一次判断并生成调用意图系统执行工具工具结果回填给模型模型第二次组织回答输出最终自然语言结果所以最终回答其实只是这条完整链路的最后一个环节。二、用“查天气”案例走一遍完整流程用户提问帮我查一下今天成都的天气。第一步用户提问系统收到一个自然语言需求。第二步工具说明一起给到 LLM系统同时告诉模型你现在可以使用一个天气工具工具名叫 get_weather输入参数包括 city 和 date第三步LLM 第一次工作模型理解问题后判断这是一个实时信息问题不能只靠自己已有知识回答当前正好有天气工具可用所以应该调用 get_weather参数是city成都date今天第四步系统执行工具系统根据模型生成的调用意图真正去请求天气接口。第五步工具执行结果返回系统得到天气结果阴天18℃~24℃空气质量良第六步结果回填给 LLM系统把这份结构化结果再交回给模型。第七步LLM 第二次工作模型基于返回结果把它组织成用户能直接看懂的话今天成都阴天气温 18℃ 到 24℃空气质量良适合外出建议带一件薄外套。到这里一个完整的 Function Call 流程才算真正结束。三、思考题大模型到底是怎么知道有哪些工具可以调用又是怎么选中正确工具的

相关新闻