什么是Function Calling?

1. 概述

Function Calling 是大语言模型(LLM,例如 GPT 系列)提供的一种机制,使模型能够在对话过程中调用外部函数、API 或本地方法。

它解决了模型 只会回答、不知道外部世界最新信息 的局限,让 LLM 从"聊天助手"变成"可操作的智能代理"。


2. 工作原理

基本流程

  1. 开发者注册函数

    • 定义函数名称、描述(description)、参数结构(parameters)。
  2. 用户发起自然语言请求

    • 模型分析语义。
  3. 模型决定是否调用函数

    • 如果与函数描述匹配 → 输出 JSON 调用请求。
    • 如果能直接回答 → 直接输出自然语言。
  4. 系统执行函数

    • 根据 JSON 参数调用外部逻辑/API。
  5. 返回结果给模型

    • 模型基于结果生成用户可读的回答。

3. 函数描述的作用

函数描述(description + parameters)相当于 本地的 Prompt,指导模型何时使用函数、如何构造参数。

例如:

json 复制代码
{
  "name": "getWeather",
  "description": "获取指定城市和日期的天气情况(气温、晴雨、多云、雪)。当用户提到天气、气温、冷热、是否下雨时调用。",
  "parameters": {
    "type": "object",
    "properties": {
      "city": { "type": "string", "description": "城市名称,例如 北京" },
      "date": { "type": "string", "description": "日期,格式 YYYY-MM-DD" }
    },
    "required": ["city"]
  }
}
  • description → 像局部 Prompt,告诉模型什么时候用。
  • parameters → 约束输入,避免模型乱传参。

4. 识别机制

模型判断是否调用函数,主要依赖以下三点:

  1. 函数描述(本地 Prompt)

    • 描述越清晰,调用越精准。
  2. 用户语义

    • 模型先理解用户输入,再匹配函数用途。
  3. 上下文/系统 Prompt

    • 可以在系统消息中指导模型"仅在必要时调用函数"。

5. 设计函数描述的最佳实践

  1. 明确用途

    • 写清楚函数能解决什么问题。
  2. 触发条件

    • 描述用户可能使用的关键词或场景。
  3. 参数语义化

    • 给每个参数写清楚含义、示例。
  4. 避免模糊

    • 不要只写"天气查询",要写"气温、晴雨、多云、雪"。
  5. 覆盖常见问法

    • 例如天气函数可以提及"天气、气温、冷热、下雨"。

6. 示例

例 1:查询天气

用户:

"北京明天会下雨吗?"

模型输出调用:

json 复制代码
{
  "name": "getWeather",
  "arguments": { "city": "北京", "date": "2025-09-03" }
}

系统执行 API → 返回:

json 复制代码
{ "temperature": 28, "condition": "小雨" }

模型回答:

北京明天 28°C,有小雨。


例 2:查订单状态

用户:

"订单 12345 的物流情况?"

模型输出调用:

json 复制代码
{
  "name": "getOrderStatus",
  "arguments": { "orderId": "12345" }
}

7. 总结

  • Function Calling = 模型调用外部函数的机制
  • 函数描述 = 本地 Prompt,决定模型是否、如何调用函数
  • 本质:自然语言理解 → 函数选择 → 参数生成 → 系统执行 → 结果转化

它让 LLM 从"会聊天"升级为"会办事",是构建智能应用的关键能力。

相关推荐
蓦然回首却已人去楼空6 分钟前
深度学习进阶:自然语言处理|4.1.2 QA|grads 列表与省略号 [...] 详解
人工智能·深度学习·自然语言处理
手写码匠8 分钟前
Android 17 适配实战指南:新特性解读、隐私变更与迁移全攻略
人工智能·深度学习·算法·aigc
YueJoy.AI16 分钟前
创业团队如何管理远程工作
人工智能·ai·语言模型
端平入洛19 分钟前
单个感知机为何无法解决异或问题?
人工智能·深度学习
卷卷说风控32 分钟前
【卷卷观察】Google I/O 炸场背后:AI 行业正在经历一场“越南战争“
人工智能
SLD_Allen39 分钟前
AI-Infra双轨战略:承托当下GPU算力,布局未来CPU替代
人工智能·gpu算力·ai-infra
wait42 分钟前
Vibe Coding 开发技巧
前端·javascript·人工智能
bloxed44 分钟前
【AI大模型--NumPy-06】随机数生成与蒙特卡洛模拟
人工智能·numpy
szxinmai主板定制专家1 小时前
基于ZYNQ MPSOC图像采集与压缩系统总体设计方案
linux·arm开发·人工智能·嵌入式硬件·fpga开发
GOTXX1 小时前
SenseNova U1 实战体验:API 调用 + OpenClaw 接入全流程
服务器·网络·人工智能·语言模型