現在、RAGを用いたチャットボットを開発しています。最初は問題なく運用できているのですが、対話数が150を超えたあたりから、返答がなくなるケースが散見されます。
メモリ機能はOFFのため、トークンは問題ないと思います。
Q&Aサービスのような形になっており、ユーザーが質問できる形になっています。ただ、前回のチャットをもとに会話をスタートすることもできるように設定いているため、ユーザー一人ひとりにConversation IDを持たせて、同じIDで対話をしてもらっています。
問題なく会話を続けれているのですが、150 (ユーザーからの入力は75回) 対話をいったあたりから不安定になります。
問題がわからず、わかる方がいましたら、ご教示いただけますと幸いです。
@John_nhira
切り分けとしていくつか教えてください。
- クラウド版、コミュニティ版のどちらですか?
- アプリは Dify の Web UI から使っているか、API から使っているか、どちらですか?
- Converstion ID を固定しているということなので、API かなとは思っていますが
- チャットフロー中の LLM ノードの『メモリ』をオフにしているという理解でよいですか?
- 独自のフロントエンド側のつくりとして履歴は見えるようにしているものの、実際には前回の会話を踏まえた返答にはならない仕組みにしている……?
- 『返答がなくなる』というのは、技術的にはどういう状態ですか?
- 事象がおきているときの Dify 側のトレース画面での見え方、フロコミュニティ版であればコンテナのログなど……
ありがとうございます。
・クラウド版になります。
・アプリはAPIになります。
・メモリがオフという認識で大丈夫です。
例えば、Difyの画面上で確認できる会話IDが「f38cc632- ~~~ 5fe4adc2」だとします。
こちらをAPIを通して、会話をしようとすると、存在しないと弾かれてしまいます。
通常は問題なく使えるのですが、対話を重ねていったら / 一部のユーザーのみエラーになってしまい、困惑しています。
よろしくお願いいたします。
@John_nhira
確認ありがとうございます。
例えば、conversation_id に f38cc632...5fe4adc2 を指定した /chat-messages への API リクエストで問題のエラーが起きたとして、
- Dify のアプリの
Logs & Annotations 画面では、その会話 ID f38cc632...5fe4adc2 のログは、たしかに存在が確認できる
- つまり、該当する会話が本当に消えているわけではないはずだ
という理解でよいですか?
フリープランだと、古い会話がお掃除されちゃう可能性があるので、念のため……。
で、画面上ではたしかにログがあるのにリクエストがエラーになる場合、ありがちなのだと API へのリクエスト中の user の指定ですが、ここはユーザごとにずっと一貫して同じ値を使っていますよね、おそらく。
/chat-messages へのリクエストで conversation_id を指定したとき、データベースからは会話 ID だけでなくアプリ ID やユーザ ID(リクエスト中の user)も含めた完全一致で既存の会話を検索してくるので、これも念のため……。
あとはちょっとぱっと原因が思い当たらずです。
関連するかもしれないバグかもしれない挙動の報告もいくつかあるので、この辺かもしれないです。ある日を境に問題が報告されるようになった、など傾向があるのであれば、クラウド側のアップグレードの影響の可能性なども考えられます。
Thank you very much.
The user also matches.
Yes, that’s right…
While I was researching, I felt it might be a bug.
Thank you very much for your careful assistance! 