Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Commencer à utiliser l'évaluation par lots
Cette procédure pas à pas vous permet de passer d'un agent déployé à des résultats d'évaluation par lots à l'aide d'un agent du support client d'Acme Store. Vous allez créer l'agent, le déployer, générer des exemples de sessions, exécuter une évaluation par lots et lire les résultats.
Rubriques
Avant de commencer
Assurez-vous d’avoir :
-
La AgentCore CLI installée (
agentcore --version) -
AWS informations d'identification avec autorisations pour
bedrock-agentcoreetlogs -
Recherche de transactions activée dans CloudWatch
-
Python 3.10+ (pour les exemples boto3)
Pour plus de détails, consultez la section Prérequis.
Les constantes suivantes sont utilisées dans les exemples boto3. Remplacez-les par vos propres valeurs après avoir déployé l'agent :
REGION = "us-west-2" AGENT_ARN = "arn:aws:bedrock-agentcore:us-west-2:123456789012:runtime/AcmeSupport-abc123" SERVICE_NAME = "AcmeSupport-abc123.DEFAULT" LOG_GROUP = "/aws/bedrock-agentcore/runtimes/AcmeSupport-abc123-DEFAULT"
Étape 1 : Création et déploiement de l'exemple d'agent
Créez un AgentCore projet et remplacez le code d'agent par défaut par l'agent du support client d'Acme Store. Cet agent dispose de cinq outils pour gérer les commandes, les retours, les expéditions, les remises et les escalades.
Création du projet
agentcore create --name AcmeSupport --framework Strands --model-provider Bedrock --memory none cd AcmeSupport
Remplacez le code de l'agent
Ouvrez app/AcmeSupport/main.py et remplacez son contenu par le texte suivant :
"""Acme Store customer support agent.""" from strands import Agent, tool from strands.models.bedrock import BedrockModel from bedrock_agentcore.runtime import BedrockAgentCoreApp app = BedrockAgentCoreApp() MODEL_ID = "global.anthropic.claude-sonnet-4-6" SYSTEM_PROMPT = ( "You are a helpful customer support assistant for Acme Store. " "Help customers with their orders, returns, and shipping questions." ) @tool def lookup_order(order_id: str) -> str: """Look up an order by ID and return its status, item, and delivery details.""" orders = { "ORD-1001": { "status": "delivered", "item": "Blue T-Shirt (L)", "delivered": "2026-03-28", "total": "$29.99", }, "ORD-1002": { "status": "in_transit", "item": "Running Shoes (10)", "shipped": "2026-03-30", "est_delivery": "2026-04-05", "total": "$89.99", }, "ORD-1003": { "status": "delayed", "item": "Wireless Headphones", "shipped": "2026-03-25", "est_delivery": "2026-03-29", "days_late": 5, "total": "$59.99", }, "ORD-1004": { "status": "processing", "item": "Yoga Mat", "ordered": "2026-04-02", "total": "$34.99", }, "ORD-1005": { "status": "delivered", "item": "Coffee Maker", "delivered": "2026-03-20", "total": "$149.99", }, } return str(orders.get(order_id, {"error": f"Order {order_id} not found"})) @tool def initiate_return(order_id: str, reason: str) -> str: """Initiate a return for an order. Sends a return label to the customer.""" return ( f"Return initiated for {order_id}. Reason: {reason}. " "Return label sent to customer email. Please ship within 14 days." ) @tool def check_shipping_status(order_id: str) -> str: """Check detailed shipping status including carrier location and delays.""" statuses = { "ORD-1002": ( "Package is with carrier, currently in Portland OR. " "On schedule for April 5." ), "ORD-1003": ( "Package delayed at distribution center in Memphis TN. " "Original delivery was March 29. Now 5 days late. " "Acme Store policy: orders delayed 3+ days qualify for 15% discount." ), } return statuses.get(order_id, f"No active shipment found for {order_id}.") @tool def apply_discount(order_id: str, discount_percent: int, reason: str) -> str: """Apply a percentage discount to an order and issue a refund.""" return ( f"Applied {discount_percent}% discount to {order_id}. " f"Reason: {reason}. Refund will appear in 3-5 business days." ) @tool def escalate_to_human(reason: str) -> str: """Escalate the conversation to a human support agent.""" return ( f"Escalated to human agent. Reason: {reason}. " "Estimated wait time: 3 minutes." ) agent = Agent( model=BedrockModel(model_id=MODEL_ID), tools=[lookup_order, initiate_return, check_shipping_status, apply_discount, escalate_to_human], system_prompt=SYSTEM_PROMPT, ) @app.entrypoint def invoke(payload, context): result = agent(str(payload.get("prompt", "Hello"))) return {"response": str(result)} if __name__ == "__main__": app.run()
Déploiement et vérification
agentcore deploy
Après le déploiement, vérifiez que l'agent est en cours d'exécution :
agentcore invoke --prompt "What's the status of order ORD-1001?"
Vous devriez voir une réponse contenant les détails de la commande. Notez l'ARN d'exécution, le nom du service et le groupe de agentcore status --json journaux. Vous en aurez besoin pour les exemples boto3.
Note
Si vous avez déjà déployé un agent sur AgentCore Runtime avec l'observabilité activée, ignorez cette étape et utilisez votre propre agent pour le reste de la procédure pas à pas.
Étape 2 : générer des exemples de sessions
Invoquez l'agent à l'aide de différentes instructions pour créer des sessions d'évaluation. Ces instructions couvrent différents scénarios : recherches de commandes, retours, retards d'expédition, demandes de remises et interactions multi-outils.
Exemple
Attendez 2 à 3 minutes après le dernier appel pour CloudWatch ingérer la télémétrie avant de continuer.
Étape 3 : Exécuter l'évaluation par lots
Lancez une évaluation par lots pour attribuer une note à toutes les sessions récentes. Le service découvre les sessions à partir CloudWatch des journaux, exécute chaque évaluateur pour chaque session et renvoie des résultats agrégés.
Exemple
Étape 4 : Lire les détails par session
Les notes agrégées vous donnent une vue d'ensemble. Pour voir les scores par tour et par évaluateur pour les sessions individuelles, utilisez les commandes d'affichage intégrées de l'interface de ligne de commande ou lisez les événements d'évaluation directement dans les journaux. CloudWatch
Exemple
Étapes suivantes
-
Filtrer les sessions : évaluez des sessions spécifiques par identifiant ou par plage horaire. Consultez la section Démarrer une évaluation par lots.
-
Exécuter avec un ensemble de données : appelez votre agent en fonction de scénarios prédéfinis et évaluez les résultats automatiquement. Voir Évaluation de l'ensemble de données.
-
Comparez les essais : effectuez une évaluation par lots avant et après une modification et comparez les scores. Consultez la section Comprendre les résultats et les résultats.