OpenAI函数调用

OpenAI是最早提供函数调用能力的厂商,其API设计已成为行业标准。

函数调用·预计阅读时间:50分钟

01概述

OpenAI在2023年6月推出函数调用功能,允许GPT模型生成结构化的函数调用请求。这一功能极大地扩展了GPT模型的应用场景,使其能够与外部系统无缝集成。OpenAI的函数调用API设计简洁优雅,已成为业界事实标准。

支持模型

模型函数调用支持
GPT-4o完整支持,推荐使用
GPT-4-turbo完整支持
GPT-4支持
GPT-3.5-turbo支持

02API使用

OpenAI函数调用通过Chat Completions API实现。

请求参数

messages

对话消息列表

tools

可用函数列表

tool_choice

函数选择策略(auto/none/required)

响应格式

响应结构

  • finish_reason: 值为tool_calls表示函数调用
  • tool_calls: 函数调用列表
  • function.name: 函数名
  • function.arguments: JSON格式参数

03函数定义

OpenAI使用JSON Schema定义函数参数。

定义格式

字段类型说明
typestring固定为function
function.namestring函数名称
function.descriptionstring功能描述
function.parametersobject参数Schema
function.strictboolean严格模式(可选)

参数类型

基础类型

string, number, integer, boolean, array, object, null

约束关键字

enum, minLength, maxLength, minimum, maximum, pattern

04并行调用

OpenAI支持在单次响应中调用多个函数。

并行特性

并行调用优势

  • 效率提升: 多个独立操作一次完成
  • 减少延迟: 避免多次往返
  • 成本优化: 减少API调用次数

处理方式

处理步骤

  • 遍历tool_calls数组
  • 执行每个函数调用
  • 收集所有结果
  • 将结果返回给模型

05流式响应

OpenAI支持函数调用的流式响应。

流式特点

增量输出

函数名和参数增量式输出

实时反馈

提前知道模型正在调用哪个函数

用户体验

改善长时间函数调用的等待体验

06高级特性

OpenAI提供了一些高级特性增强函数调用能力。

特性说明
Strict Mode严格保证参数Schema匹配
Tool Choice控制函数选择行为
Parallel Calls单次响应多个函数调用
Structured Output强制输出符合Schema

07最佳实践

1. 使用Strict Mode

启用严格模式保证参数一致性

2. 提供清晰描述

为函数和参数提供详细描述

3. 处理并行调用

正确处理多个函数调用情况

4. 错误处理

妥善处理函数执行错误

OpenAI函数调用要点

OpenAI的函数调用API设计简洁高效,支持并行调用、流式响应等高级特性。使用Strict Mode可以确保参数格式的准确性。合理利用这些特性,可以构建强大的AI应用。

----