Memulai dengan evaluasi batch
Panduan ini membawa Anda dari agen yang digunakan ke hasil evaluasi batch menggunakan agen dukungan pelanggan Acme Store. Anda akan membuat agen, menerapkannya, menghasilkan sesi sampel, menjalankan evaluasi batch, dan membaca hasilnya.
Topik
Sebelum Anda mulai
Pastikan Anda memiliki:
-
AgentCore CLI diinstal ()
agentcore --version -
AWS kredensyal dengan izin untuk dan
bedrock-agentcorelogs -
Penelusuran Transaksi diaktifkan di CloudWatch
-
Python 3.10+ (untuk contoh boto3)
Untuk detail selengkapnya, lihat Prasyarat.
Konstanta berikut digunakan dalam contoh boto3. Ganti dengan nilai Anda sendiri setelah menerapkan agen:
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"
Langkah 1: Buat dan gunakan agen sampel
Buat AgentCore proyek dan ganti kode agen default dengan agen dukungan pelanggan Acme Store. Agen ini memiliki lima alat untuk menangani pesanan, pengembalian, pengiriman, diskon, dan eskalasi.
Buat proyek
agentcore create --name AcmeSupport --framework Strands --model-provider Bedrock --memory none cd AcmeSupport
Ganti kode agen
Buka app/AcmeSupport/main.py dan ganti isinya dengan yang berikut:
"""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()
Menyebarkan dan memverifikasi
agentcore deploy
Setelah penerapan, verifikasi agen sedang berjalan:
agentcore invoke --prompt "What's the status of order ORD-1001?"
Anda akan melihat respons dengan detail pesanan. Perhatikan ARN runtime, nama layanan, dan grup log agentcore status --json dari — Anda akan memerlukannya untuk contoh boto3.
catatan
Jika Anda sudah memiliki agen yang digunakan di AgentCore Runtime dengan observabilitas diaktifkan, lewati langkah ini dan gunakan agen Anda sendiri untuk penelusuran lainnya.
Langkah 2: Hasilkan sesi sampel
Panggil agen dengan berbagai petunjuk untuk membuat sesi evaluasi. Petunjuk ini mencakup skenario yang berbeda: pencarian pesanan, pengembalian, penundaan pengiriman, permintaan diskon, dan interaksi multi-alat.
contoh
Tunggu 2-3 menit setelah doa terakhir untuk menelan telemetri CloudWatch sebelum melanjutkan.
Langkah 3: Jalankan evaluasi batch
Mulai evaluasi batch untuk mencetak semua sesi terakhir. Layanan menemukan sesi dari CloudWatch Log, menjalankan setiap evaluator terhadap setiap sesi, dan mengembalikan hasil agregat.
contoh
Langkah 4: Baca detail per sesi
Skor agregat memberi tahu Anda gambaran keseluruhan. Untuk melihat skor per-putaran, per-evaluator untuk sesi individual, gunakan perintah tampilan CLI bawaan atau baca peristiwa evaluasi langsung dari Log. CloudWatch
contoh
Langkah selanjutnya
-
Sesi filter - Evaluasi sesi tertentu berdasarkan ID atau rentang waktu. Lihat Memulai evaluasi batch.
-
Jalankan terhadap kumpulan data — Panggil agen Anda terhadap skenario yang telah ditentukan dan evaluasi hasilnya secara otomatis. Lihat Evaluasi Dataset.
-
Bandingkan proses — Jalankan evaluasi batch sebelum dan sesudah perubahan dan bandingkan skor. Lihat Memahami hasil dan output.