解析json字符串提取相关文本

This commit is contained in:
Sakura-RanChen
2026-01-12 17:47:29 +08:00
parent 5fa50339b4
commit 3bdccfea62
3 changed files with 53 additions and 12 deletions
@@ -37,11 +37,26 @@ class MemoryProvider(MemoryProviderBase):
try:
# Format the content as a message list for mem0
messages = [
{"role": message.role, "content": message.content}
for message in msgs
if message.role != "system"
]
messages = []
for message in msgs:
if message.role == "system":
continue
content = message.content
# Extract content from JSON format if present (for ASR with emotion/language tags)
# Same logic as in query_memory method
try:
if content and content.strip().startswith("{") and content.strip().endswith("}"):
data = json.loads(content)
if "content" in data:
content = data["content"]
except (json.JSONDecodeError, KeyError, TypeError):
# If parsing fails, use original content
pass
messages.append({"role": message.role, "content": content})
result = self.client.add(messages, user_id=self.role_id)
logger.bind(tag=TAG).debug(f"Save memory result: {result}")
except Exception as e:
@@ -149,10 +149,22 @@ class MemoryProvider(MemoryProviderBase):
msgStr = ""
for msg in msgs:
content = msg.content
# Extract content from JSON format if present (for ASR with emotion/language tags)
try:
if content and content.strip().startswith("{") and content.strip().endswith("}"):
data = json.loads(content)
if "content" in data:
content = data["content"]
except (json.JSONDecodeError, KeyError, TypeError):
# If parsing fails, use original content
pass
if msg.role == "user":
msgStr += f"User: {msg.content}\n"
msgStr += f"User: {content}\n"
elif msg.role == "assistant":
msgStr += f"Assistant: {msg.content}\n"
msgStr += f"Assistant: {content}\n"
if self.short_memory and len(self.short_memory) > 0:
msgStr += "历史记忆:\n"
msgStr += self.short_memory
@@ -173,11 +173,25 @@ class MemoryProvider(MemoryProviderBase):
try:
# Format the content as a message list for PowerMem
messages = [
{"role": message.role, "content": message.content}
for message in msgs
if message.role != "system"
]
messages = []
for message in msgs:
if message.role == "system":
continue
content = message.content
# Extract content from JSON format if present (for ASR with emotion/language tags)
# Same logic as in query_memory method
try:
if content and content.strip().startswith("{") and content.strip().endswith("}"):
data = json.loads(content)
if "content" in data:
content = data["content"]
except (json.JSONDecodeError, KeyError, TypeError):
# If parsing fails, use original content
pass
messages.append({"role": message.role, "content": content})
# Add memory using PowerMem SDK
result = self.memory_client.add(