Wire normalize_facts into sync and async fact extraction paths
After parsing LLM JSON response, normalize facts before passing them to the embedding model. Fixes 'list'/'dict' object has no attribute 'replace' when smaller LLMs return malformed fact objects.
This commit is contained in:
+4
-1
@@ -28,6 +28,7 @@ from mem0.memory.telemetry import capture_event
|
|||||||
from mem0.memory.utils import (
|
from mem0.memory.utils import (
|
||||||
extract_json,
|
extract_json,
|
||||||
get_fact_retrieval_messages,
|
get_fact_retrieval_messages,
|
||||||
|
normalize_facts,
|
||||||
parse_messages,
|
parse_messages,
|
||||||
parse_vision_messages,
|
parse_vision_messages,
|
||||||
process_telemetry_filters,
|
process_telemetry_filters,
|
||||||
@@ -37,8 +38,8 @@ from mem0.utils.factory import (
|
|||||||
EmbedderFactory,
|
EmbedderFactory,
|
||||||
GraphStoreFactory,
|
GraphStoreFactory,
|
||||||
LlmFactory,
|
LlmFactory,
|
||||||
VectorStoreFactory,
|
|
||||||
RerankerFactory,
|
RerankerFactory,
|
||||||
|
VectorStoreFactory,
|
||||||
)
|
)
|
||||||
|
|
||||||
# Suppress SWIG deprecation warnings globally
|
# Suppress SWIG deprecation warnings globally
|
||||||
@@ -451,6 +452,7 @@ class Memory(MemoryBase):
|
|||||||
# Try extracting JSON from response using built-in function
|
# Try extracting JSON from response using built-in function
|
||||||
extracted_json = extract_json(response)
|
extracted_json = extract_json(response)
|
||||||
new_retrieved_facts = json.loads(extracted_json)["facts"]
|
new_retrieved_facts = json.loads(extracted_json)["facts"]
|
||||||
|
new_retrieved_facts = normalize_facts(new_retrieved_facts)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Error in new_retrieved_facts: {e}")
|
logger.error(f"Error in new_retrieved_facts: {e}")
|
||||||
new_retrieved_facts = []
|
new_retrieved_facts = []
|
||||||
@@ -1477,6 +1479,7 @@ class AsyncMemory(MemoryBase):
|
|||||||
# Try extracting JSON from response using built-in function
|
# Try extracting JSON from response using built-in function
|
||||||
extracted_json = extract_json(response)
|
extracted_json = extract_json(response)
|
||||||
new_retrieved_facts = json.loads(extracted_json)["facts"]
|
new_retrieved_facts = json.loads(extracted_json)["facts"]
|
||||||
|
new_retrieved_facts = normalize_facts(new_retrieved_facts)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Error in new_retrieved_facts: {e}")
|
logger.error(f"Error in new_retrieved_facts: {e}")
|
||||||
new_retrieved_facts = []
|
new_retrieved_facts = []
|
||||||
|
|||||||
Reference in New Issue
Block a user