Closed murdonson closed 8 months ago
🤖
嗨,@murdonson!很高兴再次见到你。希望你一切都好!
根据您提供的信息,我发现了一些可能的解决方案。这个错误"NoneType has no len()"通常发生在尝试获取None对象的长度时。在Python中,None对象没有长度,因此会出现错误。
在您提供的上下文中,错误可能来自_join_docs
方法。此方法试图连接文档列表,然后剥离结果。如果结果是空字符串,它返回None。如果稍后在需要其长度的上下文中使用返回的None,它将引发"NoneType has no len()"错误。
def _join_docs(self, docs: List[str]) -> Optional[str]:
text = self._separator.join(docs)
text = text.strip()
if text == "":
return None
else:
return text
要解决此问题,您可以修改_join_docs
方法,使其在连接文本为空时返回空字符串,而不是None。这样,总是可以确定返回对象的长度。
def _join_docs(self, docs: List[str]) -> str:
text = self._separator.join(docs)
text = text.strip()
return text
请注意,这只是基于提供的上下文的错误的可能原因。实际的原因可能会根据您的应用程序中方法的使用方式而有所不同。
此外,"NoneType has no len()"错误可能在knowledge_base_chat_iterator
函数的if len(docs) == 0:
或if len(source_documents) == 0:
行抛出。当尝试对docs
或source_documents
变量执行长度检查时,如果该变量为None
,则会发生此错误。
要解决此问题,您应确保docs
和source_documents
始终初始化为列表,即使是空的。如果search_docs
函数或reranker_model.compress_documents
方法可能返回None
,您应处理此情况。
这是修正后的代码:
docs = await run_in_threadpool(search_docs,
query=query,
knowledge_base_name=knowledge_base_name,
top_k=top_k,
score_threshold=score_threshold)
if docs is None:
docs = []
# ...
if USE_RERANKER:
# ...
docs = reranker_model.compress_documents(documents=docs,
query=query)
if docs is None:
docs = []
# ...
source_documents = []
for inum, doc in enumerate(docs):
# ...
if source_documents is None:
source_documents = []
以上是我根据您提供的信息和我对Langchain-Chatchat代码库的理解得出的可能的解决方案。如果您在尝试这些解决方案后仍然遇到问题,或者需要更多的帮助,请提供更多的信息,我会尽力提供更多的帮助。
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.
我自己下载的Qwen-1_8B-Chat 改了model config文件 模型应该是访问到了啊 本地模型
不知道你这么弄的模型,这个错误应该是模型读取失败,也就是模型有问题,你检查一下模型文件吧
不知道你这么弄的模型,这个错误应该是模型读取失败,也就是模型有问题,你检查一下模型文件吧 今天除夕 等过几天我检查检查 祝你春节快乐😁
不知道你这么弄的模型,这个错误应该是模型读取失败,也就是模型有问题,你检查一下模型文件吧
我用官方示例测试了下载的模型 没有问题 证明模型文件没有问题 但是放在langchainchatchat这里就是报错。。。。
是chat模型吗,chatglm3-6B不出现这个错误呀,看报错事generate的地方错
是chat模型吗,chatglm3-6B不出现这个错误呀,看报错事generate的地方错
model_path': '/home/m/project/Langchain-Chatchat/Qwen-1_8B-Chat 我用的这个模型
是chat模型吗,chatglm3-6B不出现这个错误呀,看报错事generate的地方错
我没用默认模型 就是下载的/home/m/project/Langchain-Chatchat/Qwen-1_8B-Chat 和 /home/m/project/Langchain-Chatchatbge-large-zh 在model config py 里面指定了绝对路径 然后运行python startup.py -a 然后报这个错 是为什么呢 我本地测试下载的Qwen模型 能回答问题
是chat模型吗,chatglm3-6B不出现这个错误呀,看报错事generate的地方错
我是不是哪里漏了什么操作 我就下载了小模型 然后改绝对路径 然后启动python startup.py -a
配置文件改了吗
配置文件改了吗
改了model config py这个文件
server cofing配置一下Qwen,其他地方应该不用改,如果是这样的话我也不太清楚了,因为我改了server config 和 model config就行了
你好,请问怎么解决的
请问解决了吗
问题描述 / Problem Description 用简洁明了的语言描述这个问题 / Describe the problem in a clear and concise manner. 知识库问答的时候,回答不了问题 空白 但是有知识库匹配结果 报错NoneType has no len()
自己建立知识库 然后上传doc文件 然后向量化成功 然后开始问答的的时候 回答不了问题
操作系统:Linux-6.5.0-17-generic-x86_64-with-glibc2.35. python版本:3.10.13 (main, Sep 11 2023, 13:44:35) [GCC 11.2.0] 项目版本:v0.2.10 langchain版本:0.0.354. fastchat版本:0.2.35
环境信息 当前使用的分词器:ChineseRecursiveTextSplitter 当前启动的LLM模型:['Qwen-1_8B-Chat', 'zhipu-api', 'openai-api'] @ cpu {'device': 'cpu', 'host': '0.0.0.0', 'infer_turbo': False, 'model_path': '/home/m/project/Langchain-Chatchat/Qwen-1_8B-Chat', 'model_path_exists': True, 'port': 20002} {'api_key': '', 'device': 'auto', 'host': '0.0.0.0', 'infer_turbo': False, 'online_api': True, 'port': 21001, 'provider': 'ChatGLMWorker', 'version': 'glm-4', 'worker_class': <class 'server.model_workers.zhipu.ChatGLMWorker'>} {'api_base_url': 'https://api.openai.com/v1', 'api_key': '', 'device': 'auto', 'host': '0.0.0.0', 'infer_turbo': False, 'model_name': 'gpt-4', 'online_api': True, 'openai_proxy': '', 'port': 20002} 当前Embbedings模型: bge-large-zh @ cpu