DEBUG.WIKI
京东云;让 AI 进入真实业务;零售 · 物流 · 客服 · 硬件;查看方案 →
ZgoCloud:多地区部署,按需选节点;日本、美国、香港、德国
Evoxt;最高 6.0GHz CPU;高频云服务器 · 免费每周备份;查看配置 →

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 客户端初始化,不据此保证旧版命令行工具的所有代理参数也已修复。