菜单

安装与配置

相关源文件

本页涵盖了 OpenAI Python 库的项目设置、依赖管理和配置选项。它详细介绍了安装过程、配置文件、依赖管理系统以及代码库中使用的客户端设置模式。

有关设置后客户端接口的信息,请参阅核心客户端类

项目结构和依赖

项目配置概述

项目使用pyproject.toml作为中心配置文件,通过 rye 管理依赖项,并保持发布自动化中的版本一致性。

来源:pyproject.toml1-227 src/openai/_version.py1-5 .release-please-manifest.json1-3

基本安装

安装包含所需依赖的核心库

该软件包需要 Python 3.8+,并包含以下核心依赖项

  • httpx>=0.23.0, <1 - HTTP 客户端基础
  • pydantic>=1.9.0, <3 - 数据验证和类型安全
  • typing-extensions>=4.11, <5 - 扩展类型支持
  • anyio>=3.5.0, <5 - 异步兼容层

来源:pyproject.toml10-19 pyproject.toml20

可选依赖项

该库为特定 API 功能提供了可选的依赖组

功能组安装依赖项目的
realtime(实时)pip install "openai[realtime]"websockets >= 13, < 16用于实时 API 的 WebSocket 支持
datalib(数据库)pip install "openai[datalib]"numpy >= 1, pandas >= 1.2.3, pandas-stubs >= 1.1.0.11数据操作工具
voice_helpers(语音助手)pip install "openai[voice_helpers]"sounddevice>=0.5.1, numpy>=2.0.2音频输入/输出功能

来源:pyproject.toml45-48

版本管理

该库遵循语义版本控制,并进行自动化发布管理

版本信息集中在src/openai/_version.py中管理,并通过.release-please-manifest.json与发布自动化同步。

来源:src/openai/_version.py3-4 .release-please-manifest.json2

客户端配置架构

配置类型系统

配置系统使用在_types.py中定义的类型化接口,支持哨兵值(NotGivenOmit)和灵活的覆盖模式。

来源:src/openai/_types.py97-105 src/openai/_types.py107-135 src/openai/_types.py137-157

认证配置

客户端系统支持多种认证方法,并提供环境变量回退

客户端类型环境变量构造函数参数描述
OpenAIOPENAI_API_KEYapi_key标准 OpenAI API 认证
AsyncOpenAIOPENAI_API_KEYapi_key标准客户端的异步版本
AzureOpenAIAZURE_OPENAI_API_KEYapi_keyAzure OpenAI 服务密钥
AzureOpenAIAZURE_OPENAI_AD_TOKENazure_ad_tokenAzure AD 令牌认证

环境变量在客户端初始化时处理,显式参数具有优先权。

来源:pyproject.toml42-43

客户端初始化模式

标准同步客户端

异步客户端

使用上下文管理器进行资源管理

客户端类实现了正确的__enter__/__exit____aenter__/__aexit__协议,用于资源管理。

来源:src/openai/_types.py21-24

配置选项

核心配置类型

配置使用 TypedDict 模式和哨兵类进行显式空值处理和请求级别覆盖。

来源:src/openai/_types.py97-105 src/openai/_types.py107-135 src/openai/_types.py158-167 src/openai/_types.py219-222

超时配置

使用简单值或httpx.Timeout对象进行超时配置,以实现精细控制

RequestOptions TypedDict 支持timeout: float | Timeout | None,用于灵活的超时指定。

来源:src/openai/_types.py100 src/openai/_types.py22-23

重试配置

客户端实现了自动重试逻辑,并对瞬时故障进行指数退避

重试适用于

  • 连接错误和超时
  • HTTP 408(请求超时)
  • HTTP 409(冲突)
  • HTTP 429(速率限制)
  • HTTP 5xx(服务器错误)

RequestOptions中的max_retries: int字段支持按请求定制。

来源:src/openai/_types.py99

基本 URL 配置

通过基本 URL 配置自定义 API 端点

对于 Azure OpenAI,使用azure_endpoint而不是base_url

基本 URL 在客户端初始化期间进行验证和规范化。

来源:src/openai/_types.py22-23

HTTP 客户端配置

HTTP 传输架构

HTTP 层使用httpx作为底层传输,并提供类型化的配置接口。

来源:src/openai/_types.py30-31 src/openai/_types.py39-42 src/openai/_types.py219-222

代理配置

使用ProxiesTypes接口配置 HTTP 代理

ProxiesTypes类型支持Union[str, Proxy, ProxiesDict],用于灵活的代理指定。

来源:src/openai/_types.py41-42

自定义传输配置

使用BaseTransportAsyncBaseTransport配置高级传输选项

传输自定义支持连接池、HTTP/2 支持、自定义认证和网络接口绑定。

来源:src/openai/_types.py30-31 src/openai/_types.py219-222

Azure OpenAI 配置

Azure OpenAI 配置由专门的客户端类处理,并带有 Azure 特定的参数。有关详细的 Azure 设置,请参阅Azure OpenAI 配置

Azure 客户端配置

基本 Azure 配置

来源:pyproject.toml66

Azure AD 认证

Azure Active Directory 集成提供了基于令牌的认证,作为 API 密钥的替代方案

azure_ad_token_provider: Callable[[], str]支持为长时间运行的应用程序自动刷新令牌。

来源:pyproject.toml66

开发配置

开发依赖项

项目使用 rye 进行依赖管理,并区分开发和生产要求

开发依赖项包括

  • pyright==1.1.399 - 类型检查
  • mypy - 额外的类型验证
  • ruff - 代码检查和格式化
  • pytest + pytest-asyncio - 测试框架
  • respx - 用于测试的 HTTP 模拟

来源:pyproject.toml53-71

开发脚本

项目在[tool.rye.scripts]中定义了开发脚本

来源:pyproject.toml73-100

日志配置

使用OPENAI_LOG环境变量启用库日志记录

调试日志提供详细的 HTTP 请求/响应信息和内部操作跟踪。

资源管理模式

HTTP 资源需要显式清理以实现最佳性能

客户端实现了正确的上下文管理器协议,用于自动资源清理。

按请求配置覆盖

client.with_options()方法创建具有修改配置的新客户端实例

RequestOptions接口支持所有可配置参数,用于按请求定制。

来源:src/openai/_types.py97-105 src/openai/_types.py154-156

版本管理

OpenAI Python 库遵循SemVer约定,但有一些向后兼容的例外。如果您需要特定版本,可以直接安装

您可以以编程方式检查已安装的版本

客户端在请求头中包含版本信息,以帮助调试和支持。

来源:src/openai/_version.py3-4 README.md711-731