Skip to content

Commit 492571b

Browse files
author
yuan.wang
committed
pref support multi-modal messages
1 parent b6efc87 commit 492571b

File tree

3 files changed

+37
-5
lines changed

3 files changed

+37
-5
lines changed

src/memos/memories/textual/prefer_text_memory/spliter.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ def _split_with_overlap(self, data: MessageList) -> list[MessageList]:
8787
# overlap 1 turns (Q + A = 2)
8888
context = copy.deepcopy(chunk[-2:]) if i + 1 < len(data) else []
8989
chunk = context
90-
if chunk and len(chunk) % 2 == 0:
90+
if chunk:
9191
chunks.append(chunk)
9292

9393
return chunks

src/memos/memories/textual/prefer_text_memory/utils.py

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import json
12
import re
23

34
from memos.dependency import require_python_package
@@ -9,12 +10,36 @@ def convert_messages_to_string(messages: MessageList) -> str:
910
"""Convert a list of messages to a string."""
1011
message_text = ""
1112
for message in messages:
13+
content = message.get("content", "")
14+
content = (
15+
content.strip()
16+
if isinstance(content, str)
17+
else json.dumps(content, ensure_ascii=False).strip()
18+
)
19+
if message["role"] == "system":
20+
continue
1221
if message["role"] == "user":
13-
message_text += f"Query: {message['content']}\n" if message["content"].strip() else ""
22+
message_text += f"User: {content}\n" if content else ""
1423
elif message["role"] == "assistant":
15-
message_text += f"Answer: {message['content']}\n" if message["content"].strip() else ""
16-
message_text = message_text.strip()
17-
return message_text
24+
tool_calls = message.get("tool_calls", [])
25+
tool_calls_str = (
26+
f"[tool_calls]: {json.dumps(tool_calls, ensure_ascii=False)}" if tool_calls else ""
27+
)
28+
line_str = (
29+
f"Assistant: {content} {tool_calls_str}".strip()
30+
if content or tool_calls_str
31+
else ""
32+
)
33+
message_text += f"{line_str}\n" if line_str else ""
34+
elif message["role"] == "tool":
35+
tool_call_id = message.get("tool_call_id", "")
36+
line_str = (
37+
f"Tool: {content} [tool_call_id]: {tool_call_id}".strip()
38+
if tool_call_id
39+
else f"Tool: {content}".strip()
40+
)
41+
message_text += f"{line_str}\n" if line_str else ""
42+
return message_text.strip()
1843

1944

2045
@require_python_package(

src/memos/multi_mem_cube/single_cube.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -495,6 +495,13 @@ def _process_pref_mem(
495495
if os.getenv("ENABLE_PREFERENCE_MEMORY", "false").lower() != "true":
496496
return []
497497

498+
if add_req.messages is None or isinstance(add_req.messages, str):
499+
return []
500+
501+
for message in add_req.messages:
502+
if message.get("role", None) is None:
503+
return []
504+
498505
target_session_id = add_req.session_id or "default_session"
499506

500507
if sync_mode == "async":

0 commit comments

Comments
 (0)