FunctionCalling

Function Calling(函数调用)”是大语言模型(LLM)中一项非常重要的能力,它让模型不再只是“聊天”,而是能主动调用开发者提供的函数、API 或插件来完成任务


🔧 一句话定义:

Function Calling 是让大模型根据你的输入,自动调用你定义的函数,并用真实数据返回结果的机制。

核心思想就是:统一格式、规范描述


🧠 通俗理解:

想象你和 AI 说:

“查一下上海明天的天气。”

以前的模型只能根据训练数据“编造”天气内容。 有了 Function Calling,它会:

  1. 理解你想“查天气”

  2. 生成一个“函数调用请求”,比如:

    {
      "name": "get_weather",
      "arguments": { "location": "上海", "date": "2025-07-25" }
    }
  3. 调用你后台定义好的 get_weather 函数(如调用真实天气 API)

  4. 把结果传给模型,让它组织成自然语言回答你:

“明天上海多云,最高温度 31°C,最低温度 26°C。”


🧩 Function Calling 的工作流程

用户 → 模型 → [生成函数调用意图] → 开发者提供的函数 → 获取结果 → 模型生成回应

📦 举个实际例子(用 OpenAI API)

你定义一个函数接口:

{
  "name": "get_stock_price",
  "description": "获取指定股票的当前价格",
  "parameters": {
    "type": "object",
    "properties": {
      "symbol": {
        "type": "string",
        "description": "股票代码,比如 AAPL 或 TSLA"
      }
    },
    "required": ["symbol"]
  }
}

用户说:

“帮我查一下特斯拉的股价。”

模型就会返回:

{
  "function_call": {
    "name": "get_stock_price",
    "arguments": "{ \"symbol\": \"TSLA\" }"
  }
}

开发者接收到后,调用实际的股价 API,然后把结果返回模型。模型最后会说:

“特斯拉当前股价为 288.64 美元。”


🛠 常见用法场景

应用场景 调用函数
查天气、查汇率、查股价 实时数据 API
安排日程、添加事项 日历接口
搜索数据库 各类 SQL / 检索函数
控制机器人 / 硬件 调用底层控制函数
生成图片 / 图表 调用绘图函数
AI Agent 调度 一个模块调用另一个模块

🧠 和插件有什么区别?

项目 Function Calling 插件
粒度 精细(函数级) 粗一些(整个应用)
控制权 开发者自己写函数 第三方服务提供功能
部署 本地/私有部署方便 插件需要注册开放平台等

✅ 总结一句话:

Function Calling 让大模型从“语言助手”升级为“多功能工具协调者”,是构建智能 Agent、企业 Copilot 等应用的核心能力之一。


从System Prompt转为FunctionCalling 可以节省token开销,也免得自己写重试逻辑。

头疼的问题

每家的大模型的FunctionCalling格式都不一样,搞一个随便切换大模型的其实还是挺烦的。

所以市面上SystemPrompt和FunctionCalling都并存着。