本页涵盖了 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 | 音频输入/输出功能 |
该库遵循语义版本控制,并进行自动化发布管理
版本信息集中在src/openai/_version.py中管理,并通过.release-please-manifest.json与发布自动化同步。
来源:src/openai/_version.py3-4 .release-please-manifest.json2
配置系统使用在_types.py中定义的类型化接口,支持哨兵值(NotGiven、Omit)和灵活的覆盖模式。
来源:src/openai/_types.py97-105 src/openai/_types.py107-135 src/openai/_types.py137-157
客户端系统支持多种认证方法,并提供环境变量回退
| 客户端类型 | 环境变量 | 构造函数参数 | 描述 |
|---|---|---|---|
OpenAI | OPENAI_API_KEY | api_key | 标准 OpenAI API 认证 |
AsyncOpenAI | OPENAI_API_KEY | api_key | 标准客户端的异步版本 |
AzureOpenAI | AZURE_OPENAI_API_KEY | api_key | Azure OpenAI 服务密钥 |
AzureOpenAI | AZURE_OPENAI_AD_TOKEN | azure_ad_token | Azure AD 令牌认证 |
环境变量在客户端初始化时处理,显式参数具有优先权。
客户端类实现了正确的__enter__/__exit__ 和 __aenter__/__aexit__协议,用于资源管理。
配置使用 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
客户端实现了自动重试逻辑,并对瞬时故障进行指数退避
重试适用于
RequestOptions中的max_retries: int字段支持按请求定制。
通过基本 URL 配置自定义 API 端点
对于 Azure OpenAI,使用azure_endpoint而不是base_url
基本 URL 在客户端初始化期间进行验证和规范化。
HTTP 层使用httpx作为底层传输,并提供类型化的配置接口。
来源:src/openai/_types.py30-31 src/openai/_types.py39-42 src/openai/_types.py219-222
使用ProxiesTypes接口配置 HTTP 代理
ProxiesTypes类型支持Union[str, Proxy, ProxiesDict],用于灵活的代理指定。
使用BaseTransport和AsyncBaseTransport配置高级传输选项
传输自定义支持连接池、HTTP/2 支持、自定义认证和网络接口绑定。
来源:src/openai/_types.py30-31 src/openai/_types.py219-222
Azure OpenAI 配置由专门的客户端类处理,并带有 Azure 特定的参数。有关详细的 Azure 设置,请参阅Azure OpenAI 配置。
Azure Active Directory 集成提供了基于令牌的认证,作为 API 密钥的替代方案
azure_ad_token_provider: Callable[[], str]支持为长时间运行的应用程序自动刷新令牌。
项目使用 rye 进行依赖管理,并区分开发和生产要求
开发依赖项包括
pyright==1.1.399 - 类型检查mypy - 额外的类型验证ruff - 代码检查和格式化pytest + pytest-asyncio - 测试框架respx - 用于测试的 HTTP 模拟项目在[tool.rye.scripts]中定义了开发脚本
使用OPENAI_LOG环境变量启用库日志记录
调试日志提供详细的 HTTP 请求/响应信息和内部操作跟踪。
HTTP 资源需要显式清理以实现最佳性能
客户端实现了正确的上下文管理器协议,用于自动资源清理。
client.with_options()方法创建具有修改配置的新客户端实例
RequestOptions接口支持所有可配置参数,用于按请求定制。
来源:src/openai/_types.py97-105 src/openai/_types.py154-156
OpenAI Python 库遵循SemVer约定,但有一些向后兼容的例外。如果您需要特定版本,可以直接安装
您可以以编程方式检查已安装的版本
客户端在请求头中包含版本信息,以帮助调试和支持。