jack 1 月之前
父節點
當前提交
09876ecd29
共有 1 個文件被更改,包括 23 次插入2 次删除
  1. 23 2
      app/core/tools/file_search_tool.py

+ 23 - 2
app/core/tools/file_search_tool.py

@@ -41,8 +41,29 @@ class FileSearchTool(BaseTool):
         置当前 Retrieval 涉及文件信息
         """
         self.loop = asyncio.get_event_loop()  # 获取当前事件循环
-        ## 获取文件信息
-        files = FileService.get_file_list_by_ids(session=session, file_ids=run.file_ids)
+        document_id = []
+        file_key = []
+        filesinfo = []
+        # 后语要从知识库里选择文件,所以在openassistant的数据库里可能不存在
+        for key in run.file_ids:
+            if len(key) == 36:
+                document_id.append(key)
+            else:
+                file_key.append(key)
+
+        # 这种情况是uuid.ex 这种格式的在最早的时候存在的,后续要去掉
+        if len(file_key) > 0:
+            ## 获取文件信息
+            files = FileService.get_file_list_by_ids(session=session, file_ids=file_key)
+        # r2r接口不提供多条件,否则上面没必要存在
+        if len(document_id) > 0:
+            filesinfo += self.loop.run_until_complete(
+                FileService.list_in_files(ids=document_id, offset=0, limit=100)
+            )
+            for file in filesinfo:
+                self.__filenames.append(file.get("title"))
+                self.__keys.append(file.get("id"))
+
         # files = FileService.list_in_files(ids=run.file_ids, offset=0, limit=100)
         db_asst = AssistantService.get_assistant_sync(
             session=session, assistant_id=run.assistant_id