大模型的 Function Call 能力是怎么训练出来的?
从 SFT 到 RLHF让模型不仅会调工具还知道什么时候该调开篇模型不是天生会“调工具”很多人第一次接触 Function Call会以为模型在预训练时看过很多 API 文档和代码所以自然就会调用工具。这个理解只说对了一半。预训练确实能让模型理解“天气 API 是干什么的”“参数大概长什么样”但这不等于它能稳定输出一段程序可解析、可执行、可校验的 tool_calls JSON。真正的 Function Call 能力本质上是把自然语言请求转换成结构化动作指令。它不是单纯聊天能力而是协议遵守能力、参数抽取能力、工具选择能力和边界判断能力的组合。一、Function Call 到底训练的是什么Function Call 训练不是让模型“知道更多知识”而是让模型学会一种动作格式。普通问答输出的是自然语言Function Call 输出的是结构化调用请求。宿主程序拿到这个请求后才会真正执行 API、查数据库、下订单、发邮件或调用内部系统。所以模型至少要学会四件事什么时候需要调用工具什么时候直接回答。在多个工具里选择最合适的那个。把用户话里的实体、时间、地点、数量等信息填进参数。工具返回结果后能把结果组织成用户听得懂的最终答案。这四件事单靠预训练很难学出来因为预训练目标只是“预测下一个 token”。它不是为“输出合法 JSON 调用单”设计的。二、为什么预训练不够预训练像让模型读完整个互联网它能学到大量语言模式、代码模式和知识片段。但 Function Call 要求的是在看到工具 schema 和用户问题后严格输出一个符合协议的结构化调用。这就像一个人读过很多报销制度不代表他第一次上班就能把报销单填对。想让他填对就要给他看标准表格、正确样例、错误样例和审批规则。Function Call 的专项训练也是这个逻辑SFT 负责给模型看标准样例RLHF/RLAIF 负责告诉模型什么行为更符合真实用户需求。三、阶段一SFT先教模型“怎么调”SFT全称 Supervised Fine-Tuning可以理解成“看标准答案学动作”。训练数据里不是只放一个用户问题而是放一整段完整对话工具定义、用户问题、模型 tool_calls、工具执行结果、最终回答。模型通过大量样本反复学习看到什么需求应该选哪个工具参数应该怎么填工具结果回来后应该怎么说。下面是一段简化后的工具 schema。它告诉模型工具叫什么、什么时候用、有哪些参数、哪些字段必填。JSON工具定义示例{type:function,function:{name:get_weather,description:查询某个城市某一天的天气,parameters:{type:object,properties:{city:{type:string,description:城市名称例如北京、上海},date:{type:string,description:日期例如today、tomorrow、2026-07-01}},required:[city,date],additionalProperties:false},strict:true}}注意这类样本不是让模型学习“天气知识”而是学习“如何从用户话里抽取北京和 today并写成合法调用”。JSONL 训练样本展开版真实训练文件通常是一行一条{messages:[{role:user,content:帮我查一下北京今天的天气},{role:assistant,tool_calls:[{id:call_001,type:function,function:{name:get_weather,arguments:{\city\:\北京\,\date\:\today\}}}]},{role:tool,tool_call_id:call_001,content:北京今天晴最高温 31℃最低温 22℃},{role:assistant,content:北京今天晴最高温 31℃最低温 22℃适合外出但中午注意防晒。}]}四、训练数据要覆盖哪些场景只训练“正常调一个工具”的样本是不够的。真实业务里用户问题可能要并行查多个城市也可能不需要工具还可能遇到工具超时、参数缺失、权限不足。训练数据的多样性决定了模型上线后的稳定性。缺什么场景就会在哪里翻车。这里有一个很常见的坑训练集里全是调用工具的正例模型就会形成“见问题就调工具”的惯性。结果用户问“11 等于几”它也去调计算器用户让它总结一段文字它也想找工具。这不是模型聪明而是训练数据把它教偏了。五、训练数据从哪里来Function Call 训练数据通常有三类来源人工标注、强模型蒸馏、真实业务日志。人工标注质量最高但贵强模型蒸馏成本低、量大但可能把老师模型的错误也传下来真实日志最贴近业务但必须脱敏、过滤和人工抽检。一个工程上更稳的做法是先用人工标注做一批高质量种子样本再用强模型按模板扩充然后用规则校验、工具执行校验、人工抽检和离线评估清洗一遍。不要把模型生成的数据原封不动拿去训练。六、阶段二RLHF / RLAIF教模型“该不该调”SFT 解决“会不会调”的问题但不一定解决“该不该调”的问题。比如“北京今天下雨吗”需要实时天气应该调工具“11 等于几”直接回答就行“帮我总结这段话”通常也不需要工具。这个边界感很难只靠固定答案学好所以需要偏好对齐。RLHF 的做法是对同一个问题生成多个候选回答让人类标注员排序再用这些排序训练奖励模型最后用强化学习让主模型更倾向于高分行为。RLAIF 则把一部分人类评委换成更强的 AI 评委降低成本但要警惕 AI 评委自己的偏见。可以把 RLHF 理解成“教练打分”。SFT 是告诉你动作怎么做RLHF 是告诉你什么时候这样做才合适。七、研究界怎么做Self-Instruct、Toolformer、LoRA 微调研究里有几条常见路线。Toolformer 尝试让模型用少量示例自监督地学会什么时候调用 API、传什么参数、如何利用工具结果。GPT4Tools 则用强模型生成指令数据再通过 LoRA 让开源模型学会使用多模态工具。工程平台里也有类似思路先用合成数据生成工具调用样本再转成 OpenAI chat 格式或对应模型的 chat template最后用 LoRA/SFT 训练并做调用准确率评估。八、上线前必须做数据和格式校验Function Call 训练最怕“脏数据进入训练集”。一条错误样本不只是错一次它会让模型把错误模式记进参数里。最低限度要做三类校验第一JSON 能否解析第二工具名是否存在第三参数是否符合 schema。更严格的场景还要校验参数来源避免模型凭空编造参数。Python训练样本 tool_calls 校验示例importjson from jsonschemaimportvalidate, ValidationError TOOLS{get_weather:{type:object,properties:{city:{type:string},date:{type:string}},required:[city,date],additionalProperties:False}}def validate_tool_call(tool_call: dict)-list[str]: errors[]nametool_call[function][name]raw_argstool_call[function][arguments]ifname notinTOOLS: errors.append(funknown tool: {name})returnerrors try: argsjson.loads(raw_args)except json.JSONDecodeError: errors.append(arguments is not valid JSON)returnerrors try: validate(instanceargs,schemaTOOLS[name])except ValidationError as e: errors.append(fschema error: {e.message})returnerrors如果你做的是企业内部系统还要增加权限校验比如退款、改价、删除数据这类高风险工具训练样本里必须包含确认、拒绝、越权拦截、参数缺失追问等场景。九、怎么评估训练有没有效果评估 Function Call 不能只看最终回答像不像。最终回答可能写得很漂亮但工具名选错、参数填错、该拒绝却调用了这些都属于严重问题。更靠谱的评估方式是把调用过程拆开看工具选择、参数提取、schema 合法、并行/串行调用、拒调能力、失败恢复、最终回答。BFCL 这类 benchmark 的价值就在于它把 Function Calling 从“看起来会用工具”拆成了可评估的能力包括单轮、多轮、并行、串行、拒调、状态变化等。企业自己落地时也应该做自己的小型评测集而不是只依赖通用排行榜。十、常见翻车点不是模型不行是训练没教到Function Call 的很多线上问题都能回到训练数据或工具 schema 上找原因。比如工具名过于相似、参数描述不清楚、拒调样本太少、失败样本缺失、多轮链路没覆盖。一个实用经验是不要只收集成功样本更要收集失败样本。因为线上真正决定系统稳定性的往往不是“正常路径能不能跑通”而是“异常路径能不能兜住”。十一、面试时怎么回答如果想回答得更工程化可以再补一句训练完还不算结束线上还要做 schema 校验、工具白名单、权限控制、调用日志、失败回流和离线评估。Function Call 的可靠性最终是模型训练和工程护栏共同决定的。结尾工具调用能力是“训练 评估 工程约束”的结果Function Call 看起来像是模型自己会调用工具其实底层是一个完整训练体系。预训练让模型理解语言和代码但不保证稳定输出 tool_calls。SFT 通过标准样本教会模型工具调用格式和流程。RLHF/RLAIF 通过偏好信号教会模型“该调才调”。数据质量、schema 设计、异常样本、评估体系决定上线后的可靠性。所以真正靠谱的 Function Call不是“给模型几个工具就完事”而是让模型在大量高质量样本里学会动作格式在偏好对齐里学会边界在工程系统里受到校验和保护。内容来源大模型的 Function Call 能力是怎么训练出来的

相关新闻

为什么选择LinQuickRec?深入解析UB推荐系统的核心优势与应用场景

为什么选择LinQuickRec?深入解析UB推荐系统的核心优势与应用场景

为什么选择LinQuickRec?深入解析UB推荐系统的核心优势与应用场景 【免费下载链接】LinQuickRec An end-to-end reference implementation of the UB-based recommendation system. 项目地址: https://gitcode.com/openeuler/LinQuickRec 前往项目官网免费下载…

2026/7/2 20:47:35阅读更多 →
用C++写一个简单的JSON解析器(递归下降法)

用C++写一个简单的JSON解析器(递归下降法)

在当今数据驱动的世界中,JSON作为一种轻量级的数据交换格式,几乎无处不在。无论是Web API的响应,还是配置文件,JSON都扮演着重要角色。而理解JSON的解析过程,不仅能加深我们对数据结构的认识,还能提升编程能…

2026/7/2 20:42:34阅读更多 →
Python面向对象:魔法方法str与repr

Python面向对象:魔法方法str与repr

Python面向对象:魔法方法str与repr📚 本章学习目标:深入理解魔法方法str与repr的核心概念与实践方法,掌握关键技术要点,了解实际应用场景与最佳实践。本文属于《Python从入门到精通教程》Python面向对象篇(…

2026/7/2 20:42:34阅读更多 →
Atari游戏下DQN/PPO/A2C智能体的对抗扰动实验与鲁棒性加固代码包

Atari游戏下DQN/PPO/A2C智能体的对抗扰动实验与鲁棒性加固代码包

本文还有配套的精品资源,点击获取 简介:专为Atari环境设计的强化学习对抗攻防实践工具集,支持DQN(基于Tianshou)、PPO和A2C三类主流算法。提供五种观测空间扰动攻击实现:统一扰动、战略定时、临界点、关…

2026/7/2 21:57:45阅读更多 →
软考信息安全工程师-第十二章《网络安全审计技术原理与应用》

软考信息安全工程师-第十二章《网络安全审计技术原理与应用》

一、网络安全审计概述 1、网络安全审计概念 网络安全审计是指对网络信息系统的安全相关活动信息进行获取、记录、存储、分析和利用的工作。网络安全审计的作用在于建立“事后“安全保障措施,保存网络安全事件及行为信息,为网络安全事件分析提供线索及证据,以便于发现潜在的…

2026/7/2 21:57:45阅读更多 →
STM32F103用AT指令通过ESP8266直连OneNET云(TCP透传+自动重连)

STM32F103用AT指令通过ESP8266直连OneNET云(TCP透传+自动重连)

本文还有配套的精品资源,点击获取 简介:基于STM32F103C8T6最小系统,用标准HAL库开发,通过USART1与ESP8266通信,完整实现Wi-Fi接入、OneNET平台设备注册、TCP长连接建立与维持。代码内置自动重连机制和心跳保活逻辑&…

2026/7/2 21:57:45阅读更多 →
AI搜索,找哪些务商好

AI搜索,找哪些务商好

做AI搜索营销,成美AI相比传统营销服务商的核心差异主要体现在三个核心层面。首先是技术逻辑更适配:成美AI专注企业全域智能营销SaaS服务,打造的智能化营销系统完全围绕AI大模型收录规则设计,不同于传统营销服务商普遍沿用的传统搜…

2026/7/2 21:57:45阅读更多 →
SPA模式全链路利润计算器,输入设计,生产,门店成本,对比传统分销模式收益。

SPA模式全链路利润计算器,输入设计,生产,门店成本,对比传统分销模式收益。

深入探讨了从设计到消费者的全链路管理。SPA(Specialty Store Retailer of Private Label Apparel,自有品牌专业零售商)模式的核心在于“垂直整合”,即品牌方掌控从设计到零售的所有环节。传统的分销模式往往面临信息不透明、库存…

2026/7/2 21:57:45阅读更多 →
380V低压台区风光接入仿真工具包:含IEEE 33节点改造、Pandapower潮流计算与STATCOM无功补偿替代方案

380V低压台区风光接入仿真工具包:含IEEE 33节点改造、Pandapower潮流计算与STATCOM无功补偿替代方案

本文还有配套的精品资源,点击获取 简介:面向低压配电网电压稳定性分析的Python仿真工具包,基于IEEE 33节点系统进行实用化改造——在指定节点嵌入380V分布式光伏、双馈风机及异步电动机负荷,真实模拟高渗透率分布式电源接入场景…

2026/7/2 21:52:44阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/7/2 12:10:34阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/7/2 12:10:34阅读更多 →
塞尔达传说旷野之息存档修改器:3分钟掌握海拉鲁世界自由定制技巧

塞尔达传说旷野之息存档修改器:3分钟掌握海拉鲁世界自由定制技巧

塞尔达传说旷野之息存档修改器:3分钟掌握海拉鲁世界自由定制技巧 【免费下载链接】BOTW-Save-Editor-GUI A Work in Progress Save Editor for BOTW 项目地址: https://gitcode.com/gh_mirrors/bo/BOTW-Save-Editor-GUI 想在《塞尔达传说:旷野之息…

2026/7/2 0:03:01阅读更多 →
告别 AccessKey:多云平台 CLI OAuth 免密认证完全指南

告别 AccessKey:多云平台 CLI OAuth 免密认证完全指南

在本地开发环境使用云厂商 CLI 时,传统的 AccessKey(AK)方式需要手动创建、下载和保管密钥,不仅繁琐,还存在泄漏风险。其实,主流云平台都已提供基于 OAuth 2.0 的免密认证方案,让开发者可以通过浏览器登录一次性完成授权,CLI 自动管理临时凭证的刷新,兼顾了便利与安全…

2026/7/2 0:03:01阅读更多 →
基于13DOF传感器与PIC32MZ的高精度嵌入式导航系统设计

基于13DOF传感器与PIC32MZ的高精度嵌入式导航系统设计

1. 项目背景与核心价值在嵌入式系统开发领域,高精度定位与导航一直是极具挑战性的技术方向。传统方案往往面临成本、精度和实时性难以兼顾的困境。这个项目通过13DOF(13自由度)传感器组合与PIC32MZ2048EFH100高性能MCU的协同工作,…

2026/7/2 0:03:01阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/2 0:33:58阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/2 1:32:11阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/2 1:50:13阅读更多 →