目前我正在开发一款使用 RAG 的聊天机器人。起初运行一切正常,但当对话次数超过约 150 次时,开始出现没有回复的情况。
由于内存功能是关闭的,我认为在 token 方面应该没有问题。
整体形态类似于 Q&A 服务,用户可以进行提问。同时,为了能够基于上一次的聊天开启新的对话,我们为每位用户分配了一个 Conversation ID,并让他们使用同一个 ID 继续对话。
一直以来对话都能正常进行,但当对话大约达到 150 次(用户输入约 75 次)后,系统开始变得不稳定。
目前尚不清楚问题原因,如果有了解的朋友,烦请不吝赐教。
@John_nhira
请从以下几个方面说明一下:
- 使用的是云版还是社区版?
- 应用是通过 Dify 的 Web UI 使用,还是通过 API 使用?
- 由于提到固定了 Conversation ID,我推测可能是通过 API 使用的。
- 对于聊天流程中的 LLM 节点,是否已关闭“记忆”功能?
- 理解为:虽然前端自定义实现中可以看到历史记录,但实际上系统并未基于之前的对话内容进行响应……?
- “回复消失”在技术上具体指什么状态?
- 例如,Dify 侧的追踪界面中会显示什么情况?如果是社区版,是否可以在容器日志中看到相关现象?
非常感谢。
- 这是云端版本。
- 应用程序是通过 API 调用的。
- 我理解为内存已关闭,这个理解是正确的吗?
例如,假设在 Dify 的界面上可以查看到的对话 ID 是「f38cc632- \~\~\~ 5fe4adc2」。
当我通过 API 尝试调用该对话时,系统会提示“不存在”并被拒绝。
通常情况下一切正常,但随着对话次数的增加,或部分用户会出现错误,让我感到困惑。

请多关照。
@John_nhira
感谢确认。
例如,假设在对 /chat-messages 的 API 请求中指定了 conversation_id 为 f38cc632...5fe4adc2 时出现了问题错误,那么:
- 在 Dify 应用的
Logs & Annotations 页面中,确实可以确认该会话 ID f38cc632...5fe4adc2 的日志存在
- 也就是说,该会话实际上应该并没有被删除
我的理解是正确的吗?
因为免费计划可能会清理旧的会话,所以想确认一下。
另外,虽然界面上确实存在日志,但请求却报错,这种情况通常与 API 请求中的 user 指定有关。不过,您应该是一直使用相同的值,对吧?
在向 /chat-messages 发送请求时,conversation_id 被指定后,数据库会根据会话 ID、应用 ID 和用户 ID(请求中的 user)进行完全匹配来查找现有会话,这一点也请确认一下。
除此之外,我暂时想不出其他可能的原因。
目前也有一些可能相关的 bug 或异常行为报告,可能与此有关。如果问题是从某一天开始出现的,那么也有可能是云端升级的影响。