Streamlit部署ChatOpenAI报错:意外关键字参数'proxies'求助
Streamlit部署后ChatOpenAI报错:Client.init()收到意外关键字参数'proxies'
问题描述
本地运行Streamlit应用完全正常,但部署到Streamlit平台后出现报错。此前应用运行正常,代码更新后突然报错,即使回滚至原可运行代码状态,问题仍存在。代码中调用ChatOpenAI函数时未传入proxies参数,但报错提示Client.__init__() got an unexpected keyword argument 'proxies'。
报错栈信息
────────────────────── Traceback (most recent call last) ─────────────────────── /home/adminuser/venv/lib/python3.12/site-packages/streamlit/runtime/scriptrunner/exec_code.py:88 in exec_func_with_error_handling /home/adminuser/venv/lib/python3.12/site-packages/streamlit/runtime/scriptrunner/script_runner.py:579 in code_to_exec /mount/src/langgraph_agent/app/app_st.py:212 in <module> 209 210 211 if __name__ == "__main__": ❱ 212 │ main() 213 .... .... .... /mount/src/langgraph_agent/agents/agents.py:40 in get_llm 37 │ 38 │ def get_llm(self, json_model=True): 39 │ │ if self.server == 'openai': ❱ 40 │ │ │ return get_open_ai_json(model=self.model, temperature=self 41 │ │ if self.server == 'ollama': 42 │ │ │ return OllamaJSONModel(model=self.model, temperature=self. 43 │ │ if self.server == 'vllm': /mount/src/langgraph_agent/models/openai_models.py:11 in get_open_ai 8 9 def get_open_ai(temperature=0, model='gpt-3.5-turbo'): 10 │ ❱ 11 │ llm = ChatOpenAI( 12 │ model=model, 13 │ temperature = temperature, 14 ) /home/adminuser/venv/lib/python3.12/site-packages/pydantic/v1/main.py:341 in __init__ 338 │ │ # Uses something other than `self` the first arg to allow "se 339 │ │ values, fields_set, validation_error = validate_model(__pydan 340 │ │ if validation_error: ❱ 341 │ │ │ raise validation_error 342 │ │ try: 343 │ │ │ object_setattr(__pydantic_self__, '__dict__', values) 344 │ │ except TypeError as e: ──────────────────────────────────────────────────────────────────────────────── ValidationError: 1 validation error for ChatOpenAI __root__ Client.__init__() got an unexpected keyword argument 'proxies' (type=type_error)
已尝试的排查操作
- 重启应用
- 检查环境配置
- 排查依赖包更新情况
- 确认代码中无
proxies变量传入ChatOpenAI - 回滚至之前可运行的代码版本
解决方案
1. 锁定依赖版本
本地和Streamlit云端的依赖包版本不一致是核心原因,需在项目根目录创建requirements.txt,明确指定所有相关包的具体版本(与本地运行环境一致):
streamlit==1.35.0 langchain==0.1.17 openai==1.30.1 # 其他项目依赖包
部署时Streamlit会严格按照该文件安装依赖,避免版本差异问题。
2. 显式禁用代理参数
Streamlit云端可能存在全局代理配置,被OpenAI底层客户端自动读取并传入proxies参数。在初始化ChatOpenAI时,通过client_kwargs显式覆盖:
llm = ChatOpenAI( model=model, temperature=temperature, client_kwargs={"proxies": None} )
3. 清理云端缓存
在Streamlit部署页面选择「重新部署」,并勾选「清空缓存」选项,清除云端残留的旧依赖或配置。
4. 验证依赖兼容性
确保langchain与openai版本兼容:
- langchain 0.1.x 适配 openai 1.x 版本
- 若使用旧版langchain(0.0.x),需对应使用openai 0.28.x版本
内容的提问来源于stack exchange,提问作者gogr
相关产品推荐
相关产品推荐

