View a markdown version of this page

Lancer l'évaluation par lots - Amazon Bedrock AgentCore

Lancer l'évaluation par lots

Lancez une évaluation par lots pour exécuter les évaluateurs sur plusieurs sessions d'agent. Le service découvre les sessions à partir CloudWatch des journaux, exécute chaque évaluateur par rapport à chaque session et produit des résultats agrégés.

Exemples de code

Exemple
AgentCore CLI

La CLI résout logGroupNames automatiquement serviceNames et automatiquement à partir de la configuration du projet lorsque vous utilisez --runtime :

agentcore run batch-evaluation \ --runtime MyAgent \ --evaluator Builtin.GoalSuccessRate Builtin.Helpfulness Builtin.Faithfulness

Avec des drapeaux optionnels :

# Custom name and lookback window agentcore run batch-evaluation \ --runtime MyAgent \ --evaluator Builtin.GoalSuccessRate \ --name my_baseline_eval \ --lookback-days 1 # Specific sessions agentcore run batch-evaluation \ --runtime MyAgent \ --evaluator Builtin.GoalSuccessRate \ --session-ids session-abc123 session-def456 # With ground truth agentcore run batch-evaluation \ --runtime MyAgent \ --evaluator Builtin.GoalSuccessRate Builtin.Correctness \ --ground-truth ground-truth.json

Par défaut, la commande démarre la tâche et revient immédiatement. Passez --wait au bloc jusqu'à ce que la tâche atteigne un état terminal (COMPLETEDFAILED, ouSTOPPED), après quoi la CLI affiche les scores moyens par évaluateur et enregistre les résultats dans. .cli/jobs/batch-eval-results/

agentcore run batch-evaluationprend également en charge les drapeaux suivants :

  • --wait— bloquer jusqu'à ce que la tâche atteigne un état terminal.

  • --json— émet une sortie JSON lisible par machine.

  • --kms-key <arn>— chiffrez les résultats d'évaluation par lots à l'aide d'une clé KMS gérée par le client.

  • --dataset <name>/--dataset-version <version>— invoque l'agent avec des scénarios d'ensembles de données avant l'évaluation par lots (omettez la version d'un fichier local ou utilisezN/DRAFT).

  • --endpoint <name>— cible un point de terminaison d'exécution spécifique (par exemple,PROMPT_V1) ; la valeur par défaut est alors DEFAULT la variable d'AGENTCORE_RUNTIME_ENDPOINTenvironnement.

  • --evaluator-arn <arns…​>— référencez les évaluateurs par ARN au lieu de. -e

    La plupart des drapeaux ont des alias courts : -r (--runtime), -e (--evaluator), -n (--name), -d (--lookback-days), -s (--session-ids) et -g (--ground-truth).

    Pour gérer une tâche après son démarrage, exécutez agentcore stop batch-evaluation -i <id> pour arrêter une tâche en cours d'exécution et agentcore archive batch-evaluation -i <id> pour archiver un enregistrement de tâche.

AWS SDK (boto3)
import boto3 import uuid import time import json client = boto3.client("bedrock-agentcore", region_name="us-west-2") # All sessions in the log group response = client.start_batch_evaluation( batchEvaluationName=f"baseline_eval_{uuid.uuid4().hex[:8]}", evaluators=[ {"evaluatorId": "Builtin.GoalSuccessRate"}, {"evaluatorId": "Builtin.Helpfulness"}, {"evaluatorId": "Builtin.Faithfulness"}, ], dataSourceConfig={ "cloudWatchLogs": { "serviceNames": ["MyAgent.DEFAULT"], "logGroupNames": ["/aws/bedrock-agentcore/runtimes/MyAgent-abc123-DEFAULT"], } }, clientToken=str(uuid.uuid4()), ) batch_eval_id = response["batchEvaluationId"] print(f"Started: {batch_eval_id}") # Poll until complete while True: result = client.get_batch_evaluation(batchEvaluationId=batch_eval_id) status = result["status"] print(f"Status: {status}") if status in ("COMPLETED", "COMPLETED_WITH_ERRORS", "FAILED", "STOPPED"): break time.sleep(30) print(json.dumps(result, indent=4, default=str))

Avec le filtrage des identifiants de session :

response = client.start_batch_evaluation( batchEvaluationName=f"targeted-eval-{uuid.uuid4().hex[:8]}", evaluators=[ {"evaluatorId": "Builtin.GoalSuccessRate"}, ], dataSourceConfig={ "cloudWatchLogs": { "serviceNames": ["MyAgent.DEFAULT"], "logGroupNames": ["/aws/bedrock-agentcore/runtimes/MyAgent-abc123-DEFAULT"], "filterConfig": { "sessionIds": ["session-001", "session-002", "session-003"] }, } }, clientToken=str(uuid.uuid4()), )

Avec le filtrage par plage de temps :

from datetime import datetime, timedelta, timezone now = datetime.now(timezone.utc) response = client.start_batch_evaluation( batchEvaluationName=f"weekly-eval-{uuid.uuid4().hex[:8]}", evaluators=[ {"evaluatorId": "Builtin.GoalSuccessRate"}, ], dataSourceConfig={ "cloudWatchLogs": { "serviceNames": ["MyAgent.DEFAULT"], "logGroupNames": ["/aws/bedrock-agentcore/runtimes/MyAgent-abc123-DEFAULT"], "filterConfig": { "timeRange": { "startTime": (now - timedelta(days=7)).isoformat(), "endTime": now.isoformat(), } }, } }, clientToken=str(uuid.uuid4()), )

Paramètres de demande

Paramètre Type Obligatoire Description

batchEvaluationName

String

Oui

Nom de la tâche d'évaluation par lots. Motif : commence par une lettre, alphanumérique et traits de soulignement, 48 caractères maximum.

dataSourceConfig

Objet

Oui

Où trouver les sessions des agents. Spécifiez une cloudWatchLogs source avec les groupes de journaux et le nom de service de votre agent. Reportez-vous à Source de session ci-dessous.

evaluators

List

Oui

Liste des évaluateurs. Chaque entrée possède un evaluatorId champ (par exemple,Builtin.GoalSuccessRate). Maximum de 10 évaluateurs.

evaluationMetadata

Objet

Non

Contient sessionMetadata une liste de données de base et de métadonnées par session. Maximum de 500 entrées.

clientToken

String

Non

Jeton d'impuissance. Si vous réessayez une demande avec le même jeton client, le service renvoie la tâche existante au lieu d'en créer une nouvelle.

Source de session

Le dataSourceConfig paramètre indique l'emplacement CloudWatch des journaux où le service découvre les sessions de l'agent.

Champs obligatoires

Champ Type Description

cloudWatchLogs.serviceNames

Liste des chaînes (exactement 1)

Le nom du service qui identifie les traces de votre agent dans CloudWatch. Convention :{RuntimeName}.DEFAULT.

cloudWatchLogs.logGroupNames

Liste des chaînes (1 à 5)

CloudWatch noms des groupes de journaux dans lesquels la télémétrie des agents est stockée. Convention :/aws/bedrock-agentcore/runtimes/{agentId}-DEFAULT.

Champs facultatifs

Champ Type Description

cloudWatchLogs.filterConfig.sessionIds

Liste de chaînes

Évaluez uniquement ces identifiants de session spécifiques. En cas d'omission, le service découvre toutes les sessions du groupe de journaux.

cloudWatchLogs.filterConfig.timeRange.startTime

Date/heure ISO 8601

Filtrez les sessions créées après cette période.

cloudWatchLogs.filterConfig.timeRange.endTime

Date/heure ISO 8601

Filtrez les sessions créées avant cette date.

Réponse

Champ Type Description

batchEvaluationId

String

Identifiant unique pour l'évaluation du lot.

batchEvaluationArn

String

ARN de l'évaluation par lots.

batchEvaluationName

String

Le nom que vous avez spécifié.

status

String

Statut initial. L'un des :PENDING,IN_PROGRESS.

evaluators

List

Les évaluateurs utilisés.

createdAt

Horodatage

Date de création de l'emploi.

outputConfig

Objet

CloudWatch Enregistre la destination des résultats par session.

Erreurs

Erreur Statut HTTP Description

ValidationException

400

Paramètres de demande non valides. Vérifiez les contraintes de champs et les champs obligatoires.

AccessDeniedException

403

Autorisations insuffisantes. Vérifiez les politiques IAM.

ConflictException

409

Une évaluation par lots avec le même jeton client existe déjà avec des paramètres différents.

ThrottlingException

429

Le taux de demandes a été dépassé. Réessayez avec un recul exponentiel.

InternalServerException

500

Service-side erreur. Réitérez la demande.