mirror of https://github.com/Mai-with-u/MaiBot.git
Update Memory_chest.py
parent
14a8890791
commit
f4b977fa20
|
|
@ -1,3 +1,4 @@
|
||||||
|
import asyncio
|
||||||
import json
|
import json
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
|
@ -295,10 +296,12 @@ class MemoryChest:
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
# 生成标题
|
# 生成标题
|
||||||
|
title = ""
|
||||||
title_prompt = f"""
|
title_prompt = f"""
|
||||||
请为以下内容生成一个描述全面的标题,要求描述内容的主要概念和事件:
|
请为以下内容生成一个描述全面的标题,要求描述内容的主要概念和事件:
|
||||||
{content}
|
{content}
|
||||||
|
|
||||||
|
标题不要分点,不要换行,不要输出其他内容
|
||||||
请只输出标题,不要输出其他内容:
|
请只输出标题,不要输出其他内容:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
@ -309,6 +312,9 @@ class MemoryChest:
|
||||||
|
|
||||||
title, (reasoning_content, model_name, tool_calls) = await self.LLMRequest_build.generate_response_async(title_prompt)
|
title, (reasoning_content, model_name, tool_calls) = await self.LLMRequest_build.generate_response_async(title_prompt)
|
||||||
|
|
||||||
|
|
||||||
|
await asyncio.sleep(0.5)
|
||||||
|
|
||||||
if title:
|
if title:
|
||||||
# 保存到数据库
|
# 保存到数据库
|
||||||
MemoryChestModel.create(
|
MemoryChestModel.create(
|
||||||
|
|
@ -480,7 +486,7 @@ class MemoryChest:
|
||||||
try:
|
try:
|
||||||
content = ""
|
content = ""
|
||||||
for memory in memory_list:
|
for memory in memory_list:
|
||||||
content += f"{memory.content}\n"
|
content += f"{memory}\n"
|
||||||
|
|
||||||
prompt = f"""
|
prompt = f"""
|
||||||
以下是多段记忆内容,请将它们合并成一段记忆:
|
以下是多段记忆内容,请将它们合并成一段记忆:
|
||||||
|
|
@ -498,9 +504,61 @@ class MemoryChest:
|
||||||
|
|
||||||
merged_memory, (reasoning_content, model_name, tool_calls) = await self.LLMRequest_build.generate_response_async(prompt)
|
merged_memory, (reasoning_content, model_name, tool_calls) = await self.LLMRequest_build.generate_response_async(prompt)
|
||||||
|
|
||||||
return merged_memory
|
# 生成合并后的标题
|
||||||
|
merged_title = await self._generate_title_for_merged_memory(merged_memory)
|
||||||
|
|
||||||
|
# 保存合并后的记忆到数据库
|
||||||
|
MemoryChestModel.create(
|
||||||
|
title=merged_title,
|
||||||
|
content=merged_memory
|
||||||
|
)
|
||||||
|
|
||||||
|
logger.info(f"合并记忆已保存: {merged_title}")
|
||||||
|
|
||||||
|
return merged_title, merged_memory
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"合并记忆时出错: {e}")
|
logger.error(f"合并记忆时出错: {e}")
|
||||||
|
return "", ""
|
||||||
|
|
||||||
|
async def _generate_title_for_merged_memory(self, merged_content: str) -> str:
|
||||||
|
"""
|
||||||
|
为合并后的记忆生成标题
|
||||||
|
|
||||||
|
Args:
|
||||||
|
merged_content: 合并后的记忆内容
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
str: 生成的标题
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
prompt = f"""
|
||||||
|
请为以下内容生成一个描述全面的标题,要求描述内容的主要概念和事件:
|
||||||
|
{merged_content}
|
||||||
|
|
||||||
|
标题不要分点,不要换行,不要输出其他内容
|
||||||
|
请只输出标题,不要输出其他内容:
|
||||||
|
"""
|
||||||
|
|
||||||
|
if global_config.debug.show_prompt:
|
||||||
|
logger.info(f"生成合并记忆标题 prompt: {prompt}")
|
||||||
|
else:
|
||||||
|
logger.debug(f"生成合并记忆标题 prompt: {prompt}")
|
||||||
|
|
||||||
|
title_response, (reasoning_content, model_name, tool_calls) = await self.LLMRequest.generate_response_async(prompt)
|
||||||
|
|
||||||
|
# 清理标题,移除可能的引号或多余字符
|
||||||
|
title = title_response.strip().strip('"').strip("'").strip()
|
||||||
|
|
||||||
|
if title:
|
||||||
|
logger.info(f"生成合并记忆标题: {title}")
|
||||||
|
return title
|
||||||
|
else:
|
||||||
|
logger.warning("生成合并记忆标题失败,使用默认标题")
|
||||||
|
return f"合并记忆_{int(time.time())}"
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"生成合并记忆标题时出错: {e}")
|
||||||
|
return f"合并记忆_{int(time.time())}"
|
||||||
|
|
||||||
|
|
||||||
global_memory_chest = MemoryChest()
|
global_memory_chest = MemoryChest()
|
||||||
Loading…
Reference in New Issue