1. 使用场景

Function Calling(函数调用)允许模型根据用户需求调用外部工具或 API,核心价值包括:
  • 扩展数值计算能力:解决模型原生计算不精准的问题。
  • 获取实时外部信息:通过调用搜索、天气、数据库等接口获取即时数据。
  • 环境交互与控制:自动化操控智能设备、发送邮件或执行代码。

2. 使用方式

2.1 通过 REST API 添加 tools 参数

在发送请求时,通过 tools 字段定义可用的函数列表:

2.2 通过 OpenAI 库请求

推荐使用 OpenAI SDK 进行集成,调用方式如下:

3. 支持模型列表

您可以访问 模型广场,查看模型是否支持工具调用。

4. 使用示例 (Python)

以下展示一个完整的闭环调用示例:
[!TIP] Function Calling 示例建议优先使用支持工具调用的普通对话模型。推理模型可能会把部分内容放在 reasoning_content 中,不适合作为新手接入的最小示例。

5. 特殊模型注意事项

不同模型厂商在工具调用上存在一些差异化要求。本节说明需要额外处理的情况,建议在接入对应模型前仔细阅读。

5.1 Gemini 3 系列:多轮工具调用必须回传 thought_signature

5.1.1 背景

Gemini 3 系列模型(如 gemini-3.1-pro-previewgemini-3-flash-preview 等)引入了 Thought Signature 机制:模型在返回 tool_call 时,会附带一段加密的思考轨迹,用于在后续轮次中保持推理上下文的连续性。 在多轮工具调用中,客户端必须将这段 signature 原样回传给模型,否则会收到类似如下的 400 错误:

5.1.2 关键规则

5.1.3 signature 在 OpenAI 兼容格式中的位置

通过 OpenAI SDK 调用时,thought_signature 位于每个 tool_callextra_content.google.thought_signature 字段:
注意:OpenAI SDK 的 pydantic 模型对 extra_content 这类非标准字段的序列化行为在不同版本间可能不一致。推荐从 response.model_dump() 的原始 dict 里提取该字段,而不是依赖 message.tool_calls 的结构化对象属性访问。

5.1.4 完整示例代码

以下是一个跑通 Gemini 3 多轮工具调用的完整示例,重点关注 build_assistant_message_from_raw 辅助函数——它是保证 signature 不丢失的关键。

相关链接