OpenAI() 一创建就报 proxies 参数错误,先看 openai 和 httpx 的版本
OpenAI() 构造阶段的 proxies 错误可能来自 HTTPX 0.28 与旧 SDK 的组合,也可能来自应用自己的代理代码。核对实际解释器和调用方,再升级兼容 SDK 或迁移代理参数。
OpenAI() 一创建就报 proxies 参数错误,先看 openai 和 httpx 的版本
还没执行模型请求,程序就在 OpenAI() 这一行停住了:
TypeError: Client.__init__() got an unexpected keyword argument 'proxies'
这种报错发生在 Python 客户端的构造阶段。改模型名、换 API Key、增加请求重试,都碰不到出错的位置。
先确认到底是谁传了 proxies
用启动服务的同一个解释器执行下面两条命令。容器里运行的服务,就进容器查;Notebook 则先确认内核路径。
python -c 'import sys,openai,httpx; print(sys.executable); print(openai.__version__,openai.__file__); print(httpx.__version__,httpx.__file__)'
python -m pip check
然后看堆栈中最接近报错的业务代码:
- 自己写了
httpx.Client(proxies=...):需要修改应用里的代理配置 - 业务代码只有
OpenAI(),proxies来自 SDK 内部:优先检查依赖组合 - 查出来的包路径不在预期虚拟环境:先修正启动命令,别继续往另一个 Python 里装包
HTTPX 在 0.28.0 移除了此前弃用的 proxies 参数。OpenAI Python 的 1.55.3 发布记录明确包含对应兼容修复;它是这个历史问题的修复点,不能当作今天的新项目推荐版本。HTTPX 0.28.0 发布记录、OpenAI Python 1.55.3 发布记录
两条修复路线,选适合项目的一条
允许调整 SDK 时,在项目使用的依赖管理器里选择包含上述修复、且与上层框架兼容的版本,再重新生成锁文件。不要只修改线上容器里的包而不修改构建输入,否则下次部署可能恢复原状。
旧项目短期不能升级 SDK,可以先在测试环境约束 HTTPX:
python -m pip install 'httpx<0.28'
python -m pip check
这条命令是临时回退路线,执行前应保存现有锁文件,并确认其他依赖没有要求 HTTPX 0.28 或更高版本。若 pip check 产生冲突,应回到依赖管理器整体解算,不能把冲突忽略后直接上线。
如果 proxies 出现在自己的代码里,升级 SDK 不会替你改这一行。对于使用当前单代理接口的 HTTPX,可这样写:
import os
import httpx
with httpx.Client(proxy=os.environ["APP_HTTP_PROXY"]) as transport:
print(type(transport).__name__)
APP_HTTP_PROXY 应由部署环境注入。这个示例只构造并关闭客户端,不发送请求。已有按协议分流的多代理配置需要按 HTTPX 的 mounts 接口迁移,不能把整个字典直接塞进单个 proxy 参数。HTTPX 代理配置
怎样确认修复确实落在运行环境里
先做不联网检查:
import os
from openai import OpenAI
# 可使用仅供本地构造检查的占位值,程序不会发请求。
with OpenAI(api_key=os.environ["OPENAI_API_KEY"]) as client:
print(type(client).__name__)
预期是正常退出,且没有 proxies 的 TypeError。随后由你在测试环境发起一条经批准的最小请求,分别检查代理连通、认证、模型权限;这一步可能产生 API 费用。构造通过只证明依赖初始化已过关。
最后用锁文件重建干净环境,再跑相同检查。pip check 只能发现声明过的依赖冲突,不能代替启动测试。本文范围是 Python 客户端初始化,不据此保证旧版命令行工具的所有代理参数也已修复。


