バッチ評価の評価フロー
バッチ評価を使用すると、Eval アドミニストレーターは保存されたクエリに基づいて、完了した最大 100 件の仮想エージェント会話を一度に評価できます。
フロー名:バッチ評価を実行。
フローは評価レコードを作成し、対象となる会話ごとに Now Assist スキルを呼び出します。これは単一の会話の評価ロジックを反映していますが、大規模です。HR スコープの除外、トピック/カテゴリの検証、トランスクリプト構築ルール、早期ライブエージェントの除外、およびスキルによる非同期スコアリングが適用されます。
バッチ評価は、次のロジックを使用して実行されます。
トリガー
- テーブル:評価セット [sn_na_conv_eval_evaluation_set]
- 条件:ステータスが [対応中] および [評価タイプ] = 会話に変更される
入力
- 次を含む評価セットレコード:
- クエリ フィルター: 評価する会話を対象とするクエリ (sys_cs_conversation フィルターなど)。
- 評価タイプ:会話
- ステータス:処理中 (開始)
- LLM/スキル:チャットトピック分類子、およびその後にリストされている評価スキル。
高レベルの動作
- クエリフィルターを読み取り、最大 100 件の会話をランダムにサンプリングします。
- 既に評価された会話をスキップします。
- HR スコープのインタラクションを除外します。
- チャットトピック分類子を使用して評価の適格性を検証し、トピックとカテゴリを抽出します。
- ナレッジ記事とカタログソースの包含を制御してトランスクリプトを作成し、早期ライブエージェントの除外を適用します。
- 評価レコードを作成し、選択したすべての評価スキルを非同期に呼び出して、スコアと根拠をメトリクスに書き込みます。
実行順序:
アクション 1:クエリフィルターが空でない場合
- 目的:ガード条項。
- ロジック:評価セットレコードを検索し、クエリフィルターフィールドを確認します。
- クエリフィルターが存在する場合:アクション 2 に進みます。
- 空の場合:停止してオプションでログ記録 クエリが指定されていません。
アクション 2:会話をランダム化する
- 目的:指定されたクエリから会話の限定されたランダムなサンプルを選択します。
- ロジック:
- クエリを実行して、一致する会話レコードを取得します。
- 最大 100 件の会話をランダムに選択します。
- >100が一致する場合、上限は100です。
- <100 の場合は、すべてを選択します。
- クエリーを検証します。無効な場合は、false と空または部分的な配列を返します。
- 出力:
- 成功:True/False
- conversation_ids:sys_idsのアレイ (最大 100)
- 成功 = true の場合:アクション 3 に進みます。それ以外の場合は、検証エラーを停止してログに記録します。
アクション 3:以前の評価を確認する評価テーブルを検索する
- 目的:重複した評価を避けます。
- ロジック:会話sys_idごとに、既に評価されているか進行中であることを示す既存のレコードのsn_na_conv_eval_evaluationを確認します (実装の選択肢:ステータスがキャンセル済み/失敗ではない)。
- 以前に評価されていない場合:その会話のアクション 4 に進みます。
- 既に評価されている場合:この会話をスキップします。オプションでログに 記録します 既に評価されています。
アクション 4:インタラクションレコードを検索する
- 目的:HR スコープの除外を強制します。
- ロジック:会話に関連するインタラクションを解決します。アプリケーションスコープに hr が含まれている場合は、会話をスキップします。
- スコープに hr が含まれていない場合:アクション 5 に進みます。
アクション 5:チャット分類子の評価
- 目的:会話を評価する必要があるかどうかを検証し、高レベルのラベルを抽出します。
- ロジック:
- 分類入力のsys_cs_messageから軽量のトランスクリプトをビルドします。
- トランスクリプトを使用してチャットトピック分類子スキルを呼び出します。
- 受ける:
- 評価を実行:true/false
- トピック名
- カテゴリ:IT または HR
- [評価を実行] = true の場合:アクション 6 に進みます。
- false の場合:会話をスキップし、分類子の決定をログに記録します。
アクション 6:buildTranscript
- 目的:最終的な詳細レベルのトランスクリプトを作成し、下流のスキルセットとガードレールを決定します。
- 手順:
- すべての会話メッセージをアグリゲートします。
- ユーザーメッセージに [User]: としてタグ付けし、仮想エージェントメッセージを [仮想エージェント] としてタグ付けします。
- ナレッジ 記事:
- Genius 結果が ナレッジ 記事を参照している場合は、 ナレッジ 記事のクエリを実行し、Genius スニペットを記事本文全体に置き換えます。
- [仮想エージェント] で注釈を付ける:ユーザークエリのヘルプ記事:コンテンツをArticle_StartとArticle_End内で折り返します。
- 制約:
- KB が HR スコープであるかアクセスできない場合は、評価しません (会話をスキップします)。
- 記事の本文を最大 10,000 語に短縮します。
- KB コンテンツソースが添付ファイル (PDF/Word/Txt) の場合は、完全なファイルコンテンツではなく Genius 結果にフォールバックします。
- カタログアイテム:
- Genius 結果がカタログアイテムを参照している場合は、sc_cat_itemクエリを実行し、文字列 (カタログ名、簡単な説明、説明) を作成します。
- [仮想エージェント] で注釈を付ける :次のいずれかのオプションを選択してください。 引用順序を含めます。
- ライブエージェントの除外:
- 最初のユーザーメッセージがライブエージェントを要求した場合は、評価をスキップします。
- 最初の 120 語以内にライブエージェントが呼び出された場合は、評価をスキップします。
- 出力:
- ExecuteEvaluation:true/false (ガードレール後の結果)
- チャットのトランスクリプト
- ナレッジ 参照された記事
- 参照されたカタログアイテム
- 最初のライブエージェントの発生:会話メッセージのSys_id (存在する場合)
- 呼び出すスキル:
- Coherence チャットの評価
- 簡潔さチャット評価
- コンテキストの保持
- 不十分なスロット入力チャットの評価
- インテント精度チャット評価
- スムーズに流れる会話チャットの評価
- 真実性幻覚チャット評価
- 追加のログ
- ExecuteEvaluation = trueの場合:アクション7に進みます。それ以外の場合は、会話をスキップします。
アクション 7:If ブロック
- 目的:分岐してレコードを作成します。
- ロジック: アクション 6 の ExecuteEvaluation が true の場合、アクション 8 に進みます。
アクション 8:評価レコードを作成または更新する
- 目的:この会話の評価エントリを保持します。
- テーブル:sn_na_conv_eval_evaluation
- フィールドの入力:
- ドキュメント会話:会話の参照
- ステータス:処理中
- トピック:アクション 5 から
- カテゴリ:アクション 5 から
- 参照された KB:アクション 6 から
- 参照されるカタログ:アクション 6 から
- 最初のライブエージェントの発生:アクション 6 から
- タイプ:チャットの要約
- ユーザー:会話の開始ユーザー
- メッセージログ:アクション 6 からの追加ログ
- 成功時:アクション 9 に進みます。
アクション 9:ループオーバースキルの場合
- 目的:選択した各評価スキルを実行します。
- アクション 6 のリストの各スキルについて:
- アクション 10:invokeApiDefinition
- 入力:スキル名、会話、トランスクリプト、評価 ID
- [Behavior (動作)]:
- Now Assistスキルを非同期に呼び出します。
- ポストプロセッサは結果をsys_generative_ai_response_validatorに書き込みます。
- JSON 応答フィールドの抽出:
- スコア
- スコアの理由
- 推論を裏付ける例
- 親評価にリンクされたsn_na_conv_eval_evaluation_metricsに子メトリクスレコードを作成します。
- アクション 11:待機
7 秒間一時停止してから、レート制限またはスロットリングを管理する次のスキルに進みます。
- アクション 10:invokeApiDefinition