カスタムコードベースの評価者
カスタムコードベースの評価者を使用すると、LLM を審査員として使用する代わりに、独自の AWS Lambda 関数を使用してプログラムでエージェントのパフォーマンスを評価できます。これにより、評価ロジックを完全に制御できます。確定的なチェックを実装したり、外部 APIs呼び出したり、正規表現マッチングを実行したり、カスタムメトリクスを計算したり、ビジネス固有のルールを適用したりできます。
前提条件
カスタムコードベースの評価者を使用するには、以下が必要です。
-
AgentCore評価リソースと同じリージョンにデプロイされた AWS Lambda 関数。
-
AgentCore評価サービスに Lambda 関数を呼び出すアクセス許可を付与する IAM 実行ロール。
-
Lambda 関数は、レスポンススキーマで説明されているレスポンススキーマに準拠した JSON レスポンススキーマレスポンスを返す必要があります。
IAM アクセス許可
サービス実行ロールには、コードベースの評価のために Lambda 関数を呼び出すための次の追加のアクセス許可が必要です。
{ "Sid": "LambdaInvokeStatement", "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunction" ], "Resource": "arn:aws:lambda:region:account-id:function:function-name" }
Lambda 関数契約
注記
Lambda 関数の最大ランタイムタイムアウトは 5 分 (300 秒) です。Lambda 関数に送信される入力ペイロードの最大サイズは 6 MB です。
入力スキーマ
Lambda 関数は、次の構造を持つ JSON ペイロードを受け取ります。
{ "schemaVersion": "1.0", "evaluatorId": "my-evaluator-abc1234567", "evaluatorName": "MyCodeEvaluator", "evaluationLevel": "TRACE", "evaluationInput": { "sessionSpans": [...] }, "evaluationReferenceInputs": [], "evaluationTarget": { "traceIds": ["trace123"], "spanIds": ["span123"] } }
| フィールド | タイプ | 説明 |
|---|---|---|
|
|
文字列 |
ペイロードのスキーマバージョン。現在 |
|
|
String |
コードベースの評価者の ID。 |
|
|
String |
コードベースの評価者の名前。 |
|
|
String |
評価レベル: |
|
|
オブジェクト |
評価用のセッションスパンが含まれます。 |
|
|
リスト |
評価するセッションは にまたがります。元のペイロードが 6 MB を超える場合、切り捨てられることがあります。 |
|
|
リスト |
評価レベルに基づいてフィルタリングされた、評価者に提供されるリファレンス入力。「コードベースの評価者でのグラウンドトゥルースの使用」を参照してください。 |
|
|
オブジェクト |
評価する特定のトレースまたはスパンを識別します。セッションレベルの評価者の場合、この値は です |
|
|
リスト |
評価ターゲットのトレース IDs。トレースレベルとツールレベルの評価に存在します。 |
|
|
リスト |
評価ターゲットのスパン IDs。ツールレベルの評価に存在します。 |
レスポンススキーマ
Lambda 関数は、次の 2 つの形式のいずれかに一致する JSON オブジェクトを返す必要があります。
成功レスポンス
{ "label": "PASS", "value": 1.0, "explanation": "All validation checks passed." }
| フィールド | 必要 | 型 | [Description] (説明) |
|---|---|---|---|
|
|
はい |
String |
評価結果のカテゴリラベル (「PASS」、「FAIL」、「Good」、「Poor」など)。 |
|
|
いいえ |
Number |
数値スコア (0.0~1.0 など)。 |
|
|
いいえ |
String |
人間が読める評価結果の説明。 |
エラーレスポンス
{ "errorCode": "VALIDATION_FAILED", "errorMessage": "Input spans missing required tool call attributes." }
| フィールド | 必要 | 型 | [Description] (説明) |
|---|---|---|---|
|
|
はい |
String |
エラーを識別するコード。 |
|
|
はい |
String |
人が読み取り可能なエラーの説明。 |
コードベースの評価者を作成する
CreateEvaluator API は、Lambda 関数 ARN とオプションのタイムアウトを指定して、コードベースの評価者を作成します。
必須パラメータ: 一意の評価者名、評価レベル (TRACE、TOOL_CALL、または SESSION )、および Lambda ARN を含むコードベースの評価者設定。
コードベースの評価者設定:
{ "codeBased": { "lambdaConfig": { "lambdaArn": "arn:aws:lambda:region:account-id:function:function-name", "lambdaTimeoutInSeconds": 60 } } }
| フィールド | [Required] (必須) | デフォルト | [Description] (説明) |
|---|---|---|---|
|
|
はい |
— |
呼び出す Lambda 関数の ARN。 |
|
|
いいえ |
60 |
Lambda 呼び出しの秒単位のタイムアウト (1~300)。 |
次のコードサンプルは、さまざまな開発アプローチを使用してコードベースの評価者を作成する方法を示しています。
例
コードベースの評価者を使用してオンデマンド評価を実行する
作成したら、他の評価者を使用するのと同じ方法で、EvaluateAPI でカスタムコードベースの評価者を使用します。このサービスは、Lambda 呼び出し、並列ファンアウト、結果マッピングを自動的に処理します。
例
評価ターゲットの使用
LLM ベースの評価者と同様に、特定のトレースまたはスパンをターゲットにできます。
# Trace-level evaluation response = client.evaluate( evaluatorId="code-based-evaluator-id", evaluationInput={"sessionSpans": session_span_logs}, evaluationTarget={"traceIds": ["trace-id-1", "trace-id-2"]} ) # Tool-level evaluation response = client.evaluate( evaluatorId="code-based-evaluator-id", evaluationInput={"sessionSpans": session_span_logs}, evaluationTarget={"spanIds": ["span-id-1", "span-id-2"]} )
コードベースの評価者でのグラウンドトゥルースの使用
Ground Truth リファレンス入力が設定されている場合、Lambda 関数は evaluationReferenceInputs フィールドでそれらを受け取ります。含まれるリファレンス入力は、評価レベルによって異なります。
| 評価レベル | Lambda が受信する |
|---|---|
|
|
すべてのリファレンス入力。 |
|
|
セッションレベルのリファレンス入力と、ターゲット traceId に一致するリファレンス入力。 |
|
|
セッションレベルのリファレンス入力と、ターゲット spanId に一致するリファレンス入力。 |
注記
グラウンドトゥルース評価の使用の詳細については、「グラウンドトゥルース評価」を参照してください。
コードベースの評価者を使用してオンライン評価を実行する
オンライン評価設定でカスタムコードベースの評価者を使用して、エージェントのライブトラフィックを継続的にモニタリングできます。を呼び出すときにevaluators、リスト内の評価者 ID を渡しますCreateOnlineEvaluationConfig。
例
注記
コードベースの評価者を参照するオンライン評価設定が有効になっている場合、評価者は自動的にロックされ、設定が無効または削除されるまで変更または削除することはできません。評価者を変更するには、最初にオンライン評価設定を無効にするか、評価者のクローンを作成して新しい設定を作成します。