View a markdown version of this page

Jalankan A/B tes untuk agen yang dihosting di luar AgentCore - Batuan Dasar Amazon AgentCore

Jalankan A/B tes untuk agen yang dihosting di luar AgentCore

Anda dapat A/B menguji agen yang berjalan di luar AgentCore Runtime dengan agen yang dihosting di mana saja, misalnya di AWS Lambda, Amazon EKS, atau Amazon ECS. Untuk agen A/B pengujian, AgentCore gateway merutekan lalu lintas antar varian, skor evaluasi online setiap sesi, dan layanan menghitung signifikansi statistik per varian. Ketika agen Anda tidak berada di AgentCore Runtime, Anda perlu menginstruksinya untuk observabilitas dan mendaftarkannya sebagai target AgentCore gateway sendiri, dan mengaktifkan penelusuran gateway sehingga sesi dapat dikaitkan dengan varian.

A/B tes mendukung bundel konfigurasi dengan runtime agen tunggal serta perutean berbasis target dengan dua titik akhir agen. Halaman ini menunjukkan cara menyiapkan titik akhir agen yang dapat dijangkau HTTP sebagai target pada AgentCore gateway dengan penelusuran diaktifkan. Kemudian, AgentCore gateway tracing menyediakan atribusi varian, dan observabilitas pada titik akhir agen menyediakan konten pesan untuk penilaian.

Halaman ini adalah tambahan untuk Menjalankan A/B pengujian dengan perutean berbasis target. Ini hanya mencakup pengaturan tambahan yang dibutuhkan agen non-runtime — menggunakan Lambda-hosted agen (di belakang URL fungsi) sebagai contoh; pendekatan yang sama berlaku untuk titik akhir HTTP-reachable agen apa pun yang Anda daftarkan sebagai target AgentCore gateway — kemudian mengirim Anda kembali ke halaman itu untuk membuat dan menjalankan pengujian.

Prasyarat

Selain prasyarat A/B pengujian umum, Anda perlu:

  1. AgentCore gateway tracing diaktifkan pada gateway sehingga sesi dapat dikaitkan dengan varian.

  2. Agen Anda ditambahkan sebagai target passthrough pada AgentCore gateway menggunakan protokol yang didukung.

Langkah 1: Instrumen agen Anda untuk AgentCore observabilitas

Untuk Lambda-hosted agen, lampirkan Layer AWS Lambda untuk OpenTelemetry dan atur variabel lingkungan berikut:

aws lambda update-function-configuration \ --function-name <function-name> \ --region <region> \ --layers <adot-python-layer-arn> \ --environment "Variables={ AGENT_OBSERVABILITY_ENABLED=true, OTEL_PROPAGATORS='baggage,xray-lambda,tracecontext', OTEL_PYTHON_DISTRO=aws_distro, OTEL_PYTHON_CONFIGURATOR=aws_configurator, OTEL_LOGS_EXPORTER=otlp, OTEL_TRACES_EXPORTER=otlp, OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf, OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED=true, OTEL_AWS_APPLICATION_SIGNALS_ENABLED=false, OTEL_EXPORTER_OTLP_LOGS_HEADERS='x-aws-log-group=/aws/bedrock-agentcore/agents/<function-name>/runtime-logs,x-aws-log-stream=runtime-logs,x-aws-metric-namespace=agentcore', OTEL_RESOURCE_ATTRIBUTES='service.name=<function-name>', AWS_LAMBDA_EXEC_WRAPPER=/opt/otel-instrument }"

Penangan Lambda minimal yang mem-parsing permintaan URL fungsi dan menyetel bagasi sesi:

import base64, json from strands import Agent from strands.models.bedrock import BedrockModel from opentelemetry import baggage, context _model = BedrockModel(model_id="global.anthropic.claude-sonnet-4-5-20250929-v1:0") def lambda_handler(event, _context): # Lambda function URL payload format 2.0: JSON body is in event["body"], no httpMethod. raw = event.get("body") if raw is not None and event.get("isBase64Encoded"): raw = base64.b64decode(raw).decode() body = json.loads(raw) if isinstance(raw, str) else (raw or event) session_id = _session_id(event) token = context.attach(baggage.set_baggage("session.id", session_id)) try: agent = Agent(model=_model, system_prompt="You are a helpful assistant. Be concise.") result = agent(body.get("prompt", "Hello")) finally: context.detach(token) return {"response": str(result), "sessionId": session_id} def _session_id(event): return (event.get("headers") or {}).get("x-session-id") or "default"

Untuk perutean berbasis target, gunakan ini dua kali (kontrol dan perawatan) dengan perubahan yang Anda uji — misalnya, prompt yang berbeda model_id atau sistem.

Langkah 2: Paparkan agen Anda melalui HTTP

Agen harus dapat dijangkau pada titik akhir HTTP yang dapat dipanggil AgentCore gateway. Untuk contoh Lambda, buat URL fungsi dengan autentikasi IAM untuk setiap fungsi:

aws lambda create-function-url-config \ --function-name cs-agent-control \ --auth-type AWS_IAM \ --region us-west-2

Ulangi untuk fungsi perawatan. (Untuk kontainer atau agen yang dihosting sendiri, buka titik akhir HTTPS sebagai gantinya dan lewati ke Langkah 3.)

Langkah 3: Daftarkan agen Anda sebagai target AgentCore gateway

Daftarkan setiap titik akhir sebagai target passthrough HTTP pada gateway. AgentCore Untuk detail target passthrough — termasuk opsi, kekakuanprotocolType, dan kredensialnya — lihat target passthrough HTTP.

Untuk mendaftarkan URL fungsi Lambda sebagai target, atur protocolType ke CUSTOM dan berikan file. iamCredentialProvider Penyedia kredensi mengotorisasi gateway untuk menandatangani setiap permintaan keluar ke URL fungsi sebagai layanan: lambda

catatan
  • stickinessConfigurationMemberi tahu gateway untuk menggunakan x-session-id header untuk mengenali permintaan mana yang termasuk dalam sesi yang sama. Kelengketan sesi membuat sesi dalam penerbangan tidak terpengaruh saat Anda memulai atau menghentikan A/B tes: gateway terus merutekan sesi yang sedang berlangsung ke target yang sama dengan yang telah ditetapkan, dan hanya mengarahkan sesi baru sesuai dengan bobot perawatan A/B pengujian Anda saat tes sedang berjalan.

  • Untuk observabilitas, agen Anda juga harus menetapkan ID sesi yang sama ini dalam konteks pelacakannya (misalnya, sebagai session.id bagasi). Ini memungkinkan sesi dan jejak agen skor evaluasi online, dan menghubungkannya dengan perawatan A/B tes yang benar.

contoh
AgentCore CLI
agentcore add gateway-target \ --name customer-support-control \ --gateway cs-3p-abtest-gw \ --type passthrough \ --passthrough-endpoint https://<control-id>.lambda-url.us-west-2.on.aws/ \ --passthrough-protocol CUSTOM \ --stickiness-identifier '$context.header.x-session-id' \ --stickiness-timeout 28800 \ --signing-service lambda \ --signing-region us-west-2
AWS CLI
aws bedrock-agentcore-control create-gateway-target \ --gateway-identifier cs-3p-abtest-gw-abc123 \ --name customer-support-control \ --region us-west-2 \ --target-configuration '{ "http": { "passthrough": { "endpoint": "https://<control-id>.lambda-url.us-west-2.on.aws/", "protocolType": "CUSTOM", "stickinessConfiguration": { "identifier": "$context.header.x-session-id", "timeout": 28800 } } } }' \ --credential-provider-configurations '[ { "credentialProviderType": "GATEWAY_IAM_ROLE", "credentialProvider": { "iamCredentialProvider": { "service": "lambda", "region": "us-west-2" } } } ]'

Untuk perutean berbasis target, ulangi untuk titik akhir perawatan (beri nama). customer-support-treatment Polling setiap target dengan get-gateway-target until status isREADY.

catatan

iamCredentialProviderdiperlukan untuk target IAM-authenticated passthrough. Untuk URL fungsi Lambda disetel service ke. lambda Peran gateway IAM harus memiliki keduanya lambda:InvokeFunctionUrl dan lambda:InvokeFunction pada ARN masing-masing fungsi.

Langkah 4: Aktifkan penelusuran AgentCore gateway

Aktifkan pengiriman penelusuran di AgentCore gateway sehingga memancarkan rentang atribusi varian ke. aws/spans Untuk mengaktifkan penelusuran dari konsol, buka halaman detail gateway dan pilih Pengiriman log dan penelusuran → Tracing → Aktifkan. Untuk informasi selengkapnya, lihat Mengonfigurasi pengiriman penelusuran ke CloudWatch.

Setelah lalu lintas mulai mengalir, setiap rentang gateway membawa atribut aws.agentcore.gateway.routing_experiment_arn dan aws.agentcore.gateway.routing_experiment_variant_name (misalnya, C atauT1), bersama dengan permintaan. traceId Pipa evaluasi online bergabung dengan rentang gateway ke rentang agen AndatraceId, yang merupakan bagaimana setiap sesi yang dinilai dikaitkan dengan variannya. Tanpa gateway tracing, sesi masih dinilai, tetapi mereka tidak dapat dikaitkan dengan varian, dan A/B tes tidak menghasilkan hasil per varian.

Langkah 5: Buat dan jalankan A/B tes

Agen Anda sekarang menjadi target gateway yang memancarkan telemetri. Dua langkah tetap:

  1. Buat satu konfigurasi evaluasi online per titik akhir varian. Lihat Membuat evaluasi online. Untuk setiap konfigurasi, gunakan grup log peristiwa service.name dan yang Anda konfigurasikanLangkah 1: Instrumen agen Anda untuk AgentCore observabilitas.

  2. Buat dan jalankan A/B tes. Ikuti Jalankan A/B pengujian dengan perutean berbasis target, mulai dari langkah Buat pengujian — buat A/B tes denganperVariantOnlineEvaluationConfig, kirim lalu lintas, hasil polling, hentikan, dan terapkan pemenang.

Saat Anda mengirim lalu lintas melalui gateway, arahkan ke target varian kontrol. Gateway membagi semua lalu lintas yang tiba di target kontrol di seluruh target control (C) dan treatment (T1) sesuai dengan konfigurasi A/B pengujian Anda.

contoh
AgentCore CLI

Tambahkan satu konfigurasi evaluasi online per varian — menggunakan grup log peristiwa service.name dan Langkah 1: Instrumen agen Anda untuk AgentCore observabilitas sebagai sumber data — lalu mulai pengujian dalam target-based mode:

agentcore add online-eval \ --name cs-control-eval \ --evaluator Builtin.Correctness \ --service-name customer-support-control \ --log-group-name /aws/bedrock-agentcore/agents/cs-agent-control/runtime-logs \ --enable-on-create agentcore add online-eval \ --name cs-treatment-eval \ --evaluator Builtin.Correctness \ --service-name customer-support-treatment \ --log-group-name /aws/bedrock-agentcore/agents/cs-agent-treatment/runtime-logs \ --enable-on-create agentcore deploy agentcore run ab-test \ --name cs-3p-abtest \ --gateway cs-3p-abtest-gw \ --mode target-based \ --control-target customer-support-control \ --treatment-target customer-support-treatment \ --control-online-eval cs-control-eval \ --treatment-online-eval cs-treatment-eval \ --control-weight 50 \ --treatment-weight 50 \ --wait

Gunakan agentcore status untuk melihat hasil per-varian saat pengujian berjalan dan agentcore stop untuk mengakhirinya.

AWS SDK (boto3)

Buat satu konfigurasi evaluasi online per varian dengancreate_online_evaluation_config. Setel serviceNames ke titik akhir service.name dan logGroupNames ke grup log peristiwanya. Kemudian buat tes dengancreate_ab_test, menggunakanperVariantOnlineEvaluationConfig. Untuk contoh lengkap boto3 — termasuk mengirim lalu lintas, hasil polling, dan menghentikan pengujian — lihat Jalankan A/B pengujian dengan perutean berbasis target, mulai dari langkah Buat pengujian. A/B

Pemecahan masalah

A/B tes tidak menunjukkan hasil setelah mengirim lalu lintas

  • Konfirmasikan pelacakan gateway diaktifkan (Langkah 4: Aktifkan penelusuran AgentCore gateway) — tanpanya pipeline agregasi tidak dapat mengatribusikan sesi ke varian.

  • Konfirmasikan setiap konfigurasi evaluasi online serviceNames cocok dengan titik akhir service.name dan logGroupNames termasuk grup log peristiwa titik akhir. Evaluasi online dibaca aws/spans secara otomatis, sehingga Anda tidak mencantumkannya — tetapi grup log peristiwa (konten pesan) harus terdaftar.

  • Hasil muncul setelah sesi idle untuk dikonfigurasisessionTimeoutMinutes, kemudian dalam waktu sekitar 15 menit dari siklus penilaian berikutnya.