From a6ac4a669897bdb84372cb0929a9818dc99c1e2a Mon Sep 17 00:00:00 2001 From: Dev Khant Date: Sat, 2 Nov 2024 12:40:55 +0530 Subject: [PATCH] Replace UUID with indexes to reduce hallucinations (#2004) --- mem0/configs/prompts.py | 36 ++++++++++++++++++------------------ mem0/memory/main.py | 15 +++++++++++---- 2 files changed, 29 insertions(+), 22 deletions(-) diff --git a/mem0/configs/prompts.py b/mem0/configs/prompts.py index 99052d7d..0abf3edb 100644 --- a/mem0/configs/prompts.py +++ b/mem0/configs/prompts.py @@ -79,7 +79,7 @@ def get_update_memory_messages(retrieved_old_memory_dict, response_content): - Old Memory: [ {{ - "id" : "7f165f7e-b411-4afe-b7e5-35789b72c4a5", + "id" : "0", "text" : "User is a software engineer" }} ] @@ -88,12 +88,12 @@ def get_update_memory_messages(retrieved_old_memory_dict, response_content): {{ "memory" : [ {{ - "id" : "7f165f7e-b411-4afe-b7e5-35789b72c4a5", + "id" : "0", "text" : "User is a software engineer", "event" : "NONE" }}, {{ - "id" : "5b265f7e-b412-4bce-c6e3-12349b72c4a5", + "id" : "1", "text" : "Name is John", "event" : "ADD" }} @@ -112,15 +112,15 @@ def get_update_memory_messages(retrieved_old_memory_dict, response_content): - Old Memory: [ {{ - "id" : "f38b689d-6b24-45b7-bced-17fbb4d8bac7", + "id" : "0", "text" : "I really like cheese pizza" }}, {{ - "id" : "0a14d8f0-e364-4f5c-b305-10da1f0d0878", + "id" : "1", "text" : "User is a software engineer" }}, {{ - "id" : "b4229775-d860-4ccb-983f-0f628ca112f5", + "id" : "2", "text" : "User likes to play cricket" }} ] @@ -129,20 +129,20 @@ def get_update_memory_messages(retrieved_old_memory_dict, response_content): {{ "memory" : [ {{ - "id" : "f38b689d-6b24-45b7-bced-17fbb4d8bac7", + "id" : "0", "text" : "Loves cheese and chicken pizza", "event" : "UPDATE", "old_memory" : "I really like cheese pizza" }}, {{ - "id" : "0a14d8f0-e364-4f5c-b305-10da1f0d0878", + "id" : "1", "text" : "User is a software engineer", "event" : "NONE" }}, {{ - "id" : "b4229775-d860-4ccb-983f-0f628ca112f5", + "id" : "2", "text" : "Loves to play cricket with friends", - "event" : "UPDATE" + "event" : "UPDATE", "old_memory" : "User likes to play cricket" }} ] @@ -155,11 +155,11 @@ def get_update_memory_messages(retrieved_old_memory_dict, response_content): - Old Memory: [ {{ - "id" : "df1aca24-76cf-4b92-9f58-d03857efcb64", + "id" : "0", "text" : "Name is John" }}, {{ - "id" : "b4229775-d860-4ccb-983f-0f628ca112f5", + "id" : "1", "text" : "Loves cheese pizza" }} ] @@ -168,12 +168,12 @@ def get_update_memory_messages(retrieved_old_memory_dict, response_content): {{ "memory" : [ {{ - "id" : "df1aca24-76cf-4b92-9f58-d03857efcb64", + "id" : "0", "text" : "Name is John", "event" : "NONE" }}, {{ - "id" : "b4229775-d860-4ccb-983f-0f628ca112f5", + "id" : "1", "text" : "Loves cheese pizza", "event" : "DELETE" }} @@ -185,11 +185,11 @@ def get_update_memory_messages(retrieved_old_memory_dict, response_content): - Old Memory: [ {{ - "id" : "06d8df63-7bd2-4fad-9acb-60871bcecee0", + "id" : "0", "text" : "Name is John" }}, {{ - "id" : "c190ab1a-a2f1-4f6f-914a-495e9a16b76e", + "id" : "1", "text" : "Loves cheese pizza" }} ] @@ -198,12 +198,12 @@ def get_update_memory_messages(retrieved_old_memory_dict, response_content): {{ "memory" : [ {{ - "id" : "06d8df63-7bd2-4fad-9acb-60871bcecee0", + "id" : "0", "text" : "Name is John", "event" : "NONE" }}, {{ - "id" : "c190ab1a-a2f1-4f6f-914a-495e9a16b76e", + "id" : "1", "text" : "Loves cheese pizza", "event" : "NONE" }} diff --git a/mem0/memory/main.py b/mem0/memory/main.py index 68136611..f0f9cbae 100644 --- a/mem0/memory/main.py +++ b/mem0/memory/main.py @@ -172,7 +172,14 @@ class Memory(MemoryBase): logging.info(f"Total existing memories: {len(retrieved_old_memory)}") + # mapping UUIDs with integers for handling UUID hallucinations + temp_uuid_mapping = {} + for idx, item in enumerate(retrieved_old_memory): + temp_uuid_mapping[str(idx)] = item["id"] + retrieved_old_memory[idx]["id"] = str(idx) + function_calling_prompt = get_update_memory_messages(retrieved_old_memory, new_retrieved_facts) + new_memories_with_actions = self.llm.generate_response( messages=[{"role": "user", "content": function_calling_prompt}], response_format={"type": "json_object"}, @@ -197,24 +204,24 @@ class Memory(MemoryBase): ) elif resp["event"] == "UPDATE": self._update_memory( - memory_id=resp["id"], + memory_id=temp_uuid_mapping[resp["id"]], data=resp["text"], existing_embeddings=new_message_embeddings, metadata=metadata, ) returned_memories.append( { - "id": resp["id"], + "id": temp_uuid_mapping[resp["id"]], "memory": resp["text"], "event": resp["event"], "previous_memory": resp["old_memory"], } ) elif resp["event"] == "DELETE": - self._delete_memory(memory_id=resp["id"]) + self._delete_memory(memory_id=temp_uuid_mapping[resp["id"]]) returned_memories.append( { - "id": resp["id"], + "id": temp_uuid_mapping[resp["id"]], "memory": resp["text"], "event": resp["event"], }