Client.__init__() got an unexpected keyword argument 'proxies'
🚨 错误信息
Client.__init__() got an unexpected keyword argument 'proxies'
Traceback (most recent call last):
File "/data/sunyongan/sunyongan/digirl-master/digirl/environment/android/evaluate.py", line 714, in <module>
evaluator = EndResultEvaluator(
File "/data/sunyongan/sunyongan/digirl-master/digirl/environment/android/evaluate.py", line 616, in __init__
self.client = OpenAI(
File "/data/sunyongan/sunyongan/miniconda3/envs/DIGIRL-qwen/lib/python3.10/site-packages/openai/_client.py", line 123, in __init__
super().__init__(
File "/data/sunyongan/sunyongan/miniconda3/envs/DIGIRL-qwen/lib/python3.10/site-packages/openai/_base_client.py", line 846, in __init__
self._client = http_client or SyncHttpxClientWrapper(
File "/data/sunyongan/sunyongan/miniconda3/envs/DIGIRL-qwen/lib/python3.10/site-packages/openai/_base_client.py", line 744, in __init__
super().__init__(**kwargs)
TypeError: Client.__init__() got an unexpected keyword argument 'proxies'
🤖 AI解决方案
错误分析
1. 错误翻译
原文:Client.__init__() got an unexpected keyword argument 'proxies'
译文:Client.__init__() 接收到了一个意外的关键字参数 'proxies'
2. 原因分析
- 根本原因:在初始化 OpenAI 客户端时,传递了一个不受支持的
proxies参数。OpenAI Python SDK 的最新版本(≥1.0.0)已更改 API 结构,不再直接在OpenAI()构造函数中支持proxies参数。 - 具体位置:在
/data/sunyongan/sunyongan/digirl-master/digirl/environment/android/evaluate.py文件的第 616 行,初始化OpenAI()客户端时传入了proxies参数。
3. 解决方案
在新版 OpenAI SDK 中,需要通过http_client 参数配置代理:
# 修改前的代码(问题所在):
# self.client = OpenAI(proxies="http://your-proxy:port")
# 修改后的代码:
from openai import OpenAI
import httpx
# 创建一个带有代理配置的 HTTP 客户端
http_client = httpx.Client(
proxies="http://your-proxy:port", # 或使用字典格式:{"http://": "http://proxy:port", "https://": "http://proxy:port"}
timeout=30.0 # 建议设置超时时间
)
# 使用自定义的 HTTP 客户端初始化 OpenAI
self.client = OpenAI(
api_key="your-api-key",
http_client=http_client # 替换原来的 proxies 参数
)
4. ️ 预防措施
import openai
print(openai.__version__) # 查看当前版本
class OpenAIConfig:
def __init__(self, api_key, proxy=None):
self.api_key = api_key
self.proxy = proxy
def create_client(self):
if self.proxy:
http_client = httpx.Client(proxies=self.proxy)
return OpenAI(api_key=self.api_key, http_client=http_client)
return OpenAI(api_key=self.api_key)
注意:如果不需要代理,直接删除 proxies 参数即可正常初始化 OpenAI 客户端。