From 83911d9ad1500b48064341fcab16fb9d5b15e0a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=84=E5=87=A4=E7=A7=91=E6=8A=80?= Date: Tue, 4 Mar 2025 10:28:38 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=B0=E5=BF=86=E5=A2=9E=E5=8A=A0=E6=97=B6?= =?UTF-8?q?=E9=97=B4=EF=BC=8C=E4=BB=A5=E4=BE=BF=E5=A4=A7=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E5=88=A4=E6=96=AD=E5=85=88=E5=90=8E=E5=85=B3=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/providers/memory/mem0ai/mem0ai.py | 27 +++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/core/providers/memory/mem0ai/mem0ai.py b/core/providers/memory/mem0ai/mem0ai.py index de4eb29e..e319b542 100644 --- a/core/providers/memory/mem0ai/mem0ai.py +++ b/core/providers/memory/mem0ai/mem0ai.py @@ -7,6 +7,7 @@ class MemoryProvider(MemoryProviderBase): def __init__(self, config): super().__init__(config) self.api_key = config.get("api_key", "") + self.api_version = config.get("api_version", "v1.1") if len(self.api_key) == 0 or "你" in self.api_key: logger.bind(tag=TAG).error("你还没配置Mem0ai的密钥,请在配置文件中配置密钥,否则无法提供记忆服务") self.use_mem0 = False @@ -27,7 +28,7 @@ class MemoryProvider(MemoryProviderBase): {"role": message.role, "content": message.content} for message in msgs if message.role != "system" ] - result = self.client.add(messages, user_id=self.role_id, output_format="v1.1") + result = self.client.add(messages, user_id=self.role_id, output_format=self.api_version) logger.bind(tag=TAG).debug(f"Save memory result: {result}") except Exception as e: logger.bind(tag=TAG).error(f"保存记忆失败: {str(e)}") @@ -39,9 +40,29 @@ class MemoryProvider(MemoryProviderBase): try: results = self.client.search( query, - user_id= self.role_id, + user_id=self.role_id, + output_format=self.api_version ) - memories_str = "\n".join(f"- {entry['memory']}" for entry in results) + if not results or 'results' not in results: + return "" + + # Format each memory entry with its update time up to minutes + memories = [] + for entry in results['results']: + # Split timestamp and get date + time up to minutes + timestamp = entry.get('updated_at', '').split('.')[0] # Remove milliseconds + if timestamp: + try: + # Parse and reformat the timestamp + dt = timestamp.replace('T', ' ').split(':') # Split time components + formatted_time = f"{dt[0]}:{dt[1]}:{dt[2]}" # Keep only HH:MM:SS + except: + formatted_time = timestamp + memory = entry.get('memory', '') + if timestamp and memory: + memories.append(f"[{formatted_time}] {memory}") + + memories_str = "\n".join(f"- {memory}" for memory in memories) logger.bind(tag=TAG).debug(f"Query results: {memories_str}") return memories_str except Exception as e: