Erste Schritte mit der Batch-Auswertung
Diese exemplarische Vorgehensweise führt Sie von einem eingesetzten Agenten zu den Ergebnissen der Batch-Auswertung mithilfe eines Kundendienstmitarbeiters von Acme Store. Sie erstellen den Agenten, stellen ihn bereit, generieren Beispielsitzungen, führen eine Batch-Auswertung durch und lesen die Ergebnisse.
Themen
Bevor Sie beginnen
Stellen Sie Folgendes sicher:
-
Die AgentCore CLI ist installiert (
agentcore --version) -
AWS Anmeldeinformationen mit Berechtigungen für
bedrock-agentcoreundlogs -
Die Transaktionssuche ist aktiviert in CloudWatch
-
Python 3.10+ (für Boto3-Beispiele)
Vollständige Informationen finden Sie unter Voraussetzungen.
Die folgenden Konstanten werden in den boto3-Beispielen verwendet. Ersetzen Sie sie nach der Bereitstellung des Agenten durch Ihre eigenen Werte:
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"
Schritt 1: Den Beispielagenten erstellen und bereitstellen
Erstellen Sie ein AgentCore Projekt und ersetzen Sie den Standard-Agentencode durch den Kundendienstmitarbeiter von Acme Store. Dieser Mitarbeiter verfügt über fünf Tools für die Bearbeitung von Bestellungen, Rücksendungen, Versand, Rabatten und Eskalationen.
Erstellen des Projekts
agentcore create --name AcmeSupport --framework Strands --model-provider Bedrock --memory none cd AcmeSupport
Ersetzen Sie den Agentencode
Öffnen Sie den Inhalt app/AcmeSupport/main.py und ersetzen Sie ihn durch Folgendes:
"""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(payload.get("prompt", "Hello")) return {"response": str(result)} if __name__ == "__main__": app.run()
Bereitstellen und verifizieren
agentcore deploy
Stellen Sie nach der Bereitstellung sicher, dass der Agent ausgeführt wird:
agentcore invoke --prompt "What's the status of order ORD-1001?"
Sie sollten eine Antwort mit den Bestelldetails sehen. Notieren Sie sich den Runtime-ARN, den Dienstnamen und die Protokollgruppe von agentcore status --json — Sie benötigen diese für die boto3-Beispiele.
Anmerkung
Wenn Sie bereits einen Agenten auf AgentCore Runtime mit aktivierter Observability bereitgestellt haben, überspringen Sie diesen Schritt und verwenden Sie für den Rest der exemplarischen Vorgehensweise Ihren eigenen Agenten.
Schritt 2: Generieren Sie Beispielsitzungen
Rufen Sie den Agenten mit verschiedenen Eingabeaufforderungen auf, um Sitzungen zur Evaluierung zu erstellen. Diese Eingabeaufforderungen decken verschiedene Szenarien ab: Bestellanfragen, Rücksendungen, Versandverzögerungen, Rabattanfragen und Interaktionen mit mehreren Tools.
Beispiel
Warten Sie nach dem letzten Aufruf 2—3 Minuten, bis die Telemetriedaten aufgenommen wurden CloudWatch , bevor Sie fortfahren.
Schritt 3: Führen Sie die Batch-Auswertung durch
Starten Sie eine Batch-Auswertung, um alle letzten Sitzungen zu bewerten. Der Dienst erkennt Sitzungen anhand von CloudWatch Protokollen, führt jeden Evaluator für jede Sitzung aus und gibt aggregierte Ergebnisse zurück.
Beispiel
Schritt 4: Lesen Sie die Details pro Sitzung
Die Gesamtpunktzahlen geben Ihnen einen Überblick über das Gesamtbild. Verwenden Sie die integrierten CLI-Anzeigebefehle oder lesen Sie die Evaluierungsereignisse direkt aus den Protokollen, um die Ergebnisse pro Runde und pro Evaluator für einzelne Sitzungen zu sehen. CloudWatch
Beispiel
Nächste Schritte
-
Sitzungen filtern — Bewerten Sie bestimmte Sitzungen nach ID oder Zeitraum. Siehe Eine Batch-Auswertung starten.
-
Anhand eines Datensatzes ausführen — Rufen Sie Ihren Agenten anhand vordefinierter Szenarien auf und werten Sie die Ergebnisse automatisch aus. Siehe Auswertung von Datensätzen.
-
Durchläufe vergleichen — Führen Sie vor und nach einer Änderung eine Batch-Auswertung durch und vergleichen Sie die Ergebnisse. Weitere Informationen finden Sie unter Ergebnisse und Ergebnisse verstehen.