智能体面试准备(十八):Function Calling 全链路——Agent 真正动手的最后一公里
智能体面试准备十八Function Calling 全链路——Agent 真正动手的最后一公里前面讲了单 AgentReAct、多 AgentB15、安全B16、规划B17。但所有这些要落地都绕不开一个最基础也最关键的能力Function Calling函数调用——让 LLM 决定调哪个工具、传什么参数。这一篇把全链路从定义到生产跑通工具 schema 设计 → 模型决策 → 参数解析 → 执行 → 结果回填 → 并行调用与错误处理。每节给原理 → 代码 → 面试速答 高频追问。配合 B14MCP看刚好从单进程工具走到跨进程协议。一、Function Calling 在 Agent 链路里的位置它是 LLM 与外部世界之间的接口层用户意图 │ ▼ ┌─────────┐ ① 选工具填参 ③ 回填结果 │ LLM │◀────────────────┐ └────┬────┘ │ │ ② tool_call(JSON) │ ▼ │ ┌─────────┐ │ │ 执行器 │──▶ 真实工具/API │ └─────────┘ │ │ ④ observation │ └─────────────────────┘没它LLM 只能说有它LLM 才能做。二、工具 Schema怎么告诉模型有哪些工具用 JSON Schema 描述每个工具的元信息喂给模型{name:get_weather,description:查询指定城市当前天气,parameters:{type:object,properties:{city:{type:string,description:城市名如 北京},unit:{type:string,enum:[celsius,fahrenheit],default:celsius}},required:[city]}}关键原则description 写清楚什么时候用、参数怎么填模型靠它选工具。描述含糊会导致选错工具或漏填参数。三、模型决策与参数解析主流模型GPT-4o、Qwen、GLM 等原生支持 function calling返回结构化的 tool_callsimportopenai,jsontools[get_weather_schema,search_schema]# 上面的 JSON Schema 列表respopenai.chat.completions.create(modelgpt-4o,messages[{role:user,content:北京今天天气咋样}],toolstools,tool_choiceauto,# auto模型自选也可强制指定)msgresp.choices[0].messageifmsg.tool_calls:forcallinmsg.tool_calls:namecall.function.nameargsjson.loads(call.function.arguments)# 模型填的参数print(name,args)# get_weather {city:北京}面试速答tool_choiceauto 和强制指定有什么区别auto 让模型自己判断是否调用、调哪个强制如 {type:function,function:{name:x}}则模型必须调用指定工具常用于固定流程。四、执行器调用真实工具并回填把模型给的调用转成真实执行再把结果作为新消息回传给模型defdispatch(name,args):ifnameget_weather:returnreal_weather_api(args[city])ifnamesearch:returnreal_search(args[query])raiseValueError(funknown tool{name})# 把 assistant 的 tool_call 和 tool 结果都加入上下文messages[{role:user,content:北京今天天气咋样}]respopenai.chat.completions.create(modelgpt-4o,messagesmessages,toolstools)msgresp.choices[0].messagemessages.append(msg)# 必须保留带 tool_calls 的 assistant 消息forcallinmsg.tool_calls:resultdispatch(call.function.name,json.loads(call.function.arguments))messages.append({role:tool,tool_call_id:call.id,content:str(result)})finalopenai.chat.completions.create(modelgpt-4o,messagesmessages,toolstools)print(final.choices[0].message.content)# 自然语言回答注意tool 消息必须带 tool_call_id 且对应 assistant 的 call否则 API 报错。五、并行调用与错误处理生产必备5.1 并行调用模型可以在一次回复里返回多个 tool_call如查北京和上海天气callsmsg.tool_callsor[]results[dispatch(c.function.name,json.loads(c.function.arguments))forcincalls]# 用线程池并发执行真实工具缩短延迟fromconcurrent.futuresimportThreadPoolExecutorwithThreadPoolExecutor()asex:resultslist(ex.map(lambdac:dispatch(c.function.name,json.loads(c.function.arguments)),calls))5.2 错误处理与兜底defsafe_dispatch(call):try:returndispatch(call.function.name,json.loads(call.function.arguments))exceptExceptionase:# 把错误作为 observation 回传让模型自我修正如换参数/换工具returnfERROR:{type(e).__name__}:{e}。请修正参数或换工具重试。把错误回传而非中断模型往往能纠错例如把城市名拼写改对。六、常见坑与最佳实践坑现象对策参数 JSON 不合法arguments 不是合法 JSON用 json.loads 容错 让模型重生成工具描述含糊选错工具/漏必填写清 description required上下文丢 tool_call_idAPI 报不一致严格保留 assistanttool 消息对工具执行慢/超时整轮卡住超时熔断 并行 降级工具返回过大撑爆上下文截断/摘要后再回填面试速答为什么要把工具结果回填给模型而不是只执行因为 LLM 是无状态的它需要根据工具真实返回继续推理例如天气是雨建议带伞不回填模型就不知道结果、无法生成最终回答。七、面试速答 高频追问清单汇总速答 TOP 81. Function Calling 是 LLM 调外部工具的接口层含 schema→决策→解析→执行→回填。2. 工具用 JSON Schema 描述description 决定模型会不会选对。3. 模型返回 tool_callsname arguments JSON。4. 执行后必须以 roletool 且带 tool_call_id 回填上下文。5. 并行调用一次返回多个 call用线程池并发。6. 错误应回传 observation 让模型自我修正而非直接中断。7. tool_choiceauto 让模型自选也可强制指定。8. 坑JSON 不合法、描述含糊、丢 id、返回过大。追问清单- 模型有时不按 schema 填参、编造字段怎么约束- 几十上百个工具时全塞进 context 会爆怎么裁剪tool retrieval- Function Calling 与 MCPB14的关系MCP 解决了什么- 流式streaming场景下 tool_call 怎么逐步拼装- 如何防止模型陷入反复调用同一工具的死循环八、下一篇预告Function Calling 讲完动手的最后一公里Agent 基础能力感知-规划-行动-工具-安全基本闭环。后续可进入B19 RAG 评估或B20 可观测性 tracing/logging/评测把 Agent 从能跑推向可运维。评论区告诉我优先级。

相关新闻

5分钟掌握SQLyog社区版:完全免费的MySQL数据库管理神器终极指南

5分钟掌握SQLyog社区版:完全免费的MySQL数据库管理神器终极指南

5分钟掌握SQLyog社区版:完全免费的MySQL数据库管理神器终极指南 【免费下载链接】sqlyog-community Webyog provides monitoring and management tools for open source relational databases. We develop easy-to-use MySQL client tools for performance tuning a…

2026/8/7 16:30:08 阅读更多 →
3天掌握BilibiliDown:从零开始的高效B站视频下载完整指南

3天掌握BilibiliDown:从零开始的高效B站视频下载完整指南

3天掌握BilibiliDown:从零开始的高效B站视频下载完整指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirror…

2026/8/7 16:30:08 阅读更多 →
智能体面试准备(十七):HTN 任务分解与规划——让 Agent 面对复杂目标会自己拆计划

智能体面试准备(十七):HTN 任务分解与规划——让 Agent 面对复杂目标会自己拆计划

智能体面试准备(十七):HTN 任务分解与规划——让 Agent 面对复杂目标会自己拆计划 前面几篇讲了单 Agent(ReAct)、多 Agent(B15)、安全(B16)、工具调用(B18 待…

2026/8/7 16:30:08 阅读更多 →

最新新闻

破局最厉害的三种绝招

破局最厉害的三种绝招

“破局”没有放之四海而皆准的“绝招”,但综合思维模型与实践智慧,以下三种方法被广泛认为是突破困境的关键: 1. 逆向思维:反向思考,规避陷阱 当正向努力无效时,从目标终点或问题反面切入。例如&#xff0c…

2026/8/7 17:16:27 阅读更多 →
WorkshopDL终极指南:3步轻松获取Steam创意工坊模组,告别平台限制烦恼

WorkshopDL终极指南:3步轻松获取Steam创意工坊模组,告别平台限制烦恼

WorkshopDL终极指南:3步轻松获取Steam创意工坊模组,告别平台限制烦恼 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在Epic Games Store购买了《…

2026/8/7 17:16:27 阅读更多 →
X-VLA-WidowX论文精读:软提示Transformer如何突破跨机器人学习瓶颈

X-VLA-WidowX论文精读:软提示Transformer如何突破跨机器人学习瓶颈

X-VLA-WidowX论文精读:软提示Transformer如何突破跨机器人学习瓶颈 【免费下载链接】X-VLA-WidowX 项目地址: https://ai.gitcode.com/hf_mirrors/2toINF/X-VLA-WidowX X-VLA-WidowX是一款基于软提示Transformer的跨机器人学习模型,它通过创新的…

2026/8/7 17:16:27 阅读更多 →
基层、中层、高层,打的根本是不同的仗

基层、中层、高层,打的根本是不同的仗

我讲一个自己的故事。 进国企的上半年,我是出纳。每天跟凭证、发票、银行回单打交道。那时候我以为,只要我把活干好,领导总会看见的。 第三年,我成了子公司最年轻的部长助理。领导告诉我,当初注意到我,是…

2026/8/7 17:16:27 阅读更多 →
汽车控制器核心原理与开发实战:从VCU、BMS到MCU算法详解

汽车控制器核心原理与开发实战:从VCU、BMS到MCU算法详解

1. 汽车控制器:智能汽车的“神经中枢”与“决策大脑” 当你坐进一辆现代汽车,按下启动按钮,仪表盘亮起,空调自动调节到舒适温度,车辆平稳驶出——这一系列看似简单的动作背后,是一套复杂而精密的电子系统在…

2026/8/7 17:16:27 阅读更多 →
Switch引导程序hekate完全指南:从入门到精通的5个核心技巧

Switch引导程序hekate完全指南:从入门到精通的5个核心技巧

Switch引导程序hekate完全指南:从入门到精通的5个核心技巧 【免费下载链接】hekate hekate - A GUI based Nintendo Switch Bootloader 项目地址: https://gitcode.com/gh_mirrors/he/hekate hekate是一款功能强大的Nintendo Switch自定义图形化引导程序&…

2026/8/7 17:15:26 阅读更多 →

日新闻

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南 【免费下载链接】scrcpy Display and control your Android device 项目地址: https://gitcode.com/GitHub_Trending/sc/scrcpy 想要将Android手机屏幕完美投射到电脑上,享受大屏操作的自…

2026/8/7 0:00:19 阅读更多 →
如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南 【免费下载链接】tom-select Tom Select is a lightweight (~16kb gzipped) hybrid of a textbox and select box. Forked from selectize.js to provide a framework agnostic autocomplete widget wi…

2026/8/7 0:00:19 阅读更多 →
5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件 【免费下载链接】nsz NSZ - Homebrew compatible NSP/XCI compressor/decompressor 项目地址: https://gitcode.com/gh_mirrors/ns/nsz 你是否在为Nintendo Switch游戏文件占用大量存储…

2026/8/7 0:00:19 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/6 22:02:27 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/6 22:02:27 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/7 17:02:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/6 22:02:28 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/7 17:02:36 阅读更多 →