From b2626122482e6fd0a2e0fa04b21bab8eb34c0ca5 Mon Sep 17 00:00:00 2001 From: hzg0601 Date: Thu, 15 Jun 2023 13:15:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96cli=5Fdemo.py=E7=9A=84?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=9A=E6=94=AF=E6=8C=81=20=E8=BE=93?= =?UTF-8?q?=E5=85=A5=E6=8F=90=E7=A4=BA=EF=BC=9B=E5=A4=9A=E8=BE=93=E5=85=A5?= =?UTF-8?q?=EF=BC=9B=E9=87=8D=E6=96=B0=E8=BE=93=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- chains/local_doc_qa.py | 4 +++- cli_demo.py | 22 +++++++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/chains/local_doc_qa.py b/chains/local_doc_qa.py index dac13bb..f7eea83 100644 --- a/chains/local_doc_qa.py +++ b/chains/local_doc_qa.py @@ -196,7 +196,9 @@ class LocalDocQA: return vs_path, loaded_files else: logger.info("文件均未成功加载,请检查依赖包或替换为其他文件再次上传。") - return None, loaded_files + # 若len(docs) !> 0,必然是所有文件均未加载成功,loaded_files必然为[],返回没有实际意义 + # 而若只返回None,可以跟上文的异常返回值保持一致,更便于下游任务判断 + return None def one_knowledge_add(self, vs_path, one_title, one_conent, one_content_segmentation, sentence_size): try: diff --git a/cli_demo.py b/cli_demo.py index 938ebb3..a7bc732 100644 --- a/cli_demo.py +++ b/cli_demo.py @@ -23,11 +23,31 @@ def main(): top_k=VECTOR_SEARCH_TOP_K) vs_path = None while not vs_path: + print("注意输入的路径是完整的文件路径,例如content/`knowledge_base_id`/file.md,多个路径用英文逗号分割") filepath = input("Input your local knowledge file path 请输入本地知识文件路径:") + # 判断 filepath 是否为空,如果为空的话,重新让用户输入,防止用户误触回车 if not filepath: continue - vs_path, _ = local_doc_qa.init_knowledge_vector_store(filepath) + + # 支持加载多个文件 + filepath = filepath.split(",") + # filepath错误的返回为None, 如果直接用原先的vs_path,_ = local_doc_qa.init_knowledge_vector_store(filepath) + # 会直接导致TypeError: cannot unpack non-iterable NoneType object而使得程序直接退出 + # 因此需要先加一层判断,保证程序能继续运行 + temp = local_doc_qa.init_knowledge_vector_store(filepath) + if temp is not None: + vs_path,loaded_files = temp + if len(loaded_files) != len(filepath): + reload_flag = eval(input("部分文件加载失败,若提示路径不存在,可重新加载,是否重新加载,输入True或False: ")) + if reload_flag: + vs_path = None + continue + + print(f"the loaded vs_path is 加载的vs_path为: {vs_path}") + else: + print("load file failed, re-input your local knowledge file path 请重新输入本地知识文件路径") + history = [] while True: query = input("Input your question 请输入问题:")