Benutzerdefinierter codebasierter Evaluator
Mit benutzerdefinierten codebasierten Evaluatoren können Sie Ihre eigene AWS Lambda-Funktion verwenden, um die Agentenleistung programmgesteuert zu bewerten, anstatt einen LLM als Richter zu verwenden. Auf diese Weise haben Sie die volle Kontrolle über die Bewertungslogik — Sie können deterministische Prüfungen implementieren, externe APIs aufrufen, einen Regex-Abgleich ausführen, benutzerdefinierte Metriken berechnen oder beliebige geschäftsspezifische Regeln anwenden.
Voraussetzungen
Um benutzerdefinierte, auf Code basierende Evaluatoren zu verwenden, benötigen Sie:
-
Eine AWS Lambda-Funktion, die in derselben Region wie Ihre AgentCore Evaluationsressourcen bereitgestellt wird.
-
Eine IAM-Ausführungsrolle, die dem AgentCore Evaluationsdienst die Berechtigung erteilt, Ihre Lambda-Funktion aufzurufen.
IAM-Berechtigungen
Ihre Dienstausführungsrolle benötigt die folgende zusätzliche Berechtigung, um Lambda-Funktionen für die codebasierte Auswertung aufzurufen:
{ "Sid": "LambdaInvokeStatement", "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunction" ], "Resource": "arn:aws:lambda:region:account-id:function:function-name" }
Lambda-Funktionsvertrag
Anmerkung
Das maximale Laufzeit-Timeout für die Lambda-Funktion beträgt 5 Minuten (300 Sekunden). Die maximale Größe der Eingabe-Payload, die an die Lambda-Funktion gesendet wird, beträgt 6 MB.
Eingabeschema
Ihre Lambda-Funktion empfängt eine JSON-Nutzlast mit der folgenden Struktur:
{ "schemaVersion": "1.0", "evaluatorId": "my-evaluator-abc1234567", "evaluatorName": "MyCodeEvaluator", "evaluationLevel": "TRACE", "evaluationInput": { "sessionSpans": [...] }, "evaluationReferenceInputs": [], "evaluationTarget": { "traceIds": ["trace123"], "spanIds": ["span123"] } }
| Feld | Typ | Description |
|---|---|---|
|
|
Zeichenfolge |
Schemaversion der Nutzlast. Derzeit |
|
|
Zeichenfolge |
Die ID des codebasierten Evaluators. |
|
|
Zeichenfolge |
Der Name des codebasierten Evaluators. |
|
|
Zeichenfolge |
Die Bewertungsebene: |
|
|
Objekt |
Enthält die Sitzungsspannen für die Bewertung. |
|
|
Auflisten |
Die Sitzung dauert bis zur Auswertung. Kann gekürzt werden, wenn die ursprüngliche Nutzlast 6 MB überschreitet. |
|
|
Auflisten |
Referenzeingaben, die dem Evaluator zur Verfügung gestellt wurden und nach der Bewertungsebene gefiltert wurden. Weitere Informationen finden Sie unter Verwendung von Ground Truth in einem codebasierten Evaluator. |
|
|
Objekt |
Identifiziert die spezifischen Spuren oder Spannweiten, die ausgewertet werden sollen. Für Evaluatoren auf Sitzungsebene ist dieser Wert. |
|
|
Auflisten |
Die Trace-IDs des Bewertungsziels. Vorhanden für Evaluierungen auf Trace-Ebene und Tool-Ebene. |
|
|
Auflisten |
Die Span-IDs des Bewertungsziels. Vorhanden für Evaluierungen auf Tool-Ebene. |
Antwortschema
Ihre Lambda-Funktion muss ein JSON-Objekt zurückgeben, das einem von zwei Formaten entspricht:
Erfolgreiche Antwort
{ "label": "PASS", "value": 1.0, "explanation": "All validation checks passed." }
| Feld | Erforderlich | Typ | Description |
|---|---|---|---|
|
|
Ja |
Zeichenfolge |
Eine kategorische Bezeichnung für das Bewertungsergebnis (z. B. „BESTANDEN“, „FEHLGESCHLAGEN“, „Gut“, „Schlecht“). |
|
|
Nein |
Zahl |
Eine numerische Punktzahl (z. B. 0,0 bis 1,0). |
|
|
Nein |
Zeichenfolge |
Eine für Menschen lesbare Erklärung des Bewertungsergebnisses. |
Reaktion auf Fehler
{ "errorCode": "VALIDATION_FAILED", "errorMessage": "Input spans missing required tool call attributes." }
| Feld | Erforderlich | Typ | Description |
|---|---|---|---|
|
|
Ja |
Zeichenfolge |
Ein Code, der den Fehler identifiziert. |
|
|
Ja |
Zeichenfolge |
Eine menschenlesbare Beschreibung des Fehlers. |
Erstellen Sie einen codebasierten Evaluator
Die CreateEvaluator API erstellt einen codebasierten Evaluator, indem sie einen Lambda-Funktions-ARN und ein optionales Timeout angibt.
Erforderliche Parameter: Ein eindeutiger Evaluatorname, eine Evaluierungsebene (TRACETOOL_CALL, oderSESSION) und eine codebasierte Evaluatorkonfiguration, die den Lambda-ARN enthält.
Code-based Evaluator-Konfiguration:
{ "codeBased": { "lambdaConfig": { "lambdaArn": "arn:aws:lambda:region:account-id:function:function-name", "lambdaTimeoutInSeconds": 60 } } }
| Feld | Erforderlich | Standard | Description |
|---|---|---|---|
|
|
Ja |
— |
Der ARN der aufzurufenden Lambda-Funktion. |
|
|
Nein |
60 |
Timeout in Sekunden für den Lambda-Aufruf (1—300). |
Die folgenden Codebeispiele zeigen, wie codebasierte Evaluatoren mithilfe verschiedener Entwicklungsansätze erstellt werden.
Beispiel
Führen Sie eine On-Demand-Evaluierung mit einem codebasierten Evaluator durch
Nach der Erstellung können Sie den benutzerdefinierten codebasierten Evaluator mit der Evaluate API genauso verwenden, wie Sie jeden anderen Evaluator verwenden würden. Der Service verarbeitet Lambda-Aufrufe, paralleles Fan-Out und Ergebnis-Mapping automatisch.
Beispiel
Verwendung von Bewertungszielen
Sie können, genau wie bei LLM-based Evaluatoren, auf bestimmte Traces oder Spans abzielen:
# 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"]} )
Verwendung von Ground Truth in einem codebasierten Evaluator
Wenn Ground-Truth-Referenzeingänge konfiguriert sind, empfängt Ihre Lambda-Funktion sie vor evaluationReferenceInputs Ort. Die enthaltenen Referenzeingaben hängen von der Evaluierungsebene ab:
| Auswertungsdaten | Lambda erhält |
|---|---|
|
|
Alle Referenzeingaben. |
|
|
Session-level Referenzeingaben plus Referenzeingaben, die der Ziel-TraceID entsprechen. |
|
|
Session-level Referenzeingaben plus Referenzeingaben, die der Ziel-SpanID entsprechen. |
Anmerkung
Weitere Informationen zur Verwendung von Ground-Truth-Evaluationen finden Sie unter Ground-Truth-Evaluationen.
Führen Sie eine Online-Bewertung mit einem codebasierten Evaluator durch
Sie können einen benutzerdefinierten codebasierten Evaluator in einer Online-Testkonfiguration verwenden, um den Live-Traffic Ihres Agenten kontinuierlich zu überwachen. Übergeben Sie beim Anruf die Evaluator-ID in der evaluators Liste. CreateOnlineEvaluationConfig
Beispiel
Anmerkung
Wenn eine Online-Evaluierungskonfiguration aktiviert ist, die auf einen codebasierten Evaluator verweist, wird der Evaluator automatisch gesperrt und kann erst geändert oder gelöscht werden, wenn die Konfiguration deaktiviert oder gelöscht wird. Um Änderungen am Evaluator vorzunehmen, deaktivieren Sie zuerst die Online-Evaluierungskonfiguration oder klonen Sie den Evaluator und erstellen Sie eine neue Konfiguration.