使用 DeepSeek API,在 Dify 配置 chatflow,发现经过 4 、5 轮对话,LLM 就会变蠢或者出现幻觉。DeepSeek API 上下文长度是 128K,输入 Token 远未达到这个量级,所以觉得很奇怪。
查了 Gemini Pro,才知这是很多 LLM 的通病。在长上下文的情况下,只关注靠后的,前面的内容会降低注意力,导致会出现“失忆”。
调用 DeepSeek API 时,System prompt 放在历史对话记录前面,当历史对话的 Token 数超过 4K,System prompt 就会被忽略,导致结果出现幻觉。
解决方法很简单,在 Dify 的 LLM 节点或 Agent 节点,修改“USER”或“查询”,在用户输入之后添加“提示”让 LLM 严格遵守 System prompt 。