Langchain-Chatchat
Langchain-Chatchat copied to clipboard
外接Azure api, CPU环境下LLM 模型不work
问题描述 / Problem Description
LLM 对话模式不能正常回答
会报错
\anaconda3\envs\chatchat\Lib\site-packages\langchain_community\chat_models\openai.py", line 493, in _astream
if len(chunk["choices"]) == 0:
^^^^^^^^^^^^^^^^^^^^^
TypeError: object of type 'NoneType' has no len()
2024-02-27 14:40:14,225 - utils.py[line:27] - ERROR: TypeError: Caught exception: object of type 'NoneType' has no len()
复现问题的步骤 / Steps to Reproduce
- 执行 LLM 对话
- 任意输入input
环境信息 / Environment Information
- langchain-ChatGLM 版本/commit 号:0.0.354.
- 是否使用 Docker 部署(是/否):NO
- 使用的模型(ChatGLM2-6B / Qwen-7B 等):gpt-35-turbo
- 使用的 Embedding 模型(moka-ai/m3e-base 等): bge-large-zh
- 使用的向量库类型 (faiss / milvus / pg_vector 等): faiss
- 操作系统及版本 / Operating system and version: :Windows-10-10.0
- Python 版本 / Python version:3.11.7
- 其他相关环境信息 / Other relevant environment information: AMD CPU
🤖
嘿,@Liwan-Chen!很高兴再次见到你 😜
根据您提供的错误信息,这个问题可能是由于在尝试获取chunk["choices"]的长度时,chunk["choices"]为None,从而导致TypeError: object of type 'NoneType' has no len()的错误。这可能是由于Azure API的连接或配置参数有问题,或者在访问大型模型时存在稳定性问题。
在Langchain-Chatchat的相关问题中,我找到了一些可能的解决方案:
- 在尝试获取
chunk["choices"]的长度之前,检查chunk["choices"]是否为None。这可以通过在代码中添加适当的检查来实现。例如:
if chunk["choices"] is not None and len(chunk["choices"]) == 0:
-
检查Azure API的连接和配置参数,确保正确访问大型模型。
-
如果问题仍然存在,可能需要进一步调查第三方
langchain包和Azure API连接。
此外,根据您的环境信息,您正在CPU环境下运行代码。在提供的上下文中,脚本中设置的默认设备类型是"cuda",这是用于GPU计算的。如果您在CPU环境中运行脚本,您应该将设备类型设置为"cpu"。您可以通过在运行脚本时传递参数--device cpu来实现这一点。
如果在更改设备类型为"cpu"后错误仍然存在,问题可能在代码的其他地方或Azure API本身。在这种情况下,详细的错误信息将有助于诊断问题。
关于版本0.2.6和0.2.7之间的更改可能导致TypeError的问题,我没有在Langchain-Chatchat存储库中找到答案,但答案可能在其他地方,或者我可能错过了它。
以上是我根据现有信息给出的建议,如果问题仍然存在,或者有其他问题,欢迎继续讨论。
Sources
- [BUG] 知识库对话报错ERROR: object of type 'NoneType' has no len()
- langchain-chathat 调用Dify应用的api接口时报错: ERROR: TypeError: Caught exception: object of type 'NoneType' has no len()
- TypeError: object of type 'NoneType' has no len()
- server/llm_api_stale.py
About Dosu
This response is meant to be useful and save you time. It is not meant to be a precise solution, but rather a starting point for your own research.
Help me be more useful! Please leave a 👍 if this is helpful and 👎 if it is irrelevant.
If you want to continue the conversation, start your reply with @dosu-bot.
if len(chunk["choices"]) == 0: TypeError: object of type 'NoneType' has no len() 这是什么原因
没正常请求到模型,或者参数超了,或者依赖少了,各种问题都可能,因为是通过fschat等,报错不会映射到命令行