今天写的是一篇衍生文章。以前在跟国内某大模型大厂合作的时候我们提了一些建议,说你们现在支持的Function Calling实在太不靠谱了,得赶紧做,不过那个时候大家还在拼模型基础性能,感觉没空做,所以去年一年我们有两个项目只好忍痛弃用。

Function Calling 是什么?

这是最早由 OpenAI 在 GPT-4 2023 中推出的一种机制,允许你为模型注册一组函数接口,大模型基于自然语言自动输出需要调用的函数及其参数。

举例:

"function":{
"name":"get_weather",
"parameters":{
"city":"Shanghai"
}
}

你给模型定义函数,它会决定何时调用,并生成参数。

    优点:

  • 简洁、适合微服务对接

  • 易于开发调试

  • 模型直接“填表”输出函数名和参数

    限制:

  • 仅适合静态、结构化、无状态的调用

  • 复杂交互无法表达(如多轮、异步、Agent协作)



Tool Calling 是什么?

Tool Calling 是 Function Calling 的扩展版 + 抽象升级版,它背后的理念是:

“大模型不是调用一个函数,而是调用一个工具,工具可以是函数、数据库、搜索器、Agent、文件系统等复合实体。”

在 GPT-4o、Claude 3.5、Gemini 2.5 这些模型中,“Tool Calling” 已成为更推荐的交互模式。

特征:

能力

描述

多模态

工具可以处理图像、音频、文件等

状态感知

工具可以保持状态(如 Agent 工具池)

推理与协调

工具可嵌套调用,如 Agent调用另一个Agent

更高抽象

工具可包括执行逻辑、策略、上下文打包

在AI Agent和大模型应用中,“Tool Calling” 和“Function Calling” 是两个概念上相关、实现上逐渐分化的能力。它们的核心区别主要在于:


一句话区别:

对比项

Function Calling

Tool Calling

本质

模型调用一个函数(通常为后端函数)

模型调用一个“工具”——可能是函数、API、Agent、数据库等

范围

函数级调用

,偏开发视角

系统级调用

,偏产品/任务视角

扩展性

通常调用一个函数,参数规范固定

可以调用一个复杂组件(带上下文、权限、状态)

使用场景

技术测试/Prompt Engineering

多Agent、真实任务、业务流程



示例对比(场景:预定会议室)

模型动作

Function Calling

Tool Calling

目标

调用一个函数 book_meeting_room

使用“会议室预定工具”

接口

JSON函数,参数:时间、地点

Tool 包含:会议室数据库 + 调用链逻辑 + 用户偏好

复杂度

只能做一层调用

可包含权限校验、与日历同步、多轮反馈

输出

{"room": "301", "time": "3pm"}

返回整个预定流程状态(是否成功、是否冲突等)


哪种更适合 AI Agent 应用?

应用场景

建议机制

简单工具调用,如查天气、查汇率

✅ Function Calling

多Agent协同、任务分解、多轮执行

✅ Tool Calling 更佳

B端系统对接(有权限/上下文控制)

✅ Tool Calling 更强

构建可扩展平台(如Navi)

✅ Tool = 抽象组件,更灵活


总结对比表:

项目

Function Calling

Tool Calling

诞生时间

2023 GPT-4 初期

2024 GPT-4o / Claude 3.5

接口类型

函数原型 (name + params)

工具对象 (name + desc +行为)

是否支持状态/记忆

❌ 无状态

✅ 可状态化、持久化

是否支持嵌套调用

❌ 一次一调用

✅ 可递归/多步计划

是否支持异步

一般无

✅ 通常具备(Tool Agent)

多模态支持

✅ 图像、语音输入

实用场景

技术测试、微调用

任务代理、工作流、多Agent系统

最后我们让Gemini出了一份对比,为什么要强调是Gemini出的呢,因为...反正不是我们出的。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐