什么是工具调用(Function Calling / Tool Use)

大模型本身仅擅长文本生成、推理、总结、理解,没有实时联网、计算、操作外部软件、查询数据库、控制硬件的能力。

工具调用是一套协议:大模型识别用户需求后,自动生成结构化函数参数,交给程序去调用外部工具,拿到工具返回结果后,再由大模型整合答案输出给用户。

简单流程:

用户提问 → LLM 判断需要工具 → 输出工具调用 JSON → 后端执行工具(搜素 / 计算器 / 数据库)→ 工具返回数据 → LLM 整理结果回复用户
【也就是说,大模型只能输出要调用工具的json,真正调用工具的是后端程序】

标准工具调用架构(三层)

1. 层 1:大模型(大脑)

负责意图识别、判断是否调用工具、生成标准化工具入参、结果总结。

主流支持工具调用模型:GPT 系列、通义千问、文心一言、DeepSeek、讯飞星火、Llama 3、GLM 等。

2. 层 2:工具描述 Schema(说明书)

用 JSON 格式定义每个工具:工具名称、功能描述、入参类型、必填项、参数说明。

示例极简计算器工具定义:

json

{
  "type": "function",
  "function": {
    "name": "calculator",
    "description": "执行数学四则运算",
    "parameters": {
      "type": "object",
      "required": ["expr"],
      "properties": {
        "expr": {"type": "string", "description": "数学表达式,如123*45+78"}
      }
    }
  }
}

模型读取这份 Schema,才知道什么时候、怎么调用工具。

3. 层 3:工具执行器(手脚)

后端代码接收模型输出的调用指令,执行对应逻辑:

  • 搜索工具:调用搜索引擎 API
  • 计算器:运行表达式计算
  • 数据库工具:SQL 查询
  • 代码工具:沙箱运行 Python
  • 第三方服务:天气、快递、订票接口

完整交互示例(计算器场景)

  1. 用户提问:1258 * 36 + 920 等于多少
  2. 模型判断:需要计算器工具,输出工具调用结构:
{"name":"calculator","parameters":{"expr":"1258 * 36 + 920"}}
  1. 后端执行计算,返回结果:46208
  2. 将结果塞回对话上下文,交给模型
  3. 模型整理自然语言回复:1258 × 36 + 920 的计算结果是 46208

更多推荐