Merge pull request #1094 from CNMrSunshine/dev
修复配置文件中禁用LPMM无效的问题 一个工作记忆问题 和麦麦重复回复的问题
This commit is contained in:
@@ -71,6 +71,7 @@ class WorkingMemoryProcessor(BaseProcessor):
|
|||||||
"""
|
"""
|
||||||
working_memory = None
|
working_memory = None
|
||||||
chat_info = ""
|
chat_info = ""
|
||||||
|
chat_obs = None
|
||||||
try:
|
try:
|
||||||
for observation in observations:
|
for observation in observations:
|
||||||
if isinstance(observation, WorkingMemoryObservation):
|
if isinstance(observation, WorkingMemoryObservation):
|
||||||
@@ -79,10 +80,15 @@ class WorkingMemoryProcessor(BaseProcessor):
|
|||||||
chat_info = observation.get_observe_info()
|
chat_info = observation.get_observe_info()
|
||||||
chat_obs = observation
|
chat_obs = observation
|
||||||
# 检查是否有待压缩内容
|
# 检查是否有待压缩内容
|
||||||
if chat_obs.compressor_prompt:
|
if chat_obs and chat_obs.compressor_prompt:
|
||||||
logger.debug(f"{self.log_prefix} 压缩聊天记忆")
|
logger.debug(f"{self.log_prefix} 压缩聊天记忆")
|
||||||
await self.compress_chat_memory(working_memory, chat_obs)
|
await self.compress_chat_memory(working_memory, chat_obs)
|
||||||
|
|
||||||
|
# 检查working_memory是否为None
|
||||||
|
if working_memory is None:
|
||||||
|
logger.debug(f"{self.log_prefix} 没有找到工作记忆观察,跳过处理")
|
||||||
|
return []
|
||||||
|
|
||||||
all_memory = working_memory.get_all_memories()
|
all_memory = working_memory.get_all_memories()
|
||||||
if not all_memory:
|
if not all_memory:
|
||||||
logger.debug(f"{self.log_prefix} 目前没有工作记忆,跳过提取")
|
logger.debug(f"{self.log_prefix} 目前没有工作记忆,跳过提取")
|
||||||
@@ -183,6 +189,11 @@ class WorkingMemoryProcessor(BaseProcessor):
|
|||||||
working_memory: 工作记忆对象
|
working_memory: 工作记忆对象
|
||||||
obs: 聊天观察对象
|
obs: 聊天观察对象
|
||||||
"""
|
"""
|
||||||
|
# 检查working_memory是否为None
|
||||||
|
if working_memory is None:
|
||||||
|
logger.warning(f"{self.log_prefix} 工作记忆对象为None,无法压缩聊天记忆")
|
||||||
|
return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
summary_result, _ = await self.llm_model.generate_response_async(obs.compressor_prompt)
|
summary_result, _ = await self.llm_model.generate_response_async(obs.compressor_prompt)
|
||||||
if not summary_result:
|
if not summary_result:
|
||||||
@@ -235,6 +246,11 @@ class WorkingMemoryProcessor(BaseProcessor):
|
|||||||
memory_id1: 第一个记忆ID
|
memory_id1: 第一个记忆ID
|
||||||
memory_id2: 第二个记忆ID
|
memory_id2: 第二个记忆ID
|
||||||
"""
|
"""
|
||||||
|
# 检查working_memory是否为None
|
||||||
|
if working_memory is None:
|
||||||
|
logger.warning(f"{self.log_prefix} 工作记忆对象为None,无法合并记忆")
|
||||||
|
return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
merged_memory = await working_memory.merge_memory(memory_id1, memory_id2)
|
merged_memory = await working_memory.merge_memory(memory_id1, memory_id2)
|
||||||
logger.debug(f"{self.log_prefix} 合并后的记忆梗概: {merged_memory.brief}")
|
logger.debug(f"{self.log_prefix} 合并后的记忆梗概: {merged_memory.brief}")
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ def init_prompt():
|
|||||||
{chat_context_description},以下是具体的聊天内容:
|
{chat_context_description},以下是具体的聊天内容:
|
||||||
{chat_content_block}
|
{chat_content_block}
|
||||||
{moderation_prompt}
|
{moderation_prompt}
|
||||||
|
|
||||||
现在请你根据聊天内容选择合适的action:
|
现在请你根据聊天内容选择合适的action:
|
||||||
|
|
||||||
{action_options_text}
|
{action_options_text}
|
||||||
|
|||||||
@@ -5,11 +5,14 @@ from src.chat.knowledge.mem_active_manager import MemoryActiveManager
|
|||||||
from src.chat.knowledge.qa_manager import QAManager
|
from src.chat.knowledge.qa_manager import QAManager
|
||||||
from src.chat.knowledge.kg_manager import KGManager
|
from src.chat.knowledge.kg_manager import KGManager
|
||||||
from src.chat.knowledge.global_logger import logger
|
from src.chat.knowledge.global_logger import logger
|
||||||
|
from src.config.config import global_config as bot_global_config
|
||||||
# try:
|
# try:
|
||||||
# import quick_algo
|
# import quick_algo
|
||||||
# except ImportError:
|
# except ImportError:
|
||||||
# print("quick_algo not found, please install it first")
|
# print("quick_algo not found, please install it first")
|
||||||
|
|
||||||
|
# 检查LPMM知识库是否启用
|
||||||
|
if bot_global_config.lpmm_knowledge.enable:
|
||||||
logger.info("正在初始化Mai-LPMM\n")
|
logger.info("正在初始化Mai-LPMM\n")
|
||||||
logger.info("创建LLM客户端")
|
logger.info("创建LLM客户端")
|
||||||
llm_client_list = dict()
|
llm_client_list = dict()
|
||||||
@@ -62,3 +65,8 @@ inspire_manager = MemoryActiveManager(
|
|||||||
embed_manager,
|
embed_manager,
|
||||||
llm_client_list[global_config["embedding"]["provider"]],
|
llm_client_list[global_config["embedding"]["provider"]],
|
||||||
)
|
)
|
||||||
|
else:
|
||||||
|
logger.info("LPMM知识库已禁用,跳过初始化")
|
||||||
|
# 创建空的占位符对象,避免导入错误
|
||||||
|
qa_manager = None
|
||||||
|
inspire_manager = None
|
||||||
|
|||||||
@@ -956,6 +956,11 @@ async def get_prompt_info(message: str, threshold: float):
|
|||||||
logger.debug(f"获取知识库内容,元消息:{message[:30]}...,消息长度: {len(message)}")
|
logger.debug(f"获取知识库内容,元消息:{message[:30]}...,消息长度: {len(message)}")
|
||||||
# 从LPMM知识库获取知识
|
# 从LPMM知识库获取知识
|
||||||
try:
|
try:
|
||||||
|
# 检查LPMM知识库是否启用
|
||||||
|
if qa_manager is None:
|
||||||
|
logger.debug("LPMM知识库已禁用,跳过知识获取")
|
||||||
|
return ""
|
||||||
|
|
||||||
found_knowledge_from_lpmm = qa_manager.get_knowledge(message)
|
found_knowledge_from_lpmm = qa_manager.get_knowledge(message)
|
||||||
|
|
||||||
end_time = time.time()
|
end_time = time.time()
|
||||||
|
|||||||
@@ -35,6 +35,11 @@ class KnowledgeFetcher:
|
|||||||
|
|
||||||
logger.debug(f"[私聊][{self.private_name}]正在从LPMM知识库中获取知识")
|
logger.debug(f"[私聊][{self.private_name}]正在从LPMM知识库中获取知识")
|
||||||
try:
|
try:
|
||||||
|
# 检查LPMM知识库是否启用
|
||||||
|
if qa_manager is None:
|
||||||
|
logger.debug(f"[私聊][{self.private_name}]LPMM知识库已禁用,跳过知识获取")
|
||||||
|
return "未找到匹配的知识"
|
||||||
|
|
||||||
knowledge_info = qa_manager.get_knowledge(query)
|
knowledge_info = qa_manager.get_knowledge(query)
|
||||||
logger.debug(f"[私聊][{self.private_name}]LPMM知识库查询结果: {knowledge_info:150}")
|
logger.debug(f"[私聊][{self.private_name}]LPMM知识库查询结果: {knowledge_info:150}")
|
||||||
return knowledge_info
|
return knowledge_info
|
||||||
|
|||||||
@@ -36,6 +36,11 @@ class SearchKnowledgeFromLPMMTool(BaseTool):
|
|||||||
query = function_args.get("query")
|
query = function_args.get("query")
|
||||||
# threshold = function_args.get("threshold", 0.4)
|
# threshold = function_args.get("threshold", 0.4)
|
||||||
|
|
||||||
|
# 检查LPMM知识库是否启用
|
||||||
|
if qa_manager is None:
|
||||||
|
logger.debug("LPMM知识库已禁用,跳过知识获取")
|
||||||
|
return {"type": "info", "id": query, "content": "LPMM知识库已禁用"}
|
||||||
|
|
||||||
# 调用知识库搜索
|
# 调用知识库搜索
|
||||||
|
|
||||||
knowledge_info = qa_manager.get_knowledge(query)
|
knowledge_info = qa_manager.get_knowledge(query)
|
||||||
|
|||||||
Reference in New Issue
Block a user