跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

基于 Function Calling 连接大模型与业务系统

深入解析 Function Calling 机制,阐述其作为连接大模型与业务系统的关键桥梁作用。文章分析了自然语言接口的演进历程,指出大模型在知识时效性与逻辑推理上的局限性,说明接入外部工具与真实数据的必要性。详细讲解了 Function Calling 的定义、工作流程及参数构造,列举了百度文心、MiniMax、ChatGLM3 等国产模型的支持情况。对比 OpenAI Plugins 与 Actions 的演进差异,探讨了 GPTs 及其替代平台的技术特点。最后总结了 Function Calling 在提升模型能力、数据准确性及用户体验方面的价值,并为开发者提供了集成建议与未来展望。

乱七八糟发布于 2025/2/7更新于 2026/7/1439 浏览
基于 Function Calling 连接大模型与业务系统

前言

本文重点介绍 Function Calling 的机制和应用,在其原理基础上,深入讲解为什么会有 Plugin、GPTs 等技术的出现。核心要点如下:

  1. 大模型应用的核心是自然语言连接系统的认知。
  2. 在 Function Calling 的应用中,如何实现大模型与业务的有效连接。
  3. OpenAI 如何通过 GPTs 连接外部世界。

本文将主要以 ChatGPT 为例进行讲解,因为其在当前公认的能力表现上具有代表性。

自然语言连接一切(Natural Language Interface),接口的进化

我们以前的接口经历了多个版本的进化,从早期的命令行到图形界面,再到 Web API,媒介发生很多变化,但都离不开一个共同点,那就是要有约定、有规划、要有程序员的对接实现。

而在面对以 ChatGPT 为代表的一系列大模型时,我们面对的是自然语言的接口。在这个强大的能力加持下,我们在面对计算机等智能设备时,可以用自然语言对它发出指令,实现我们的意图。

这里重新强调这一点,是因为我们要清楚,面对 AIGC 的重大革新,不管是在日常生活中使用 LLM,还是基于 LLM 做应用开发,思维上首先要转变的就是要把计算机当成一个人。有了这个认识,接下来我们才能更好地使用它。

为什么要让大模型连接外部世界

有的伙伴可能会说,大模型既然能力已经很强了,为什么还要连接外部世界呢?之前我们也讲过,大模型有它自己的能力缺陷,或者说不擅长的地方:

并非知晓一切

  1. 训练数据不可能什么都有:垂直领域、非公开数据必有欠缺。
  2. 不知道最新信息:大模型的训练周期很长,且更新一次耗资巨大,还有越训越傻的风险。所以它不可能实时训练。例如 GPT-3.5 的知识截至 2021 年 9 月,GPT-4 是 2023 年 12 月。

没有「真逻辑」

它表现出的逻辑、推理,是训练文本的统计规律,而不是真正的逻辑,所以容易产生幻觉。

为了解决这个问题,就是我们所说的要连接外部世界:大模型需要连接真实世界,并对接真逻辑系统。

Function Calling 的机制

Function Calling 技术可以把大模型和业务系统连接,实现更丰富的功能。我们先看下它的由来和定义,以及用途,就能理解这一点了。

Function Calling 的定义

函数调用(Function Calling) 是 OpenAI 发布的新能力。根据官方描述,函数调用能力可以让模型输出一个请求调用函数的消息,其中包含所需调用的函数信息、以及调用函数时所携带的参数信息。这是一种将 GPT 能力与外部工具 / API 连接起来的新方式。

支持函数调用的新模型,可以根据用户的输入自行判断何时需要调用哪些函数,并且可以根据目标函数的描述生成符合要求的请求参数。

Function Calling 的机制

它的使用逻辑是这样的:

  1. 用户输入自然语言 Prompt。
  2. 模型分析意图,判断是否需要调用外部函数。
  3. 如果需要,模型输出结构化的函数调用请求(包含函数名和参数)。
  4. 后端执行该函数,获取结果。
  5. 将结果返回给模型,模型生成最终的自然语言回答。

Function Calling 完整的官方接口文档展示了详细的 JSON Schema 规范。我们可以看到,对于人来讲,我们还是一段自然语言的 prompt 输入,得到一个自然语言的回答,但是因为有了 Function Calling,可以通过开发各种各样的函数,来丰富和增强大模型的能力。

Function Calling 的示例、体验

我们来看一个 Function Calling 的简单使用实例:

需求:定义一个函数,可以让 ChatGPT 进行精确的数学计算,并返回精确结果。

实现:

# 伪代码示例:定义函数描述
functions = [
    {
        "name": "sum",
        "description": "Calculate the sum of a list of numbers",
        "parameters": {
            "type": "object",
            "properties": {
                "numbers": {
                    "type": "array",
                    "items": {"type": "number"},
                    "description": "List of numbers to sum"
                }
            },
            "required": ["numbers"]
        }
    }
]

输出结果:

当用户询问 1+2+...+10 时,模型可能不会直接计算,而是触发函数调用:

{
    "tool_calls": [
        {
            "id": "call_EoBm8iVtl000rAZSyWe9qlk8",
            "function": {
                "arguments": "{\"numbers\":[1,2,3,4,5,6,7,8,9,10]}",
                "name": "sum"
            },
            "type": "function"
        }
    ]
}

随后系统执行求和函数返回 55,最终回复给用户:

The sum of 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 is 55.

支持 Function Calling 的国产大模型

Function Calling 会成为所有大模型的标配,支持它的越来越多,不支持的大模型在某种程度上是不大可用的。

百度文心大模型

百度文心系列大模型有四个。按发布时间从早到晚是:

  1. ERNIE-Bot - 支持 Function Calling
  2. ERNIE-Bot-turbo
  3. ERNIE-Bot 4.0
  4. ERNIE-Bot 3.5 - 支持 Function Calling

参数大体和 OpenAI 一致。

MiniMax
  • 这是个公众不大知道,但其实挺强的大模型,尤其角色扮演能力。
  • 如果你曾经在一个叫 Glow 的 app 流连忘返,那么你已经用过它了。
  • 应该是最早支持 Function Calling 的国产大模型。
  • Function Calling 的 API 和 OpenAI 1106 版之前完全一样,但其它 API 有很大的特色。
ChatGLM3-6B
  • 最著名的国产开源大模型,生态最好。
  • 早就使用 tools 而不是 function 来做参数,其它和 OpenAI 1106 版之前完全一样。
讯飞星火 3.0

和 OpenAI 1106 版之前完全一样。

OpenAI 用 Actions 连接外部世界

第一次尝试用 Plugins 连接真实世界,但产品很不成功,原因:

  1. 不在「场景」中,不能提供端到端一揽子服务。
  2. 缺少「强 Agent」调度,只能手工选三个 plugin,使用成本太高。

第二次尝试,升级为 Actions,内置到 GPTs 中,解决了落地场景问题。

小瓜 GPT 已经接入了高德地图 actions,可以试试问位置相关的问题。

工作流程:

  1. 用户在 GPTs 中输入查询。
  2. GPTs 识别意图,调用 Actions。
  3. 获取数据并反馈给用户。

和 Function Calling 有点不一样,但是基本原理都是一样的。

Actions 对接示例

把 API 对接到 GPTs 里,只需要配置一段 API 描述信息:

openapi: 3.1.0
info:
  title: 高德地图
  description: 获取 POI 的相关信息
  version: v1.0.0
paths:
  /text:
    get:
      description: 根据 POI 名称,获得 POI 的经纬度坐标
      operationId: get_location_coordinate
      parameters:
        - name: keywords
          in: query
          description: POI 名称,必须是中文
          required: true
          schema:
            type: string

还需要配置 API key 来满足权限要求。

这里的所有 name、description 都是 prompt,决定了 GPT 会不会调用你的 API,调用得是否正确。

GPTs 与它的平替们

  1. 无需编程,就能定制个性对话机器人的平台。
  2. 可以放入自己的知识库,实现 RAG(后面会讲)。
  3. 可以通过 actions 对接专有数据和功能。
  4. 内置 DALL·E 3 文生图和 Code Interpreter 能力。
  5. 只有 ChatGPT Plus 会员可以使用。

推荐两款平替:

字节跳动 Coze(扣子)
  1. 国际版可以免费使用 GPT-4 等 OpenAI 的服务!
  2. 中国版发展势头很猛,使用云雀大模型。
  3. 功能更强大。
Dify
  1. 开源,中国公司开发。
  2. 功能最丰富。
  3. 可以本地部署,支持非常多的大模型。
  4. 有 GUI,也有 API。

有这类无需开发的工具,为什么还要学大模型开发技术呢?

  1. 它们都无法针对业务需求做极致调优。
  2. 它们和其它业务系统的集成不是特别方便。

实施建议与最佳实践

在实际落地场景中,给了开发者提供了更多的自由度,我们可以加强输入,也可以整合输出,来增强自己业务的目的。以下是几点关键建议:

1. 提示词工程优化

Function Calling 的成功率很大程度上取决于对函数描述的 Prompt 质量。确保 description 清晰明确,涵盖边界条件。如果模型经常误调用,可以尝试增加 Few-Shot 示例或调整温度参数(Temperature)。

2. 错误处理与容错

外部 API 可能会失败。在接收到 Function Call 后,必须做好异常捕获。如果函数执行失败,应将错误信息回传给模型,让它尝试修正参数或告知用户,而不是直接抛出异常中断流程。

3. 安全性考量

Function Calling 允许模型执行任意代码或 API 调用,存在安全风险。务必对可调用函数进行白名单限制,避免模型调用敏感操作(如删除数据库)。同时注意不要将 API Key 硬编码在客户端,应通过后端代理转发。

4. 成本控制

每次 Function Call 都会产生额外的 Token 消耗和网络延迟。在设计业务流程时,尽量合并多次调用,减少交互轮次。对于高频调用的简单任务,考虑缓存结果。

总结

大模型需要,且我们一直都在努力连接外部世界,从 ChatGPT 的 Plugin,到 GPTs,再到 Function Calling。我们都想给大模型更丰富,更强大的能力。

大模型中的 Function Calling 更是一种强大的功能,它能够增强模型的功能、提高数据的准确性并提升用户体验。随着技术的不断发展,Function Calling 的应用场景将会越来越广泛,为人工智能领域的发展带来更多的可能性。

同时,在实际落地场景中,给了开发者提供了更多的自由度,我们可以加强输入,也可以整合输出,来增强自己业务的目的。掌握这项技术,意味着能够构建出真正具备行动能力的智能体,而不仅仅是聊天机器人。

目录

  1. 前言
  2. 自然语言连接一切(Natural Language Interface),接口的进化
  3. 为什么要让大模型连接外部世界
  4. 并非知晓一切
  5. 没有「真逻辑」
  6. Function Calling 的机制
  7. Function Calling 的定义
  8. Function Calling 的机制
  9. Function Calling 的示例、体验
  10. 伪代码示例:定义函数描述
  11. 支持 Function Calling 的国产大模型
  12. 百度文心大模型
  13. MiniMax
  14. ChatGLM3-6B
  15. 讯飞星火 3.0
  16. OpenAI 用 Actions 连接外部世界
  17. Actions 对接示例
  18. GPTs 与它的平替们
  19. 字节跳动 Coze(扣子)
  20. Dify
  21. 实施建议与最佳实践
  22. 1. 提示词工程优化
  23. 2. 错误处理与容错
  24. 3. 安全性考量
  25. 4. 成本控制
  26. 总结
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • MidJourney 创作 AI 艺术详细教程
  • 牛客 NC221681 dd 爱框框:滑动窗口解法实战
  • ERNIE-4.5 模型系列解析:架构创新与多场景性能测评
  • 国内直连AI绘画工具实践指南及Stable Diffusion部署方案
  • C++11 新特性深度解析:可变参数模板与 Lambda 表达式
  • HTTPS 真的能防止重放攻击吗?
  • Llama-3.2-3B 部署优化:Ollama 配置上下文窗口与 Token 限制
  • Spring Boot 视图层开发:主流模板引擎集成实战
  • 66 个机器人开源项目合集:科研、教育、工业与医疗资源整理
  • Go 语言字符串转小写算法实现与源码
  • C++ priority_queue 与 deque 的使用及模拟实现
  • 二分算法实战:A-B 数对与高考志愿问题解析
  • 从命令行到自动诊断:构建 AI 驱动的故障树与交互式排障系统
  • 成为黑客的 12 个基本步骤与核心技能指南
  • C语言运算符优先级与结合性详解
  • iPad 端 Obsidian 结合 Gitee 实现 Git 同步实战
  • Python 实现空间注意力神经网络(SANN)的设计与实战
  • Llama-2-7B 昇腾 NPU 性能测评与部署优化指南
  • OpenClaw 大龙虾机器人安装与配置教程
  • Git Worktree 原理、实战与避坑指南

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online