使用LangChain的OpenAI LLM wrapper触发AttributeError的原因排查
问题:LangChain调用OpenAI时触发AttributeError: module 'openai.error' has no attribute 'Timeout'
我正在用PyQt5开发Python桌面应用,此前自研代码可正常与OpenAI completions端点交互。为实现对话长期记忆功能,尝试引入LangChain,但即使是最简示例也无法运行——无论在类内/外、异步循环、控制台还是主窗口文本浏览器等上下文调用,都会触发相同的AttributeError。
最简示例代码
import os from langchain.llms import OpenAI from local import constants #For API key os.environ["OPENAI_API_KEY"] = constants.OPENAI_API_KEY davinci = OpenAI(model_name= 'text-davinci-003', verbose=True, temperature=0.6) text = "Write me a story about a guy who is frustrated with Python." print("Prompt: " + text) print(davinci(text))
代码能成功实例化wrapper并打印prompt,但调用wrapper函数获取生成文本时,触发如下错误回溯:
错误回溯
Traceback (most recent call last): File "D:\Dropbox\Pycharm Projects\workspace\main.py", line 16, in <module> print(davinci(text)) File "D:\Dropbox\Pycharm Projects\workspace\venv\lib\site-packages\langchain\llms\base.py", line 255, in __call__ return self.generate([prompt], stop=stop).generations[0][0].text File "D:\Dropbox\Pycharm Projects\workspace\venv\lib\site-packages\langchain\llms\base.py", line 128, in generate raise e File "D:\Dropbox\Pycharm Projects\workspace\venv\lib\site-packages\langchain\llms\base.py", line 125, in generate output = self._generate(prompts, stop=stop) File "D:\Dropbox\Pycharm Projects\workspace\venv\lib\site-packages\langchain\llms\openai.py", line 259, in _generate response = self.completion_with_retry(prompt=_prompts, **params) File "D:\Dropbox\Pycharm Projects\workspace\venv\lib\site-packages\langchain\llms\openai.py", line 200, in completion_with_retry retry_decorator = self._create_retry_decorator() File "D:\Dropbox\Pycharm Projects\workspace\venv\lib\site-packages\langchain\llms\openai.py", line 189, in _create_retry_decorator retry_if_exception_type(openai.error.Timeout) AttributeError: module 'openai.error' has no attribute 'Timeout'
我认为LangChain库本身无问题,猜测是依赖版本不兼容或环境差异(他人多在Notebook环境使用)导致。已尝试替换自研调用函数、在不同作用域实例化wrapper、异步调用等方法,均无法解决该错误,寻求相关建议。
内容的提问来源于stack exchange,提问作者M. Branson
相关产品推荐
相关产品推荐

