AI

大模型的Function Call是什么?

前言🔖


大模型本身只会 “生成文字”。

能调用 Skills / Tools / 函数,是模型被特殊训练 + 架构支持后的高级能力。

🔹1. 普通大模型:只会说话

  • 输入文本 → 输出文本
  • 不会主动去查文件、调接口、读数据库
  • 不会用工具

  

🔹2.支持 Tool Call / Skill Call 的模型:

专门训练过的,会:

  1. 理解你需要外部信息 / 工具
  2. 按固定格式输出:
    • 工具名
    • 参数
    • 调用意图
  3. 等你把工具结果返回给它,它再整理成自然语言

这就叫:函数调用 / 工具调用 / Skill 调用能力。

  

函数调用 / 工具调用 / Skill 调用能力, 是Function Call吗?🔖


它们完全等价

  • Function Call = 函数调用
  • Tool Call = 工具调用
  • Skill 调用 = 技能调用

这三个名字,说的是同一种大模型能力。

为什么叫法不一样?

  • Function Call:最标准、最技术的叫法(OpenAI 最早用)
  • Tool Call:阿里云、通义、Qwen 官方喜欢叫 “工具调用”
  • Skill 调用:通义灵码、IDE 智能体里的产品化名字

本质:模型输出结构化参数 → 让代码去执行函数。

这就是 Function Call / Tool Call / Skill 调用 的标准输出:

{
  "name": "file_read",
  "parameters": {
    "file": "main.py"
  }
}
  • 模型不直接读文件
  • 模型只告诉你要读哪个文件
  • 你的代码真正去执行

这就是 function call

  

普通大模型 不会理解 你需要外部信息 / 工具吗?🔖


🔹1.普通大模型,真的不会 “理解你需要工具” 这件事。

不是它笨,是它的任务目标里根本没有 “调用工具” 这一项

普通大模型在干嘛?

它只做一件事:根据上文,预测下一个最合理的字。

你问:

今天北京气温多少?

普通模型会:

瞎编一个温度
或者用训练数据里过时的知识回答
完全不会意识到:我需要查天气接口
因为它的训练目标里 ** 没有 “调用工具”** 这个概念。

  

🔹2.只有专门训练过的模型,才会:

我需要调用工具 → 输出结构化参数 → 等你执行 → 再回答

这个能力叫:

  • Function Call
  • Tool Call
  • Skill 调用

三者完全一样。

普通大模型:

只会 “编话”,不会 “调用工具”。它不知道世界上有外部工具、API、数据库、文件。

支持 Function Call 的大模型:

被专门教过:当你不知道、需要实时数据、需要操作时,要输出固定格式,让外部代码去执行。

  

会 Function Call的模型 返回什么?🔖


会 Function Call(Tool Call)的模型,到底返回什么。

返回一段机器能看懂的结构化指令

我要调用哪个工具 + 传什么参数

🔹普通大模型返回(人话)

你问:

帮我读一下 main.py 的内容

普通模型会瞎编 / 讲道理

好的,main.py 一般是程序入口文件,里面通常会有...

  

🔹会 Function Call 的模型返回(机器指令)

它返回的是JSON 结构,不是人话:

{
  "name": "file_read",
  "parameters": {
    "file_path": "main.py"
  }
}

这就叫:

Function Call / Tool Call / 技能调用

你的代码读到这个 JSON,就会:

  1. 去读 main.py
  2. 把内容塞回给模型
  3. 模型再整理成人话给你

  

🔹再举一个灵码智能体的例子

你在灵码里说:

帮我修复当前文件的报错

灵码底层模型返回的就是:

{
  "name": "get_current_file",
  "parameters": {}
}
{
  "name": "code_diagnose",
  "parameters": {
    "error": "SyntaxError"
  }
}

VS Code 插件收到后,就真的去执行

  • 取当前文件
  • 执行诊断
  • 把结果还给模型

  

🔹最核心的一句话

普通模型:只返回文字

支持 Function Call 的模型:返回可执行的指令结构

  • 工具名
  • 参数
  • 格式固定(JSON)

  

给普通大模型 系统提示词 告诉它返回 调用工具 也不行吗🔖


可以写提示词让它返回工具格式,但 99% 没用、不稳定、不可靠
原因我一句话讲透:
提示词是教它 “怎么说”,不是教它 “真正会”。

你以为:

我写个超级强的 Prompt:然后普通模型就会乖乖按格式返回

当你需要查文件时,返回 JSON:{"name":"file_read","parameters":{"file":"xxx"}}

现实是:

  • 偶尔能对
  • 经常格式错
  • 经常参数漏
  • 经常不该调用时乱调用
  • 经常该调用时不调用
  • 完全不可控、不可工程化

普通大模型没有被训练过「工具调用逻辑」,它只是在模仿格式,不是真理解。

专门训练过 Function Call 的模型

  • 理解意图
  • 知道该不该调用
  • 知道调用哪个
  • 知道参数怎么填
  • 输出100% 标准结构
  • 可工程化、可上线

为什么灵码智能体那么稳?

因为它用的是 Qwen 原生支持 Tool Call

  • 不是靠 Prompt 硬掰
  • 不是靠运气
  • 是模型天生就会

Function Call 模型不是天生就会,而是通过多阶段专项训练,让模型学会 “判断是否调用、选哪个工具、输出标准 JSON、整合结果” 的完整能力。

Function Call 训练 = 让模型学会「自然语言 → 结构化工具指令」的映射,并稳定输出可解析的 JSON。

它不是 “理解工具”,而是学会一套严格的格式与决策规则

  

支持function call 的大模型,是大模型直接调用了tool吗?🔖


不是!大模型 不会直接调用 tool

它只是告诉你:我要调用哪个工具、传什么参数

🔹真正去调用工具、发请求、执行代码的,是你自己的业务代码

  • 你 → 大模型:问问题
  • 大模型:不直接查、不直接算、不直接联网只输出一段结构化指令(function call):
{
  "name": "get_weather",
  "parameters": { "city": "北京" }
}
  • 你的代码:解析这段 JSON → 真的去调用天气接口
  • 你的代码 → 再把结果传回大模型
  • 大模型:整理自然语言回答你

  

🔹总结

  • 大模型:只做决策,不执行调用
  • 你的系统:负责真正执行 tool

所以:

  • 支持 function call ≠ 模型自己会调用 tool
  • 支持 function call = 模型会输出「让你去调用 tool」的指令