update: 记忆模块使用独立LLM openai增加超参

This commit is contained in:
Sakura-RanChen
2025-05-22 17:14:58 +08:00
parent d934e0a69d
commit 02cb9c35b3
6 changed files with 75 additions and 23 deletions
@@ -9,7 +9,13 @@ class MemoryProviderBase(ABC):
def __init__(self, config):
self.config = config
self.role_id = None
self.llm = None
def set_llm(self, llm):
self.llm = llm
# 获取模型名称和类型信息
model_name = getattr(llm, "model_name", str(llm.__class__.__name__))
# 记录更详细的日志
logger.bind(tag=TAG).info(f"记忆总结设置LLM: {model_name}")
@abstractmethod
async def save_memory(self, msgs):
@@ -107,7 +107,7 @@ TAG = __name__
class MemoryProvider(MemoryProviderBase):
def __init__(self, config, summary_memory):
super().__init__(config)
self.short_momery = ""
self.short_memory = ""
self.save_to_file = True
self.memory_path = get_project_dir() + "data/.memory.yaml"
self.load_memory(summary_memory)
@@ -122,7 +122,7 @@ class MemoryProvider(MemoryProviderBase):
def load_memory(self, summary_memory):
# api获取到总结记忆后直接返回
if summary_memory or not self.save_to_file:
self.short_momery = summary_memory
self.short_memory = summary_memory
return
all_memory = {}
@@ -130,18 +130,21 @@ class MemoryProvider(MemoryProviderBase):
with open(self.memory_path, "r", encoding="utf-8") as f:
all_memory = yaml.safe_load(f) or {}
if self.role_id in all_memory:
self.short_momery = all_memory[self.role_id]
self.short_memory = all_memory[self.role_id]
def save_memory_to_file(self):
all_memory = {}
if os.path.exists(self.memory_path):
with open(self.memory_path, "r", encoding="utf-8") as f:
all_memory = yaml.safe_load(f) or {}
all_memory[self.role_id] = self.short_momery
all_memory[self.role_id] = self.short_memory
with open(self.memory_path, "w", encoding="utf-8") as f:
yaml.dump(all_memory, f, allow_unicode=True)
async def save_memory(self, msgs):
# 打印使用的模型信息
model_info = getattr(self.llm, "model_name", str(self.llm.__class__.__name__))
logger.bind(tag=TAG).debug(f"使用记忆保存模型: {model_info}")
if self.llm is None:
logger.bind(tag=TAG).error("LLM is not set for memory provider")
return None
@@ -155,9 +158,9 @@ class MemoryProvider(MemoryProviderBase):
msgStr += f"User: {msg.content}\n"
elif msg.role == "assistant":
msgStr += f"Assistant: {msg.content}\n"
if self.short_momery and len(self.short_momery) > 0:
if self.short_memory and len(self.short_memory) > 0:
msgStr += "历史记忆:\n"
msgStr += self.short_momery
msgStr += self.short_memory
# 当前时间
time_str = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
@@ -168,7 +171,7 @@ class MemoryProvider(MemoryProviderBase):
json_str = extract_json_data(result)
try:
json.loads(json_str) # 检查json格式是否正确
self.short_momery = json_str
self.short_memory = json_str
self.save_memory_to_file()
except Exception as e:
print("Error:", e)
@@ -179,7 +182,7 @@ class MemoryProvider(MemoryProviderBase):
save_mem_local_short(self.role_id, result)
logger.bind(tag=TAG).info(f"Save memory successful - Role: {self.role_id}")
return self.short_momery
return self.short_memory
async def query_memory(self, query: str) -> str:
return self.short_momery
return self.short_memory