From fe7a675fb6a665fd673675c358a2df3080759569 Mon Sep 17 00:00:00 2001 From: liunux4odoo Date: Mon, 16 Oct 2023 20:56:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E5=88=87=E6=8D=A2em?= =?UTF-8?q?bed=5Fmodel=E6=97=B6=EF=BC=8CFAISS=E5=90=91=E9=87=8F=E5=BA=93?= =?UTF-8?q?=E6=9C=AA=E6=AD=A3=E7=A1=AE=E9=87=8A=E6=94=BE=EF=BC=8C=E5=AF=BC?= =?UTF-8?q?=E8=87=B4`d=20=3D=3D=20self.d=20assert=20error`=EF=BC=9B=20ApiR?= =?UTF-8?q?equest=E4=B8=ADchat=E6=8E=A5=E5=8F=A3=E5=A2=9E=E5=8A=A0max=5Fto?= =?UTF-8?q?kens=E5=8F=82=E6=95=B0=EF=BC=9BFileDocModel=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E9=94=99=E8=AF=AF(#1691)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/db/models/knowledge_file_model.py | 2 +- server/knowledge_base/kb_doc_api.py | 3 ++- .../kb_service/faiss_kb_service.py | 2 +- server/knowledge_base/migrate.py | 1 + webui_pages/utils.py | 26 ++++++++++++------- 5 files changed, 22 insertions(+), 12 deletions(-) diff --git a/server/db/models/knowledge_file_model.py b/server/db/models/knowledge_file_model.py index c5784d1a4..2937dfa7a 100644 --- a/server/db/models/knowledge_file_model.py +++ b/server/db/models/knowledge_file_model.py @@ -37,4 +37,4 @@ class FileDocModel(Base): meta_data = Column(JSON, default={}) def __repr__(self): - return f"" + return f"" diff --git a/server/knowledge_base/kb_doc_api.py b/server/knowledge_base/kb_doc_api.py index 75d933052..e158ad06a 100644 --- a/server/knowledge_base/kb_doc_api.py +++ b/server/knowledge_base/kb_doc_api.py @@ -337,8 +337,9 @@ def output(): if not kb.exists() and not allow_empty_kb: yield {"code": 404, "msg": f"未找到知识库 ‘{knowledge_base_name}’"} else: + if kb.exists(): + kb.clear_vs() kb.create_kb() - kb.clear_vs() files = list_files_from_folder(knowledge_base_name) kb_files = [(file, knowledge_base_name) for file in files] i = 0 diff --git a/server/knowledge_base/kb_service/faiss_kb_service.py b/server/knowledge_base/kb_service/faiss_kb_service.py index e37c93ebb..a72fcf712 100644 --- a/server/knowledge_base/kb_service/faiss_kb_service.py +++ b/server/knowledge_base/kb_service/faiss_kb_service.py @@ -89,7 +89,7 @@ def do_delete_doc(self, def do_clear_vs(self): with kb_faiss_pool.atomic: - kb_faiss_pool.pop(self.kb_name) + kb_faiss_pool.pop((self.kb_name, self.vector_name)) shutil.rmtree(self.vs_path) os.makedirs(self.vs_path) diff --git a/server/knowledge_base/migrate.py b/server/knowledge_base/migrate.py index 2ca144af5..499e915d5 100644 --- a/server/knowledge_base/migrate.py +++ b/server/knowledge_base/migrate.py @@ -72,6 +72,7 @@ def files2vs(kb_name: str, kb_files: List[KnowledgeFile]): # 清除向量库,从本地文件重建 if mode == "recreate_vs": kb.clear_vs() + kb.create_kb() kb_files = file_to_kbfile(kb_name, list_files_from_folder(kb_name)) files2vs(kb_name, kb_files) kb.save_vector_store() diff --git a/webui_pages/utils.py b/webui_pages/utils.py index 4a26f200c..6ba46611d 100644 --- a/webui_pages/utils.py +++ b/webui_pages/utils.py @@ -275,7 +275,7 @@ def chat_fastchat( stream: bool = True, model: str = LLM_MODEL, temperature: float = TEMPERATURE, - max_tokens: int = 1024, # todo:根据message内容自动计算max_tokens + max_tokens: int = 1024, # TODO:根据message内容自动计算max_tokens no_remote_api: bool = None, **kwargs: Any, ): @@ -316,6 +316,7 @@ def chat_chat( stream: bool = True, model: str = LLM_MODEL, temperature: float = TEMPERATURE, + max_tokens: int = 1024, prompt_name: str = "llm_chat", no_remote_api: bool = None, ): @@ -331,6 +332,7 @@ def chat_chat( "stream": stream, "model_name": model, "temperature": temperature, + "max_tokens": max_tokens, "prompt_name": prompt_name, } @@ -346,13 +348,14 @@ def chat_chat( return self._httpx_stream2generator(response) def agent_chat( - self, - query: str, - history: List[Dict] = [], - stream: bool = True, - model: str = LLM_MODEL, - temperature: float = TEMPERATURE, - no_remote_api: bool = None, + self, + query: str, + history: List[Dict] = [], + stream: bool = True, + model: str = LLM_MODEL, + temperature: float = TEMPERATURE, + max_tokens: int = 1024, + no_remote_api: bool = None, ): ''' 对应api.py/chat/agent_chat 接口 @@ -366,6 +369,7 @@ def agent_chat( "stream": stream, "model_name": model, "temperature": temperature, + "max_tokens": max_tokens, } print(f"received input message:") @@ -389,6 +393,7 @@ def knowledge_base_chat( stream: bool = True, model: str = LLM_MODEL, temperature: float = TEMPERATURE, + max_tokens: int = 1024, prompt_name: str = "knowledge_base_chat", no_remote_api: bool = None, ): @@ -407,6 +412,7 @@ def knowledge_base_chat( "stream": stream, "model_name": model, "temperature": temperature, + "max_tokens": max_tokens, "local_doc_url": no_remote_api, "prompt_name": prompt_name, } @@ -435,6 +441,7 @@ def search_engine_chat( stream: bool = True, model: str = LLM_MODEL, temperature: float = TEMPERATURE, + max_tokens: int = 1024, prompt_name: str = "knowledge_base_chat", no_remote_api: bool = None, ): @@ -452,6 +459,7 @@ def search_engine_chat( "stream": stream, "model_name": model, "temperature": temperature, + "max_tokens": max_tokens, "prompt_name": prompt_name, } @@ -475,7 +483,7 @@ def search_engine_chat( def _check_httpx_json_response( self, response: httpx.Response, - errorMsg: str = f"无法连接API服务器,请确认已执行python server\\api.py", + errorMsg: str = f"无法连接API服务器,请确认 ‘api.py’ 已正常启动。", ) -> Dict: ''' check whether httpx returns correct data with normal Response.