菜单

增强型聊天补全

相关源文件

增强型聊天补全为OpenAI聊天补全API(可通过beta命名空间访问)提供了更丰富的Python集成。此扩展提供了Pydantic模型的自动类型转换、响应的结构化解析以及改进的流式接口。有关标准聊天补全API的信息,请参阅聊天补全API

概述

增强型聊天补全API通过两种主要方法扩展了标准聊天补全接口

  1. parse() - 使用Pydantic模型自动将API响应转换为Python对象
  2. stream() - 提供更丰富的流式体验,具有细粒度事件和适当的上下文管理

这些方法使处理来自API的结构化数据变得更容易,同时提供更好的类型安全性和开发者体验。

来源

主要功能

增强型聊天补全比标准API提供了多项改进

功能标准API增强型API
响应格式JSON字符串结构化Python对象
类型安全手动解析自动Pydantic验证
函数工具处理手动JSON解析自动对象转换
流式传输基本分块基于事件且带累积的API
错误处理基本错误增强型错误(例如,长度检测)

来源

解析方法

parse() 方法使用Pydantic模型自动将API响应转换为Python类型。

响应格式集成

当您将Pydantic模型作为response_format参数提供时,该方法将

  1. 将模型转换为JSON Schema
  2. 将其作为响应格式发送到API
  3. 将响应内容解析回您的模型

来源

使用示例

来源

返回类型结构

parse() 方法返回一个 ParsedChatCompletion[T] 对象,它扩展了标准的 ChatCompletion 类,并具有额外的解析属性

来源

流式方法

stream() 方法为流式响应提供了更细粒度的事件API,并自动累积内容增量。

基于事件的流式传输

与标准流式API不同,增强型stream() 方法

  1. 需要在上下文管理器中使用
  2. 提供类型化的、基于事件的流式内容访问
  3. 自动累积增量以便于访问最终结果
  4. 支持与parse() 相同的Pydantic模型解析

来源

使用示例

来源

函数工具集成

parse()stream() 方法都为函数工具调用提供了增强支持。

自动工具解析

如果满足以下条件,增强型方法可以自动将函数工具调用解析为Python对象:

  1. 您使用 openai.pydantic_function_tool() 辅助方法
  2. 您将工具模式标记为 "strict": True

来源

Pydantic函数工具示例

来源

支持多工具

增强型API支持在单个请求中定义和解析多个函数工具

来源

错误处理

增强型API为常见情况提供改进的错误处理

  1. 长度错误:如果模型的响应因令牌限制而被截断,则会引发 LengthFinishReasonError
  2. 内容过滤错误:如果内容被过滤,则会引发 ContentFilterFinishReasonError
  3. 工具验证错误:如果工具调用验证失败,则会引发相应的异常

来源

异步支持

所有增强功能均提供同步和异步版本

  • 同步:client.beta.chat.completions.parse()client.beta.chat.completions.stream()
  • 异步:async_client.beta.chat.completions.parse()async_client.beta.chat.completions.stream()

异步实现遵循相同的模式,但使用 async/await 语法

来源

与Responses API的比较

对于新项目,请考虑使用较新的Responses API,它直接将许多这些增强功能集成到核心API中。增强型聊天补全API对于从标准聊天补全API过渡,并希望获得额外类型安全性和结构化数据处理的项目非常有用。

来源