news 2026/9/28 18:17:09

什么是 LLM 的工具调用(Function Calling)能力?它是如何被训练出来的?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
什么是 LLM 的工具调用(Function Calling)能力?它是如何被训练出来的?

什么是 LLM 的工具调用(Function Calling)

指模型在对话中主动决定"调用某个外部工具/函数",并输出结构化的调用请求(函数名 + 参数),而不是直接给出最终答案。典型流程:

  1. 系统提示词里提供工具清单(函数名、参数 schema、用途说明)
  2. 模型判断"当前需要外部信息/操作"时,输出一个tool_call(如{"name":"search_db","arguments":{"sql":"..."}})
  3. 框架解析并执行该工具,把结果回填给模型
  4. 模型基于工具结果继续推理,直到给出最终回答

关键点:工具调用是模型自主决策(不是硬编码),且输出是结构化 JSON,可被程序解析执行。它让 LLM 从"只会说话"变成"能做事"——查库、调 API、发邮件、执行代码。


它是如何被训练出来的

工具调用不是模型天生就会的,而是通过多阶段训练习得,核心是让模型学会"何时调用 + 如何正确填参":

1. 预训练(Pretraining)

  • 模型在海量文本中学会了函数签名、API 文档、JSON 语法等基础语言模式,为后续理解工具 schema 打底,但此时并不会"主动调用"。

2. 监督微调(SFT)

  • 用人工/自动构造的"对话→工具调用"样本微调:给定用户请求 + 工具清单,标注正确的tool_call(选哪个函数、填什么参数)。
  • 让模型学会:识别"需要外部信息"的场景、匹配正确的工具、生成合法参数 JSON。
  • 数据来源:人工标注、从真实 API 调用日志构造、用更强模型合成(distillation)。

3. 偏好对齐(RLHF / DPO / RLVR)

  • 用奖励模型或可验证奖励(如"参数是否合法"“是否调对了工具”“最终任务是否成功”)对模型做强化学习。
  • 让模型学会权衡:什么时候该调用(避免过度调用或该调不调)、参数填得准、调用失败后如何恢复。
  • 近年常用RLVR(可验证奖励强化学习):直接以"工具执行是否成功、结果是否正确"作为奖励信号,显著提升工具调用的准确率。

4. 工具调用数据的关键设计

  • 多工具选择:从多个候选工具中选对的那个
  • 参数填充:从用户输入/上下文抽取正确参数值
  • 多轮工具循环:调用→看结果→再决策(ReAct 式轨迹)
  • 错误恢复:工具报错后如何重试/降级

一句话:工具调用能力 = 预训练打底(懂函数/JSON 语法)+ SFT 教会"何时调用、怎么填参" + RLHF/RLVR 教会"调得准、调得稳"。它把模型从"生成文本"升级为"生成可执行的结构化动作",是 Agent 能闭环执行任务的核心能力。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/28 18:16:16

看不懂代码?用 GitHub Copilot + TaoToken 给 AI 装上「说人话」翻译器

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/28 18:16:12

VSCode插件开发实战:获取系统语言环境与中英文切换配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/28 18:13:34

【Oracle】PLSQL程序设计:用 TaoToken 统一 Key 打通 AI 辅助开发配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/28 18:13:01

从3.1代码开始:三步吃透任何一段示例代码的通用方法论

1. 从“3.1代码”说开去:每个章节都是入门的第一道坎很多新手朋友第一次看到“3.1代码”这样的标题时,大概率是在某一本编程教材、一门网课或者一份实验指导书里。第三章第一节,听起来平平无奇,但这往往是第一次真正接触“完整可运…

作者头像 李华