diff --git a/api/app/core/memory/analytics/memory_insight.py b/api/app/core/memory/analytics/memory_insight.py index 06791702..466ac2e6 100644 --- a/api/app/core/memory/analytics/memory_insight.py +++ b/api/app/core/memory/analytics/memory_insight.py @@ -312,7 +312,24 @@ class MemoryInsight: response = await self.llm_client.chat(messages=messages) - return response.content + # 确保返回字符串类型 + content = response.content + if isinstance(content, list): + # 如果是列表格式(如 [{'type': 'text', 'text': '...'}]),提取文本 + if len(content) > 0: + if isinstance(content[0], dict): + # 尝试提取 'text' 字段 + text = content[0].get('text', content[0].get('content', str(content[0]))) + return str(text) + else: + return str(content[0]) + return "" + elif isinstance(content, dict): + # 如果是字典格式,提取 text 字段 + return str(content.get('text', content.get('content', str(content)))) + else: + # 已经是字符串或其他类型,转为字符串 + return str(content) if content is not None else "" async def close(self): """ diff --git a/api/app/core/memory/analytics/user_summary.py b/api/app/core/memory/analytics/user_summary.py index 3f4f4a2d..61f58965 100644 --- a/api/app/core/memory/analytics/user_summary.py +++ b/api/app/core/memory/analytics/user_summary.py @@ -135,7 +135,25 @@ class UserSummary: # 3) Call LLM response = await self.llm.chat(messages=messages) - return response.content + + # 确保返回字符串类型 + content = response.content + if isinstance(content, list): + # 如果是列表格式(如 [{'type': 'text', 'text': '...'}]),提取文本 + if len(content) > 0: + if isinstance(content[0], dict): + # 尝试提取 'text' 字段 + text = content[0].get('text', content[0].get('content', str(content[0]))) + return str(text) + else: + return str(content[0]) + return "" + elif isinstance(content, dict): + # 如果是字典格式,提取 text 字段 + return str(content.get('text', content.get('content', str(content)))) + else: + # 已经是字符串或其他类型,转为字符串 + return str(content) if content is not None else "" async def generate_user_summary(user_id: str | None = None) -> str: