Skip to content

记忆提取在附带引用消息时会引起主体混乱 #1734

@FFFold

Description

@FFFold

检查项

  • 我确认此问题在所有分支的最新版本中依旧存在
  • 我确认在 Issues 列表中并无其他人已经提出过与此问题相同或相似的问题
  • 我使用了 Docker

使用的分支

main

具体版本号

v1.0.0-pre.24

遇到的问题

记忆提取在附带引用消息时会引起主体混乱。
下面的情况中,用户“白羽小鸟”引用了Bot“迫水彩芽”的消息并进入记忆归纳流程,但llm将引用的Bot消息当做用户自己的信息进行了归纳,生成了“白羽小鸟没有对象”的错误信息。

Image

附API请求内容和结果:

{
  "model": "deepseek-v4-flash",
  "max_completion_tokens": 4096,
  "temperature": 0.5,
  "messages": [
    {
      "role": "user",
      "content": "你要从用户原始发言中提取“关于白羽小鸟的稳定事实”。\n\n目标人物:白羽小鸟\n用户原始发言证据:\n- [reply]什、什么做母亲啊!我连对象都还没有呢...这种事情还早得很啦...真是的 @迫水彩芽  嘛,做母亲和有没有对象也不矛盾的说\n\n机器人回复:\n[回复消息] 这、这根本就是两回事吧!没有对象怎么...啊!不对\n\n请只提取满足以下条件的事实:\n1. 必须能被“用户原始发言证据”直接支持,不能只来自机器人回复。\n2. 明确是关于目标人物本人的信息。\n3. 具有相对稳定性,可以作为长期记忆保存。\n4. 用简洁中文陈述句表达。\n5. 如果用户原始发言中出现“我/我的/自己”,默认指目标人物,请先改写成关于目标人物的第三人称事实再输出。\n\n不要提取:\n- 机器人的情绪、计划、临时动作、客套话\n- 仅由机器人提出的建议、猜测、玩笑、回忆或承诺\n- 只适用于当前时刻的短期安排\n- 不确定、猜测、反问\n- 与目标人物无关的信息\n\n严格输出 JSON 数组,例如:\n[\"他喜欢深夜打游戏\", \"他养了一只猫\"]\n如果没有可写入的事实,输出 []"
    }
  ]
}
{
  "choices": [
    {
      "message": {
        "content": "[\"白羽小鸟没有对象\"]",
        "reasoning_content": "我们分析用户原始发言证据。用户说:\"什、什么做母亲啊!我连对象都都还没有呢...这种事情还早得很啦...真是的 @迫水彩芽  嘛,做母亲和有没有对象也不矛盾的说\"\n\n这里目标人物是白羽小鸟(根据提示,用户发言中的“我”指目标人物)。所以事实:白羽小鸟没有对象。这是直接支持的稳定事实。另外,关于做母亲的话题,用户说“做母亲和有没有对象也不矛盾”,但这更像是对别人的反驳,不是关于本人的稳定事实。所以只提取一个事实:他没有对象。注意:用户是女性?名字“白羽小鸟”可能女性,但用“他”还是“她”?输出用第三人称,最好用“ta”或根据语境。但这里没有明确性别,可以用“他”作为默认。或者用“白羽小鸟”。严格来说,输出应该是关于目标的描述。所以写:\"白羽小鸟没有对象\"。\n\n另外,注意机器人回复不算。所以只有一个事实。输出JSON数组。",
        "role": "assistant"
      },
      "finish_reason": "stop",
      "index": 0,
      "logprobs": null
    }
  ],
  "object": "chat.completion",
  "usage": {
    "prompt_tokens": 281,
    "completion_tokens": 226,
    "total_tokens": 507,
    "completion_tokens_details": {
      "reasoning_tokens": 217
    },
    "prompt_tokens_details": {
      "cached_tokens": 0
    }
  },
  "created": 1779500413,
  "system_fingerprint": null,
  "model": "deepseek-v4-flash",
  "id": "chatcmpl-3d8e2a64-d74c-97be-ae37-5c98c348be89"
}

报错信息

如何重现此问题?

引用Bot消息,与Bot对话

可能造成问题的原因

进入提取流程的消息结构化不佳,应当优化提供给llm的消息结构,使llm能够识别信息主体。

系统环境

LXC容器内源码部署,镜像Ubuntu server 24.04 LTS

Python 版本

cpython-3.12.3-linux-x86_64-gnu

补充信息

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions