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定义函数参数。
定义格式
| 字段 | 类型 | 说明 |
|---|---|---|
| type | string | 固定为function |
| function.name | string | 函数名称 |
| function.description | string | 功能描述 |
| function.parameters | object | 参数Schema |
| function.strict | boolean | 严格模式(可选) |
参数类型
基础类型
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应用。
上一篇
← 最佳实践下一篇
Claude函数调用 →