Gen AI Evaluation Service の場合、評価データセットは通常、評価するモデル レスポンスとレスポンスの生成に使用される入力データで構成されます。また、グラウンド トゥルース レスポンスが含まれることもあります。
評価データセットのスキーマ
一般的なモデルベースの指標のユースケースでは、データセットに次の情報が含まれている必要があります。
入力タイプ | 入力フィールドの内容 |
---|---|
プロンプト | 生成 AI モデルまたはアプリケーションのユーザー入力。場合によっては省略可能。 |
レスポンス | 評価対象の LLM 推論レスポンス。 |
baseline_model_response(ペアワイズの指標で必須) | ペアワイズ評価で LLM レスポンスと比較するために使用されるベースラインの LLM 推論レスポンス |
Vertex AI SDK for Python の Gen AI Evaluation モジュールを使用すると、Gen AI Evaluation Service では、指定したモデルを使用して response
と baseline_model_response
を自動的に生成できます。
その他の評価のユースケースでは、追加で情報を提供する必要がある場合もあります。
マルチターンまたはチャット
入力タイプ | 入力フィールドの内容 |
---|---|
履歴 | 現在のターンの前にユーザーとモデルとの間で交わされた会話の履歴。 |
プロンプト | 現在のターンの生成 AI モデルまたはアプリケーションのユーザー入力。 |
レスポンス | 履歴および現在のターンのプロンプトに基づく評価対象の LLM 推論レスポンス。 |
baseline_model_response(ペアワイズの指標で必須) | 履歴および現在のターンのプロンプトに基づくペア評価で、LLM レスポンスと比較するために使用されるベースラインの LLM 推論レスポンス。 |
計算ベースの指標
データセットには、大規模言語モデルからのレスポンスと、比較用のリファレンスの両方が必要です。
入力タイプ | 入力フィールドの内容 |
---|---|
レスポンス | 評価対象の LLM 推論レスポンス。 |
リファレンス | LLM のレスポンスを比較するグラウンド トゥルース。 |
ユースケースに応じて、入力ユーザー プロンプトを instruction
や context
などの細かい部分に分割し、プロンプト テンプレートを指定して推論用に組み立てることもできます。必要に応じて、リファレンス情報またはグラウンド トゥルース情報を指定することもできます。
入力タイプ | 入力フィールドの内容 |
---|---|
指示 | 入力ユーザー プロンプトの一部。これは、LLM に送信される推論の指示を指します。たとえば、「次のテキストを要約してください」は指示です。 |
コンテキスト | 現在のターンの生成 AI モデルまたはアプリケーションのユーザー入力。 |
リファレンス | LLM のレスポンスを比較するグラウンド トゥルース。 |
評価データセットに必要な入力は、指標と一致している必要があります。指標のカスタマイズの詳細については、評価指標を定義すると評価を実行するをご覧ください。モデルベースの指標にリファレンス データを含める方法の詳細については、入力データに合わせて指標プロンプト テンプレートを調整するをご覧ください。
評価データセットをインポートする
データセットは次の形式でインポートできます。
Cloud Storage に保存されている JSONL または CSV ファイル
BigQuery テーブル
Pandas DataFrame
評価データセットの例
このセクションでは、Pandas Dataframe 形式を使用したデータセットの例を示します。ここでは例としていくつかのデータレコードのみを示していますが、評価データセットには通常 100 以上のデータポイントが含まれています。データセットを準備する際のベスト プラクティスについては、ベスト プラクティスのセクションをご覧ください。
ポイントワイズのモデルベースの指標
次は、ポイントワイズのモデルベース指標のサンプル データセットを示すための要約ケースです。
prompts = [
# Example 1
(
"Summarize the text in one sentence: As part of a comprehensive"
" initiative to tackle urban congestion and foster sustainable urban"
" living, a major city has revealed ambitious plans for an extensive"
" overhaul of its public transportation system. The project aims not"
" only to improve the efficiency and reliability of public transit but"
" also to reduce the city's carbon footprint and promote eco-friendly"
" commuting options. City officials anticipate that this strategic"
" investment will enhance accessibility for residents and visitors"
" alike, ushering in a new era of efficient, environmentally conscious"
" urban transportation."
),
# Example 2
(
"Summarize the text such that a five-year-old can understand: A team of"
" archaeologists has unearthed ancient artifacts shedding light on a"
" previously unknown civilization. The findings challenge existing"
" historical narratives and provide valuable insights into human"
" history."
),
]
responses = [
# Example 1
(
"A major city is revamping its public transportation system to fight"
" congestion, reduce emissions, and make getting around greener and"
" easier."
),
# Example 2
(
"Some people who dig for old things found some very special tools and"
" objects that tell us about people who lived a long, long time ago!"
" What they found is like a new puzzle piece that helps us understand"
" how people used to live."
),
]
eval_dataset = pd.DataFrame({
"prompt": prompts,
"response": responses,
})
ペアワイズのモデルベースの指標
次の例は、ペアワイズのモデルベース指標のサンプル データセットを示すための、オープンブック質問応答のケースを示しています。
prompts = [
# Example 1
(
"Based on the context provided, what is the hardest material? Context:"
" Some might think that steel is the hardest material, or even"
" titanium. However, diamond is actually the hardest material."
),
# Example 2
(
"Based on the context provided, who directed The Godfather? Context:"
" Mario Puzo and Francis Ford Coppola co-wrote the screenplay for The"
" Godfather, and the latter directed it as well."
),
]
responses = [
# Example 1
"Diamond is the hardest material. It is harder than steel or titanium.",
# Example 2
"Francis Ford Coppola directed The Godfather.",
]
baseline_model_responses = [
# Example 1
"Steel is the hardest material.",
# Example 2
"John Smith.",
]
eval_dataset = pd.DataFrame(
{
"prompt": prompts,
"response": responses,
"baseline_model_response": baseline_model_responses,
}
)
計算ベースの指標
計算ベースの指標では、多くの場合 reference
が必要です。
eval_dataset = pd.DataFrame({
"response": ["The Roman Senate was filled with exuberance due to Pompey's defeat in Asia."],
"reference": ["The Roman Senate was filled with exuberance due to successes against Catiline."],
})
ツール使用(関数呼び出し)の指標
次の例は、計算ベースのツール使用の指標の入力データを示しています。
json_responses = ["""{
"content": "",
"tool_calls":[{
"name":"get_movie_info",
"arguments": {"movie":"Mission Impossible", "time": "today 7:30PM"}
}]
}"""]
json_references = ["""{
"content": "",
"tool_calls":[{
"name":"book_tickets",
"arguments":{"movie":"Mission Impossible", "time": "today 7:30PM"}
}]
}"""]
eval_dataset = pd.DataFrame({
"response": json_responses,
"reference": json_references,
})
ベスト プラクティス
評価データセットを定義する際は、次のベスト プラクティスに従ってください。
- 本番環境で処理するモデルの入力タイプを表す例を提供します。
- データセットには少なくとも 1 つの評価例が含まれている必要があります。高品質の集計指標と統計的に有意な結果を確保するために、約 100 個の例をおすすめします。このサイズにより、集計された評価結果の信頼度を高め、外れ値の影響を最小限に抑えることができます。また、さまざまなシナリオでのモデルの真の能力をパフォーマンス指標に反映させることができます。集約指標の品質改善率は、400 を超える例を指定すると減少する傾向があります。
次のステップ
評価用のサンプル ノートブックを試す。