注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

評価スイートを作成する

評価スイートは、対象関数のパフォーマンスを測定するために使用するテストケースと評価関数の集まりです。評価スイートを実行すると、テストケースごとに対象関数が実行され、スイートに関連付けられた評価方法が使用されます。

AIP Logic 関数、AIP Chatbot 関数、コードで作成した関数などの対象関数に対して、評価スイートを作成できます。

AIP Logic 関数:AIP Logic で評価スイートを使いはじめるには、Logic 関数の評価スイートを参照してください。

AIP Logic 関数の評価サイドパネル。

AIP Chatbot 関数:AIP Chatbot 関数をテストするには、まずチャットボットを関数として公開する必要があります。その後、左サイドバーの評価タブから評価スイートを作成できます。サイドバーが似ているため、詳細についてはLogic 関数の評価スイートのセクションに沿って進めることができます。

AIP Chatbot の評価サイドパネル。

コードで作成した関数: Code Repositories で作成した関数の評価スイートは、Code Repositories > コード > 関数 > 公開済みに移動して、公開済みタブから直接作成したり開いたりできます。

コードリポジトリ内の AIP Evals リンク。

追加の対象関数

対象関数を追加して、同じ評価スイートで複数の関数をテストできます。これにより、公開済みの異なる Foundry 関数や Logic 関数を一度に評価できます。実装間でパフォーマンスを比較したり、同じテストケースで類似の関数を評価したりする場合に便利です。

対象関数を追加するには、AIP Evals で評価スイートを開き、ターゲット関数を追加を選択します。対象関数ごとに異なる入出力シグネチャを使用でき、評価ツールは対象ごとに設定します。

評価スイートに対象関数を追加します。

複数の対象を設定している場合は、評価スイートを実行する際に、どの対象を含めるかを選択できます。

テストケースを追加する

評価スイートのテストケースは、個々のテストケースを手動で定義する方法、オブジェクトセットを使用して複数のテストケースを生成する方法、または同じスイート内で両方の方法を組み合わせる方法で作成できます。この柔軟性により、既存のオブジェクトセットを活用しながら、必要に応じて特定のテストケースを手動で追加できます。

テストケースパラメーターを編集を選択すると、評価スイートの列を編集できます。その後、テストケースの列とそれぞれのデータ型を追加、削除、または並べ替えできます。

テストケースパラメーターを設定します。

手動のテストケース

テストケースを手動で定義するには、評価スイートの表示の左下にあるテストケースを追加を選択します。テストケースごとに名前を付け、適切な列で入力とその期待値を定義します。テストケース名の横にある紫色の AIP の星アイコンを選択すると、名前の候補を生成できます。

テストケース名の候補を生成します。

この例では、名前の候補である「食品の品質に関する否定的なレビュー」は、「テストケース1」よりも多くの情報を伝えます。

名前の候補は、テストケースパラメーターの簡潔な説明になります。

手動のテストケースは、特定のエッジケースや、オブジェクトセットでは十分に網羅されていない可能性があるシナリオのテスト、またはテストの入力と期待される出力を細かく制御したい場合に最適です。

オブジェクトセットのテストケース

オブジェクトセットからテストケースを追加することもできます。この場合、選択したオブジェクトセット内のオブジェクトが、それぞれのテストケースを表します。オブジェクトセットのテストケースを追加するには、オブジェクトセットを追加を選択し、オブジェクトセット選択ダイアログで、使用するオブジェクトセットとオブジェクトプロパティを選択します。

オブジェクトセットを元にしたテストケースを追加します。

オブジェクトセットのテストケースは、実データを使用して大規模にテストし、実際のデータを代表するサンプル全体で関数が機能することを確認する場合に特に便利です。同じ評価スイートに複数のオブジェクトセットを追加し、手動のテストケースと組み合わせて、包括的なテストカバレッジを実現できます。

オブジェクトセットのプロパティを編集します。

元のオブジェクトセットは、オブジェクトセット設定を編集アイコンを選択して、設定ダイアログで編集できます。プロパティは、オブジェクトセットのヘッダー列を使用して個別に編集することもできます。

オブジェクトセットは、評価スイートの列にさまざまな種類のデータを渡すように設定できます。これには以下が含まれます。

  • 元のオブジェクトセット内のオブジェクト
  • 元のオブジェクトセット内のオブジェクトのプロパティ
  • 元のオブジェクトセットにリンクされたオブジェクトまたはオブジェクトセット
  • リンクされたオブジェクトまたはリンクされたオブジェクトセットのプロパティ(Object Storage v2 でのみ利用可能)
  • 元のオブジェクトセットのすべての行に適用される固定値

評価ツール

評価ツールは、テスト対象の関数の出力を期待される出力と照合して評価するための手段です。評価ツールは、単純な true/false の結果を返すだけでなく、意味的距離などの数値を出力することもできます。評価ツールを使用しない評価スイートは、複数のシナリオで関数を実行し、出力を1つずつ手動で確認する場合に便利です。一方、評価ツールは比較可能なパフォーマンス指標を生成するため、実行結果を大規模に測定し、客観的に評価できます。

AIP Evals には、次のセクションで説明する組み込みの評価ツールが用意されています。また、特定の基準に基づいてパフォーマンスを測定するカスタム評価関数も定義できます。

評価ツールを追加する

評価ツールを追加するには、テストケースのテーブルの上部にある + 追加を選択します。選択パネルが開き、組み込みの評価ツールまたはカスタム評価ツールの一覧から選択できます。

テストケースの評価ツールを選択します。

評価ツールを選択し、+ 追加を選択すると、テストケースのテーブルに評価ツールが追加されます。その後、テストケースのテーブルで、関数の出力を実際の値列に、期待される値を期待値列にマッピングして、評価ツールを設定できます。

評価ツールを設定します。

評価ツールを設定する際は、メトリクスごとに目標を定義できます。ブールメトリクスの場合は、メトリクスが true と false のどちらであるべきかを指定します。数値メトリクスの場合は、最適化の方向を設定します。最大化(値が大きいほど良い)または最小化(値が小さいほど良い)のいずれかの目標を指定します。しきい値を定義することもできます。

  • 最大化の目標の場合は、最小しきい値を設定します(例:「スコアは10以上である必要があります」)。
  • 最小化の目標の場合は、最大しきい値を設定します(例:「スコアは0.05以下である必要があります」)。

テストケースの反復実行におけるメトリクスは、設定された目標を満たす場合に合格とみなされます。ブールメトリクスの場合は、メトリクスが true と false のどちらであるかで判定されます。数値メトリクスの場合は、しきい値が定義されていれば、メトリクスがそのしきい値を上回るか下回るかで判定されます。テストケースの反復実行全体は、すべてのメトリクスが設定された目標を満たす場合に合格とみなされます。複数回の反復実行を行うテストケースは、すべての反復実行が合格した場合に合格とみなされます。

評価ツールを設定します。

組み込みの評価ツール

組み込みの評価関数には、次のようなものがあります。

  • ブール値の完全一致: 実際のブール値が期待されるブール値と完全に等しいかどうかを確認します。
  • ブール値配列の完全一致: 2つのブール値配列に同じ要素が含まれているかどうかを確認します。デフォルトでは比較は順序に依存しますが、これは設定で変更できます。
  • 文字列の完全一致: 実際の文字列が期待される文字列と完全に一致するかどうかを確認します。デフォルトでは一致判定で大文字と小文字を区別し、空白も含めますが、これは設定で変更できます。
  • 文字列配列の完全一致: 2つの文字列配列に同じ要素が含まれているかどうかを確認します。デフォルトでは比較は順序に依存し、大文字と小文字を区別し、空白も含めますが、これは設定で変更できます。
  • 正規表現の一致: 実際の文字列が期待される正規表現と一致するかどうかを確認します。
  • レーベンシュタイン距離: 2つのシーケンス間の違いを測定する文字列メトリクスです。ある単語をもう一方の単語に変えるために必要な1文字単位の編集(挿入、削除、または置換)の最小回数を計算します。
  • 文字列の長さ: 実際の文字列の長さが期待される範囲内に収まるかどうかを確認します。
  • キーワードチェッカー: 実際のテキストに特定のキーワードが含まれているかどうかを確認します。
  • オブジェクトの完全一致: 実際のオブジェクトが期待されるオブジェクトと完全に等しいかどうかを確認します。
  • オブジェクトセット内の包含: 実際のオブジェクトが対象のオブジェクトセット内のいずれかのオブジェクトと完全に等しいかどうかを確認します。
  • オブジェクトセットのサイズ範囲: 指定されたオブジェクトセットのサイズが期待される範囲内にあるかどうかを確認します。
  • 整数の範囲: 実際の値が期待される値の範囲内にあるかどうかを確認します。整数のみがサポートされます。
  • 数値の完全一致: 2つの数値が完全に等しいかどうかを確認します。Integer、Long、Float、Double、および Short 型をサポートします。
  • 数値配列の完全一致: 2つの数値配列に同じ要素が含まれているかどうかを確認します。Integer、Long、Float、Double、および Short 型をサポートします。デフォルトでは比較は順序に依存しますが、これは設定で変更できます。
  • 浮動小数点の範囲: 実際の値が期待される値の範囲内にあるかどうかを確認します。すべての数値データ型がパラメーターとしてサポートされます。
  • 日時の範囲: 実際の値が期待される値の範囲内にあるかどうかを確認します。Date および Timestamp の値のみがサポートされます。
  • 汎用の完全一致: 実際の値が期待される値と同一かどうかを確認します。数値データ型は比較のために型変換されます(たとえば、Integer は同じ値の Double と一致します)。日付型とタイムスタンプ型も同様です。オブジェクトとオブジェクトセットは参照によって、構造体とマップは順序を考慮しないキーと値のペアによって、リストは順序を考慮した要素によって、モデルは識別子とパラメーターによって比較されます。お使いのデータ型に固有の評価ツールがある場合は、きめ細かな比較オプションとより高い型安全性を備えているため、その評価ツールを使用してください。
  • LLM による判定: LLM を使用して、指定された値についてユーザー定義の条件が成立するかどうかを評価します。条件を満たす場合は true、それ以外の場合は false を返します。実際の値として、参照型(オブジェクトロケーター、オブジェクト RID、オブジェクトセット、またはモデル)以外の任意のデータ型を受け付けます。明確で検証可能な断定文として記述された条件パラメーターと、評価に利用可能なモデルが必要です。
  • ROUGE スコア: 実際の(生成された)テキストの表現が、期待される(対象の)テキストとどの程度重複しているかを測定します。要約や翻訳などのタスクで特に役立ちます。precision、recall、および f-measure を返します。それぞれ0〜1の尺度で、スコアが高いほど対象との一致度が高いことを示します。

カスタム評価関数

カスタム評価関数では、以前に公開された関数を選択できます。Code Repositories で記述されたオブジェクトに対する関数や、ほかの AIP Logic 関数を使用できます。カスタム評価関数は、メトリクスとしてブール値または数値データ型の値を1つ以上返す必要があります。また、文字列値を返すこともできます。文字列値は、診断用のデバッグ出力としてデバッグ表示に表示されます。ブール値または数値データ型で構成された struct を返すことで、1つの評価関数から複数のメトリクスを返すこともできます。

評価スイートを作成した後の評価スイートの実行設定について、詳しくはこちら。