本文档解释了 OpenAI Python 客户端库如何处理对 OpenAI API 的请求并处理相应的响应。理解此系统对于有效使用该库和在出现问题时进行故障排除至关重要。有关流式响应的具体信息,请参阅流式响应。
OpenAI Python 客户端中的请求-响应周期虽然复杂,但遵循逻辑流程
来源: src/openai/_base_client.py476-549 src/openai/_response.py129-193
每个 API 请求都始于 FinalRequestOptions,它封装了构建 HTTP 请求所需的所有参数
来源: src/openai/_base_client.py434-455 src/openai/_models.py
请求头通过 _build_headers 方法以分层方式构建
来源: src/openai/_base_client.py433-458
客户端通过以下几个步骤处理 URL 和查询参数
来源: src/openai/_base_client.py460-471 src/openai/_qs.py
对于请求体,该库处理
来源: src/openai/_base_client.py487-494 src/openai/_files.py
该库使用复杂的响应类层级结构来处理不同类型的响应
来源: src/openai/_response.py48-193 src/openai/_response.py274-380 src/openai/_response.py383-487
响应处理的核心是 _parse 方法,它负责处理
来源: src/openai/_response.py128-271
响应对象根据目标类型缓存解析结果,以避免重复解析
来源: src/openai/_response.py285-331 src/openai/_response.py394-438
客户端包含强大的错误处理和重试逻辑
客户端根据以下因素决定是否重试请求
x-should-retry 请求头来源: src/openai/_base_client.py741-774 src/openai/_base_client.py683-739
重试超时时间根据以下方式计算
来源: src/openai/_base_client.py717-739 src/openai/_constants.py13-14
该库在 Python 对象和 API 格式之间进行转换
类型转换使用以下几种机制
来源: src/openai/_base_client.py607-624 src/openai/_utils.py src/openai/_models.py
该库提供上下文管理器来处理流式响应
这些上下文管理器通过在上下文退出时自动关闭响应来确保正确的资源清理,防止资源泄漏。
来源: src/openai/_response.py615-660
一个完整的聊天补全请求-响应周期示例
来源: src/openai/_base_client.py935-1050
OpenAI Python 客户端中的请求-响应处理系统是一个复杂的架构,它处理
理解此系统有助于有效使用该库,并解决在 API 交互过程中可能出现的问题。