Skip to content

Commit ebc4cde

Browse files
authored
Feat: change reference position and reorganize code (#240)
feat: change reference position
1 parent 084b14e commit ebc4cde

File tree

2 files changed

+25
-12
lines changed

2 files changed

+25
-12
lines changed

src/memos/mem_os/product.py

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
sort_children_by_memory_type,
2525
)
2626
from memos.mem_os.utils.reference_utils import (
27+
prepare_reference_data,
2728
process_streaming_references_complete,
2829
)
2930
from memos.mem_scheduler.schemas.general_schemas import (
@@ -726,6 +727,7 @@ def chat_with_references(
726727
mode="fine",
727728
internet_search=internet_search,
728729
)["text_mem"]
730+
729731
yield f"data: {json.dumps({'type': 'status', 'data': '1'})}\n\n"
730732
search_time_end = time.time()
731733
logger.info(
@@ -737,6 +739,9 @@ def chat_with_references(
737739
if memories_result:
738740
memories_list = memories_result[0]["memories"]
739741
memories_list = self._filter_memories_by_threshold(memories_list)
742+
743+
reference = prepare_reference_data(memories_list)
744+
yield f"data: {json.dumps({'type': 'reference', 'data': reference})}\n\n"
740745
# Build custom system prompt with relevant memories)
741746
system_prompt = self._build_enhance_system_prompt(user_id, memories_list)
742747
# Get chat history
@@ -825,18 +830,6 @@ def chat_with_references(
825830
chunk_data = f"data: {json.dumps({'type': 'text', 'data': processed_chunk}, ensure_ascii=False)}\n\n"
826831
yield chunk_data
827832

828-
# Prepare reference data
829-
reference = []
830-
for memories in memories_list:
831-
memories_json = memories.model_dump()
832-
memories_json["metadata"]["ref_id"] = f"{memories.id.split('-')[0]}"
833-
memories_json["metadata"]["embedding"] = []
834-
memories_json["metadata"]["sources"] = []
835-
memories_json["metadata"]["memory"] = memories.memory
836-
memories_json["metadata"]["id"] = memories.id
837-
reference.append({"metadata": memories_json["metadata"]})
838-
839-
yield f"data: {json.dumps({'type': 'reference', 'data': reference})}\n\n"
840833
# set kvcache improve speed
841834
speed_improvement = round(float((len(system_prompt) / 2) * 0.0048 + 44.5), 1)
842835
total_time = round(float(time_end - time_start), 1)

src/memos/mem_os/utils/reference_utils.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
from memos.memories.textual.item import (
2+
TextualMemoryItem,
3+
)
4+
5+
16
def split_continuous_references(text: str) -> str:
27
"""
38
Split continuous reference tags into individual reference tags.
@@ -131,3 +136,18 @@ def process_streaming_references_complete(text_buffer: str) -> tuple[str, str]:
131136
# No reference-like patterns found, process all text
132137
processed_text = split_continuous_references(text_buffer)
133138
return processed_text, ""
139+
140+
141+
def prepare_reference_data(memories_list: list[TextualMemoryItem]) -> list[dict]:
142+
# Prepare reference data
143+
reference = []
144+
for memories in memories_list:
145+
memories_json = memories.model_dump()
146+
memories_json["metadata"]["ref_id"] = f"{memories.id.split('-')[0]}"
147+
memories_json["metadata"]["embedding"] = []
148+
memories_json["metadata"]["sources"] = []
149+
memories_json["metadata"]["memory"] = memories.memory
150+
memories_json["metadata"]["id"] = memories.id
151+
reference.append({"metadata": memories_json["metadata"]})
152+
153+
return reference

0 commit comments

Comments
 (0)