evalsを使用したエージェントのテスト
従来のソフトウェアテストには明確な合格/不合格の条件がありますが、AIの出力は非決定論的で、同じ入力でも結果が変わることがあります。evalsは、エージェントの品質を測定するための定量化可能なメトリクスを提供することで、このギャップを埋めるのに役立ちます。
evalsは、モデルベース、ルールベース、統計的手法を使用してエージェントの出力を評価する自動テストです。各evalは0-1の間の正規化されたスコアを返し、ログに記録して比較することができます。evalsは独自のプロンプトとスコアリング関数でカスタマイズできます。
evalsはクラウドで実行でき、リアルタイムの結果を取得できます。しかし、evalsはCI/CDパイプラインの一部にもなり、時間の経過とともにエージェントをテストし監視することができます。
Evalの種類
異なる種類のevalがあり、それぞれ特定の目的を果たします。一般的な種類をいくつか紹介します:
- テキストEval: エージェントの応答の正確性、信頼性、文脈理解を評価
- 分類Eval: 事前定義されたカテゴリに基づくデータ分類の精度を測定
- プロンプトエンジニアリングEval: 異なる指示と入力形式の影響を探る
はじめに
Evalsはエージェントに追加する必要があります。以下は要約、コンテンツ類似性、トーン一貫性メトリクスを使用した例です:
import { Agent } from "@mastra/core/agent";
import { openai } from "@ai-sdk/openai";
import { SummarizationMetric } from "@mastra/evals/llm";
import {
ContentSimilarityMetric,
ToneConsistencyMetric,
} from "@mastra/evals/nlp";
const model = openai("gpt-4o");
export const myAgent = new Agent({
name: "ContentWriter",
instructions: "You are a content writer that creates accurate summaries",
model,
evals: {
summarization: new SummarizationMetric(model),
contentSimilarity: new ContentSimilarityMetric(),
tone: new ToneConsistencyMetric(),
},
});
mastra dev
を使用する際、Mastraダッシュボードでeval結果を確認できます。
自動テストを超えて
自動evalは価値がありますが、高性能なAIチームは多くの場合、以下と組み合わせています:
- A/Bテスト: 実際のユーザーで異なるバージョンを比較
- 人間によるレビュー: 本番データとトレースの定期的なレビュー
- 継続的監視: 時間の経過とともにevalメトリクスを追跡してリグレッションを検出
Eval結果の理解
各evalメトリクスは、エージェントの出力の特定の側面を測定します。結果を解釈し、改善する方法は以下の通りです:
スコアの理解
任意のメトリクスについて:
- メトリクスのドキュメントを確認して、スコアリングプロセスを理解する
- スコアが変化するタイミングのパターンを探す
- 異なる入力とコンテキスト間でスコアを比較する
- 時間の経過に伴う変化を追跡してトレンドを把握する
結果の改善
スコアが目標に達していない場合:
- 指示を確認する - 明確ですか?より具体的にしてみてください
- コンテキストを確認する - エージェントが必要とするものを提供していますか?
- プロンプトを簡素化する - 複雑なタスクをより小さなステップに分割する
- ガードレールを追加する - 難しいケースに対する具体的なルールを含める
品質の維持
目標を達成したら:
- 安定性を監視する - スコアは一貫して保たれていますか?
- 効果的な方法を文書化する - 成功したアプローチについてメモを残す
- エッジケースをテストする - 異常なシナリオをカバーする例を追加する
- 微調整する - 効率を改善する方法を探す
evalができることの詳細については、Textual Evalsを参照してください。
独自のevalを作成する方法の詳細については、Custom Evalsガイドを参照してください。
CIパイプラインでevalを実行する方法については、Running in CIガイドを参照してください。