Skip to content

22. Function Calling 和 Tool Calling 有什么区别? ​

难度 P1 高频 · 岗位 应用 · 频率 ★★★ · 预计阅读 5 min

本题阅读地图 ​

  1. 💡 简要回答
  2. 📝 详细解析
  3. 🎯 面试总结

👔面试官:Function Calling 和 Tool Calling 有什么区别?

🙋‍♂️我:差不多吧,都是调工具。

👔面试官:概念上确实容易混,但严格说:Function Calling 更偏模型侧的"结构化调用机制",Tool Calling 更偏生态层的叫法。OpenAI 早期叫 Function Calling,后来也统称 Tools。你能讲清楚这个概念演变吗?

🙋‍♂️我:那就是 Function Calling 是 OpenAI 的术语?

👔面试官:对,OpenAI 最早提出 Function Calling,后来 Anthropic、智谱等用 Tool Calling。本质上都是:模型决定调用外部能力、输出结构化参数。现在两者经常混用,但面试时能说出这个演变,会显得你关注生态动态。

💡 简要回答 ​

概念演变:

术语来源现状
Function CallingOpenAI 早期术语仍常用,但 OpenAI 现在也统称 Tools
Tool CallingAnthropic、智谱等更通用的叫法

本质相同:

  • 模型决定调用外部能力
  • 输出结构化参数(JSON)
  • 宿主程序执行后回传结果

当前趋势:两者概念融合,常混用。OpenAI API 现在也支持 tools 参数(原 functions)。

📝 详细解析 ​

历史演变 ​

OpenAI Function Calling(2023 年中):

  • 最初叫 functions 参数
  • 模型输出 function_call 字段
  • 后来升级为 tools,functions 作为兼容保留

Anthropic Tool Use:

  • 直接叫 tools
  • 模型输出 tool_use 块

开源生态:

  • LangChain:bind_tools() 统一接口
  • 内部兼容各家 API 差异

当前状态 ​

OpenAI 最新 API:

python
# 新写法(推荐)
response = client.chat.completions.create(
    model="gpt-4",
    messages=messages,
    tools=[{"type": "function", "function": {...}}]  # 注意 tools 包裹 function
)

# 旧写法(兼容)
response = client.chat.completions.create(
    model="gpt-4",
    messages=messages,
    functions=[...]  # 直接 functions
)

面试建议 ​

  • 两者本质相同,可以混用
  • 提到演变历史,显示关注生态
  • LangChain 等框架已做统一抽象

🎯 面试总结 ​

Function Calling 和 Tool Calling 本质相同,概念演变中。OpenAI 从 Function 升级到 Tools,生态统一用 Tool Calling。面试时知道演变历史即可。


章节首页 · ← Q21 · Q23 →

最后更新2026-05-01
难度P1
频率medium
阅读5 min
主题tool-use
觉得有帮助?把这个链接转给正在求职的朋友 · 用 Ctrl + K 全站搜索其它题