From fd052cd43b376039d853dfd209a2e34f5366fcb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Fri, 25 Apr 2025 18:32:11 +0800 Subject: [PATCH] =?UTF-8?q?feat(KnowledgeFetcher):=20=E6=B7=BB=E5=8A=A0LPM?= =?UTF-8?q?M=E7=9F=A5=E8=AF=86=E5=BA=93=E6=9F=A5=E8=AF=A2=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 为KnowledgeFetcher类新增_lpmm_get_knowledge方法,用于从LPMM知识库中获取相关知识。同时,在fetch方法中整合了LPMM知识库查询结果,以提供更全面的知识参考。 --- src/plugins/PFC/pfc_KnowledgeFetcher.py | 29 ++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/src/plugins/PFC/pfc_KnowledgeFetcher.py b/src/plugins/PFC/pfc_KnowledgeFetcher.py index 1a0d495c3..63f71aad8 100644 --- a/src/plugins/PFC/pfc_KnowledgeFetcher.py +++ b/src/plugins/PFC/pfc_KnowledgeFetcher.py @@ -4,6 +4,7 @@ from src.plugins.memory_system.Hippocampus import HippocampusManager from ..models.utils_model import LLMRequest from ...config.config import global_config from ..chat.message import Message +from ..knowledge.knowledge_lib import qa_manager logger = get_module_logger("knowledge_fetcher") @@ -18,6 +19,25 @@ class KnowledgeFetcher: max_tokens=1000, request_type="knowledge_fetch", ) + + def _lpmm_get_knowledge(self, query: str) -> str: + """获取相关知识 + + Args: + query: 查询内容 + + Returns: + str: 构造好的,带相关度的知识 + """ + + logger.debug("正在从LPMM知识库中获取知识") + try: + knowledge_info = qa_manager.get_knowledge(query) + logger.debug(f"LPMM知识库查询结果: {knowledge_info:150}") + return knowledge_info + except Exception as e: + logger.error(f"LPMM知识库搜索工具执行失败: {str(e)}") + return "未找到匹配的知识" async def fetch(self, query: str, chat_history: List[Message]) -> Tuple[str, str]: """获取相关知识 @@ -43,13 +63,16 @@ class KnowledgeFetcher: max_depth=3, fast_retrieval=False, ) - + knowledge = "" if related_memory: - knowledge = "" + sources = [] for memory in related_memory: knowledge += memory[1] + "\n" sources.append(f"记忆片段{memory[0]}") - return knowledge.strip(), ",".join(sources) + knowledge = knowledge.strip(), ",".join(sources) + + knowledge +="现在有以下**知识**可供参考:\n 请记住这些**知识**,并根据**知识**回答问题。\n" + knowledge += self._lpmm_get_knowledge(query) return "未找到相关知识", "无记忆匹配"