評価フレームワークを使用して注文エージェントを評価する

このガイドでは、デリバリー&テイクアウト AI エージェントの評価フレームワークを使用して、AI デリバリー&テイクアウト エージェントをテスト、検証、ベンチマークする方法について説明します。

自動評価により、注文エージェントが注文を正確に受け、複雑な修飾子の選択を処理し、メニュー ルールを正しく適用し、エージェントの動作を検証していることを確認できます。

評価フレームワークの概要

評価フレームワークは、デリバリー&テイクアウトの会話の自動シミュレーションと検証を提供します。すべてのメニュー項目や会話のエッジケースを手動でテストする代わりに、エージェントに対してシミュレートされた顧客セッションを実行し、結果のカートの状態と会話を検証するテストスイートを定義できます。

評価の実行中、フレームワークは次の 2 種類のテストケースのいずれかを使用して、会話のお客様側をシミュレートします。

  • 事前定義された会話ターン: 決定論的な回帰テスト用に、スクリプト化された一連のお客様のテキスト入力を提供します。このモードは、お客様の正確なフレーズが期待されるエージェントのレスポンスを生成することを確認する場合や、本番環境から実際のお客様のセッションとエスカレーションを再現する場合に使用します。
  • 動的な指示ベースのセッション シミュレーション: 注文に関する自然言語の概要レベルの指示(特定の商品の注文、代替品の依頼、アレルギーに関する質問など)を提供します。LLM カスタマー シミュレーターが会話を動的にロールプレイし、エージェントが現実的な会話、明確化のための質問、注文途中の変更、さまざまな顧客の言い回しにどのように対応するかをテストします。

評価リソースモデル

評価フレームワークは、次の 4 つの主要なリソースを中心に構成されています。

  • EvaluationDataset: テストスイートを表す評価ケースの名前付きコレクション(コアメニューの回帰スイートや朝食コンボテストなど)。
  • EvaluationCase: 評価コンテキストと一連のマッチャーに対して、順序付けインタラクション(事前定義されたターンまたは動的指示のいずれかを使用)を評価する個々のテストシナリオ。
  • EvaluationContext: テストケースまたはデータセットの実行環境。対象店舗の場所、有効なメニュー、時間帯、シミュレートされたセッション開始時間などが含まれます。
  • EvaluationMatcher: 注文セッションの終了時に評価されるアサーション ルール。特定のカートの状態、発話テキスト、セマンティック条件をチェックします。

評価マッチャー

EvaluationMatcher は、テストケースが合格するためにエージェントが満たす必要のある条件を定義します。評価ケースは複数のマッチャーを参照でき、各マッチャーはブール値の合格または不合格の結果を生成します。

  • 注文結果のマッチャー: お客様の最終的なカートと期待される Order を比較します。マッチャーは、正規化後にすべての商品、修飾子グループ、ネストされた修飾子、商品数量が一致することを確認します。
  • エージェントの発話文字列のマッチャー: エージェントのレスポンスに特定の部分文字列が含まれているか、正規表現と一致するかどうかを確認します。一致条件を反転して、エージェントが禁止フレーズを言っていないことを確認できます。
  • LLM 判定マッチャー: LLM 判定を使用して、文字列の完全一致では検証できない自然言語の基準を評価します。たとえば、「エージェントは注文を確定する前に、お客様がチーズを希望するかどうかを確認した」や「エージェントは、朝食時間帯にはミルクシェイクは提供できないことをお客様に丁寧に伝えた」などと記述できます。

評価コンテキスト

EvaluationContext は、評価セッションが実行されるレストラン環境を構成します。

  • 店舗: ターゲット店舗のリソース名(projects/{project}/locations/{location}/brands/{brand}/stores/{store})。店舗によって、有効なメニュー、価格設定、タイムゾーン、エージェントのカスタマイズのオーバーライドが決まります。
  • メニュー: 本番環境のストアに関連付ける前に候補メニューをテストするための、省略可能なメニュー リソース名。
  • 時間帯 ID: 特定の食事時間帯にメニュー アイテムの在庫状況と価格設定ルールを確認するためのオプションの時間帯 ID(breakfast や dinner など)。
  • テスト セッションの開始時刻: 特定の時間帯や曜日に注文が行われたことをシミュレートするための ISO タイムスタンプ(省略可)。

デリバリー&テイクアウト AI エージェント コンソールで評価する

デリバリー&テイクアウト AI エージェント コンソールには、評価データセットの管理、テストの実行、結果の分析を行うためのインタラクティブなインターフェースが用意されています。

1. 評価コンテキストを作成する

  1. デリバリー&テイクアウト AI エージェント コンソールで、プロジェクトとブランドを選択します。
  2. ナビゲーション メニューで [評価] をクリックします。
  3. [Contexts] タブをクリックします。
  4. [新しいコンテキスト] をクリックします。
  5. 表示名を入力し、ターゲットの [ストア] を選択します。
  6. 省略可: 特定の メニュー または 掲載時間帯 のオーバーライドを選択します。
  7. [作成] をクリックします。

2. 評価マッチャーを作成する

  1. [評価] ページで、[マッチャー] タブをクリックします。
  2. [新しいマッチャー] をクリックします。
  3. 表示名を入力し、マッチャー タイプを選択します。
    • 注文結果: 商品、修飾子、数量を選択して、想定される注文を作成します。
    • エージェントの発話: 必要な部分文字列または正規表現パターンを入力します。
    • LLM 判定: LLM 判定の自然言語条件を入力します。
  4. [作成] をクリックします。

3. データセットを作成してテストケースをインポートする

コンソールでは、テストケースを単独で存在させることも、データセットに整理することもできます。データセットはコンソールで直接作成できますが、テストケースは YAML ファイルからインポートするか、本番環境セッションから変換する必要があります。

データセットを作成する

  1. デリバリー&テイクアウト AI エージェント コンソールで、[評価] > [データセットとケース] に移動します。
  2. [データセット] ペインで、[新しいデータセット] をクリックします。
  3. 表示名(Combo Meals Regression など)と説明(省略可)を入力します。
  4. [作成] をクリックします。

[データセット] ペインで [インポート] をクリックして、YAML ファイルからデータセットをインポートすることもできます。

次の YAML ファイルの例では、インライン評価ケースを含む評価データセットを定義しています。

- name: projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationDatasets/DATASET_ID
  displayName: Core Combo Regression
  description: Core combo ordering and modifier selection regression suite
  evaluationContext: projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationContexts/CONTEXT_ID
  evaluationCases:
    - name: projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationCases/CASE_ID_1
      displayName: double_cheeseburger_combo
      description: Tests combo meal ordering with side and drink modifier selections
      evaluationContext: projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationContexts/CONTEXT_ID
      evaluationMatchers:
        - projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationMatchers/ORDER_MATCHER_ID
      staticTextTurnCase:
        textTurns:
          - userTextInput: "I'd like a double cheeseburger combo."
            exampleAgentResponse: "What drink and side would you like with your combo?"
          - userTextInput: "Onion rings and a large diet cola, please."
            exampleAgentResponse: "Got it, a double cheeseburger combo with onion rings and a large diet cola. Anything else?"
          - userTextInput: "No, that's everything."
            exampleAgentResponse: ''

評価ケースをインポートする

  1. [Cases] ペインで [Import] をクリックします。
  2. 評価ケースを定義する YAML ファイルを選択します。
  3. アップロードを確認します。インポートされたケースが [Cases] リストに表示されます。

[データセット] ペインまたは [ケース] ペインで [エクスポート] をクリックして、既存の定義を YAML ファイルとしてダウンロードすることもできます。

次の YAML ファイルの例では、事前定義された会話ターン、評価コンテキスト、マッチャーを使用して評価ケースを定義しています。

- name: projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationCases/CASE_ID_1
  displayName: Double Cheeseburger Combo
  description: Tests combo meal ordering with side and drink modifier selections
  evaluationContext: projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationContexts/CONTEXT_ID
  evaluationMatchers:
    - projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationMatchers/ORDER_MATCHER_ID
    - projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationMatchers/UTTERANCE_MATCHER_ID
  staticTextTurnCase:
    textTurns:
      - userTextInput: "I'd like a double cheeseburger combo."
        exampleAgentResponse: "What drink and side would you like with your combo?"
      - userTextInput: "Onion rings and a large diet cola, please."
        exampleAgentResponse: "Got it, a double cheeseburger combo with onion rings and a large diet cola. Anything else?"
      - userTextInput: "No, that's everything."

- name: projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationCases/CASE_ID_2
  displayName: Breakfast Allergen Inquiry
  description: Tests agent handling of customer allergy questions during breakfast
  evaluationContext: projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationContexts/CONTEXT_ID
  evaluationMatchers:
    - projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationMatchers/LLM_JUDGEMENT_MATCHER_ID
  staticTextTurnCase:
    textTurns:
      - userTextInput: "Are your pancakes prepared with peanut oil?"
      - userTextInput: "Okay, I'll take the oatmeal instead."

ケースをデータセットに整理する

評価ケースは、データセットに属さずに独立して存在できます。ケースをデータセットに整理するには:

  1. [ケース] ペインで、チェックボックスを使用して 1 つ以上のテストケースを選択します。
  2. 選択したケースを [データセット] ペインのターゲット データセットにドラッグします。
  3. [データセット] ペインでデータセットをクリックして展開し、割り当てられたケースを確認します。

4. [注文履歴] から顧客セッションを変換する

お客様から報告された問題を再現したり、実際のプロダクション トラフィックから直接テストスイートを構築したりするには、次の手順を行います。

  1. ナビゲーション メニューで [注文履歴] をクリックします。
  2. テストする注文セッションの行をクリックします。
  3. [注文の詳細] パネルで、[評価ケースに変換] をクリックします。
  4. 評価コンテキストとマッチャーを選択または作成します。
  5. [変換] をクリックします。ターンバイターンのお客様の発話は、自動的に評価ケースに変換されます。

5. 評価を実行して結果を確認する

データセット全体を実行することも、選択した個々のケースを実行することもできます。

  • データセットを実行する: [データセット] ペインで、ターゲット データセットの横にある [データセットを実行] をクリックします。
  • 個々のケースを実行する: [ケース] ペインで、チェックボックスを使用して 1 つ以上のケースを選択し、選択アクション バーの [実行] をクリックします。

実行をモニタリングして詳細な結果を検査するには:

  1. [履歴] タブをクリックして、実行の進行状況、全体的な合格率、実行時間を確認します。
  2. 履歴テーブルの実行をクリックして、ケースの詳細な結果を表示します。
    • 概要: 全体の合格率または不合格率と、合格したケースの合計数を確認します。
    • ターン トランスクリプト: シミュレートされた顧客とエージェントのターンバイターンの会話を調べます。
    • マッチャーの詳細: どのマッチャーが合格または不合格になったかを確認します。不合格になった定性基準については、LLM ジャッジの説明も確認できます。

次のステップ