Ver código fonte

工具知识不分段,query写入title

xueyiming 6 horas atrás
pai
commit
86fbefe920

+ 15 - 1
applications/async_task/chunk_task.py

@@ -1,4 +1,5 @@
 import asyncio
+import json
 from typing import List
 
 from applications.api import get_basic_embedding
@@ -36,6 +37,15 @@ class ChunkEmbeddingTask(TopicAwarePackerV2):
         re_chunk = data.get("re_chunk", False)
         dont_chunk = data.get("dont_chunk", False)
         ext = data.get("ext", None)
+        if title is None:
+            if ext and isinstance(ext, str):
+                try:
+                    ext_dict = json.loads(ext)
+                    title = ext_dict.get("query", None)
+                except json.JSONDecodeError:
+                    title = None
+            else:
+                title = None
         if re_chunk:
             await self.content_manager.update_content_info(
                 doc_id=doc_id,
@@ -215,9 +225,13 @@ class ChunkEmbeddingTask(TopicAwarePackerV2):
     async def deal(self, data):
         text = data.get("text", "")
         dont_chunk = data.get("dont_chunk", False)
+        dataset_id = data.get("dataset_id", 0)
+        if dataset_id == 12:
+            data["dont_chunk"] = True
         # 如果无需分块,判断text 长度
         if dont_chunk and num_tokens(text) >= self.max_tokens:
-            return {"error": "文档超多模型支持的最大吞吐量"}
+            data["dont_chunk"] = False
+            # return {"error": "文档超多模型支持的最大吞吐量"}
 
         self.init_processer()
 

+ 8 - 6
applications/utils/chat/rag_chat_agent.py

@@ -107,7 +107,7 @@ class RAGChatAgent:
         return response
 
     @staticmethod
-    def select_prompt(chat_res, search_res):
+    def make_decision_prompt(chat_res, search_res):
         # 创建一个 prompt 请求给大模型
         prompt = f"""
         这是一个问题的回答任务,以下是两个来源的结果:
@@ -123,21 +123,23 @@ class RAGChatAgent:
         答案: {search_res["answer"]}
         来源: {search_res["source"]}
         状态: {"可以回答" if search_res["status"] == 1 else "无法回答"}
-
-        基于这两个结果,请你综合判断并生成一个更好的答案,如果可能的话。你可以选择结合 `chat_res` 和 `search_res`,或者选择其中更合适的一个进行回答。如果没有足够的信息可以回答,请用你自己已有的知识回答"。
         
-         请返回以下格式的 JSON 结果:
+        基于这两个结果,请你综合判断并生成一个更好的答案,如果可能的话。你可以选择结合 `chat_res` 和 `search_res`,或者选择其中更合适的一个进行回答。如果没有足够的信息可以回答,请用你自己已有的知识回答"。
+        基于回答的结果,总结回答的答案中使用的工具,名称以及用途,如果没有涉及到工具的使用,则不需要总结
+
+        请返回以下格式的 JSON 结果:
         {{
             "result": "<最终的答案,输出markdown格式>",
             "relevance_score": <0到1之间的小数,表示总结与问题的相关度>,
-            "status": <1代表回答的好,0代表回答的不好>
+            "status": <1代表回答的好,0代表回答的不好>,
+            "used_tools": ["工具名1: 用途描述", "工具名2: 用途描述"]
         }}
         """
 
         return prompt
 
     async def make_decision(self, chat_res, search_res):
-        prompt = self.select_prompt(chat_res, search_res)
+        prompt = self.make_decision_prompt(chat_res, search_res)
         response = await fetch_deepseek_completion(
             model="DeepSeek-R1", prompt=prompt, output_type="json"
         )

+ 2 - 3
applications/utils/mysql/content_chunks.py

@@ -197,6 +197,5 @@ class ContentChunks(BaseMySQLClient):
             WHERE dataset_id = %s AND status = 1 AND es_status = 2 AND graph_status = 0
             ORDER BY id DESC LIMIT 100;
         """
-        result = await self.pool.async_fetch(query=query, params=(dataset_id, ))
-        return [i['doc_id'] for i in result]
-
+        result = await self.pool.async_fetch(query=query, params=(dataset_id,))
+        return [i["doc_id"] for i in result]

+ 1 - 1
applications/utils/mysql/mapper.py

@@ -70,7 +70,7 @@ class ChatResult(BaseMySQLClient):
                 ai_status,
                 is_web,
                 final_result,
-                study_task_id
+                study_task_id,
             ),
         )
 

+ 1 - 1
routes/__init__.py

@@ -1,3 +1,3 @@
 from .blueprint import server_bp
 
-__all__ = ["server_bp"]
+__all__ = ["server_bp"]

+ 2 - 0
routes/blueprint.py

@@ -424,6 +424,7 @@ async def chat():
         "chat_res": decision["result"],
         "rag_summary": chat_result["summary"],
         "llm_summary": llm_search["answer"],
+        # "used_tools": decision["used_tools"],
     }
     await chat_result_mapper.insert_chat_result(
         query_text,
@@ -572,6 +573,7 @@ async def process_question(question, query_text, rag_chat_agent):
             "result": decision["result"],
             "status": decision["status"],
             "relevance_score": decision["relevance_score"],
+            # "used_tools": decision["used_tools"],
         }
 
         # 插入数据库