什么是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 从"会聊天"升级为"会办事",是构建智能应用的关键能力。

相关推荐
停停的茶35 分钟前
深度学习(目标检测)
人工智能·深度学习·目标检测
Y200309161 小时前
基于 CIFAR10 数据集的卷积神经网络(CNN)模型训练与集成学习
人工智能·cnn·集成学习
老兵发新帖1 小时前
主流神经网络快速应用指南
人工智能·深度学习·神经网络
AI量化投资实验室2 小时前
15年122倍,年化43.58%,回撤才20%,Optuna机器学习多目标调参backtrader,附python代码
人工智能·python·机器学习
java_logo2 小时前
vllm-openai Docker 部署手册
运维·人工智能·docker·ai·容器
倔强青铜三2 小时前
苦练Python第67天:光速读取任意行,linecache模块解锁文件处理新姿势
人工智能·python·面试
算家计算2 小时前
重磅突破!全球首个真实物理环境机器人基准测试正式发布,具身智能迎来 “ImageNet 时刻”
人工智能·资讯
新智元2 小时前
苹果 M5「夜袭」高通英特尔!AI 算力狂飙 400%,Pro 三剑客火速上新
人工智能·openai
GoppViper2 小时前
什么是GEO生成式引擎优化?GEO科普:定义、原理与应用指南
人工智能·搜索引擎
新智元2 小时前
谷歌 × 耶鲁联手发布抗癌神器!AI 推理精准狙击「隐身」癌细胞
人工智能·openai