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

相关推荐
Smilezyl1 天前
一个独立开发者,靠一份 markdown 驱动 Claude Code, 用 20 天跑通 9 个包的 monorepo 工程
前端·人工智能·github
fundroid1 天前
AI Coding 知识库最佳实践:三层结构重建可维护工程
人工智能·skill·ai 编程·ai coding·skill.md·agent.md
测试员周周1 天前
【AI测试系统】第4篇:告别硬编码!基于 Markdown + Python 的 Skill 引擎设计:让 AI 测试系统拥有无限扩展的“灵魂”
人工智能·python·测试
Cosolar1 天前
封神级 TTS!VoxCPM2 凭连续表征,玩转多语言合成 + 创意音色 + 无损声纹克隆
人工智能·llm·github
SCBAiotAigc1 天前
2026.5.1:`DockerDesktop must be owned by an elevated account`错误的解决办法
人工智能·docker·具身智能
码流怪侠1 天前
【GitHub】andrej-karpathy-skills:让 AI 编程助手告别三大通病
人工智能·程序员·github
user29876982706541 天前
九、深入 Claude Code CLI 源码:Bridge/Remote Control 远程执行
人工智能
码流怪侠1 天前
【GitHub】OpenClaw:开源个人AI助手的新标杆
人工智能·程序员·github
码农小白AI1 天前
AI报告审核 IACheck:质量证明文件从“看得懂”走向“说得准”,术语一致性成为合规关键
人工智能
qq_283720051 天前
Vibe Coding 氛围编程入门教程:AI 时代的全新开发范式(零基础到实战)
大数据·人工智能