Difyチャットボットの複数ターンの会話の品質をどのように評価しますか?

こんにちは、皆さん、

Difyでチャットボットを構築しているのですが、複数ターン会話でのみ発生し、シングルターンQ&Aでは発生しない品質問題に直面しています。

問題

シングルターンのテストは簡単です。質問をして、答えを確認するだけです。しかし、ユーザーが複数ターンの会話をするようになると、異なる種類の障害が現れます。

  • RAG検索ドリフト: 会話が長くなるにつれて、検索クエリが複数のトピックの混合になります。知識ベースは関連性の低いチャンクを返すようになり、ボットは間違ったドキュメントからの情報で自信満々に答えます。

  • 指示の希薄化: 8〜10ターン以上になると、ボットはシステムプロンプトの制約から徐々に逸脱します。トーンが変化したり、拒否すべき範囲外の質問に答え始めたり、書式設定ルールに従わなくなったりします。

  • サイレントリグレッション: ワークフロー(システムプロンプトの変更、RAGパラメーターの調整、モデルの入れ替え)を更新した後、以前は機能していた会話パターンがログにエラーなしで壊れます。

これらは、「間違った答え」と示すものがログにないため、捕捉が困難です。LLM呼び出しは成功し、応答は流暢に見えますが、情報が不正確であったり、意図した動作から逸脱していたりします。

検討したこと

Difyは、いくつかの可観測性/評価ツールと統合されています。

ツール 提供内容
LangSmith データセット + 評価器、LLM-as-Judge、人間によるフィードバック
Langfuse データセット、LLM-as-Judge、人間によるフィードバック、カスタムスコア
Opik LLM-as-Judge、8つの会話固有のメトリクス、データセット評価
Arize AX LLM-as-Judge、セッション評価、人間によるアノテーション
Phoenix LLM-as-Judge、評価ハブ

これらはトレーシングやシングルターンの評価には優れています。しかし、私の知る限り、これらツールのどれも、複数ターンの会話シナリオ(例:「Xを尋ね、その応答に基づいてYまたはZを尋ねる」)を設計し、Difyチャットボットに対してエンドツーエンドで実行することを可能にするものではありません。

このフォーラムやGitHub Discussionsを検索しましたが、更新後のリグレッションに言及するGitHubのIssueが211件、可観測性に関するものが524件もあるにもかかわらず、体系的なチャットボットの品質評価についての議論がほとんどないことに驚きました。

コミュニティへの質問

  1. 変更をリリースする前に、Difyチャットボットの品質をどのようにテストしていますか? 上記のツールを使用していますか?プレビューでの手動テストですか?カスタムスクリプトですか?それとも何か別の方法ですか?

  2. ワークフローやRAG構成を更新した後、サイレントリグレッションを経験したことはありますか? どのようにしてそれらを検出しましたか?

  3. 複数ターンの評価、つまり個別のQ&Aペアではなく、会話フロー全体をテストしている人はいますか?

皆さんのうまくいっていること(またはうまくいっていないこと)を聞きたいです。

This is a interesting feedback. :slight_smile:

Yeah, this is a real problem, especially the retrieval drift and instruction dilution you mentioned. We ran into similar issues where everything looked fine turn-by-turn, but the overall conversation would go off the rails after a few steps.
Most traditional eval tools are still focused on single-turn Q&A, but I think newer agent eval tools are shifting towards multi-turn.

One thing that’s been tricky in practice is actually making those simulations realistic and systematic enough to catch regressions reliably across different scenarios.

Tools like Arksim are starting to explore this, you can run conversations with different user goals/personas and see how the system behaves over time. It’s not perfect, but it gets closer to how these failures actually show up in practice.

Not sure if you’ve already found other alternatives but you can try out Arksim and see how it does
https://github.com/arklexai/arksim

Curious if others have found good ways to systematically test multi-turn flows?