AgentCore 외부에서 호스팅되는 에이전트에 대해 A/B 테스트 실행
AWS Lambda, Amazon EKS 또는 Amazon ECS 등 어디서나 호스팅되는 에이전트를 사용하여 AgentCore 런타임 외부에서 실행되는 에이전트를 A/B 테스트할 수 있습니다. A/B 테스트 에이전트의 경우 AgentCore 게이트웨이는 변형 간 트래픽, 각 세션의 온라인 평가 점수를 라우팅하고 서비스는 변형별 통계적 유의성을 계산합니다. 에이전트가 AgentCore 런타임에 있지 않은 경우 관찰성을 위해 이를 계측하고 AgentCore 게이트웨이 대상으로 직접 등록하고 게이트웨이 추적을 활성화하여 세션이 변형에 기인할 수 있도록 해야 합니다.
A/B 테스트는 단일 에이전트 런타임이 있는 구성 번들과 두 개의 에이전트 엔드포인트가 있는 대상 기반 라우팅을 지원합니다. 이 페이지에서는 추적이 활성화된 AgentCore 게이트웨이에서 HTTP 연결 가능 에이전트 엔드포인트를 대상으로 설정하는 방법을 보여줍니다. 그런 다음 AgentCore 게이트웨이 추적은 변형 속성을 제공하고 에이전트 엔드포인트의 관찰성은 점수 평가를 위한 메시지 콘텐츠를 제공합니다.
이 페이지는 대상 기반 라우팅으로 A/B 테스트를 실행하기 위한 부록입니다. 예를 들어 Lambda 호스팅 에이전트(함수 URL 뒤)를 사용하여 런타임이 아닌 에이전트가 필요로 하는 추가 설정만 다룹니다. AgentCore 게이트웨이 대상으로 등록한 HTTP 연결 가능 에이전트 엔드포인트에도 동일한 접근 방식이 적용된 다음에서 해당 페이지로 돌아가 테스트를 생성하고 실행합니다.
사전 조건
일반적인 A/B 테스트 사전 조건 외에도 다음이 필요합니다.
-
세션이 변형에 기인할 수 있도록 게이트웨이에서 AgentCore 게이트웨이 추적이 활성화되었습니다.
-
에이전트가 지원되는 프로토콜을 사용하여 AgentCore 게이트웨이에 패스스루 대상으로 추가되었습니다.
1단계: AgentCore 관찰성을 위해 에이전트 계측
참고
전체 설정은 AgentCore 외부에서 호스팅되는 에이전트에 대한 관찰성 활성화를 따르세요.
Lambda 호스팅 에이전트의 경우 AWS OpenTelemetry용 Lambda 계층
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 }"
함수 URL 요청을 구문 분석하고 세션 양을 설정하는 최소 Lambda 핸들러:
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"
대상 기반 라우팅의 경우 다른 model_id 또는 시스템 프롬프트와 같이 테스트 중인 변경 사항을 사용하여이를 두 번 배포(제어 및 처리)합니다.
2단계: HTTP를 통해 에이전트 노출
에이전트는 AgentCore 게이트웨이가 호출할 수 있는 HTTP 엔드포인트에서 연결할 수 있어야 합니다. Lambda 예제의 경우 각 함수에 대해 IAM 인증을 사용하여 함수 URL을 생성합니다.
aws lambda create-function-url-config \ --function-name cs-agent-control \ --auth-type AWS_IAM \ --region us-west-2
처리 함수에 대해 반복합니다. (컨테이너 또는 자체 호스팅 에이전트의 경우 HTTPS 엔드포인트를 대신 노출하고 3단계로 건너뜁니다.)
3단계: 에이전트를 AgentCore 게이트웨이 대상으로 등록
각 엔드포인트를 AgentCore 게이트웨이의 HTTP 패스스루 대상으로 등록합니다. protocolType, 고정성 및 자격 증명 옵션을 포함한 패스스루 대상에 대한 자세한 내용은 HTTP 패스스루 대상을 참조하세요.
Lambda 함수 URL을 대상으로 등록하려면 protocolType를 로 설정하고를 CUSTOM 제공합니다iamCredentialProvider. 자격 증명 공급자는 게이트웨이가 함수 URL에 대한 각 아웃바운드 요청에 lambda 서비스로 서명할 수 있는 권한을 부여합니다.
참고
-
는 게이트웨이에
x-session-id헤더를 사용하여 동일한 세션에 속하는 요청을 인식하도록stickinessConfiguration지시합니다. 세션 고정은 A/B 테스트를 시작하거나 중지할 때 진행 중인 세션에 영향을 주지 않습니다. 게이트웨이는 진행 중인 세션을 이미 할당된 대상과 동일한 대상으로 계속 라우팅하고 테스트가 실행되는 동안 A/B 테스트 처리 가중치에 따라 새 세션만 라우팅합니다. -
또한 관찰성을 위해 에이전트는 추적 컨텍스트에서 동일한 세션 ID를 설정해야 합니다(예:
session.id장비). 이를 통해 온라인 평가에서 에이전트 세션 및 트레이스를 채점하고 올바른 A/B 테스트 처리로 귀속할 수 있습니다.
예
대상 기반 라우팅의 경우 처리 엔드포인트에 대해 반복합니다(이름 지정customer-support-treatment). 가가 get-gateway-target 될 때까지 각 대상을 로 폴링status합니다READY.
참고
iamCredentialProvider는 IAM 인증 패스스루 대상에 필요합니다. Lambda 함수 URL이 service로 설정된 경우lambda. 게이트웨이 IAM 역할에는 각 함수의 ARNlambda:InvokeFunction에 lambda:InvokeFunctionUrl 및가 모두 있어야 합니다.
4단계: AgentCore 게이트웨이 추적 활성화
AgentCore 게이트웨이에서 추적 전송을 활성화하여 변형-속성 범위를 로 내보냅니다aws/spans. 콘솔에서 추적을 활성화하려면 게이트웨이 세부 정보 페이지를 열고 전송 및 추적 로그 → 추적 → 활성화를 선택합니다. 자세한 내용은 CloudWatch로의 추적 전송 구성을 참조하세요.
트래픽이 흐르기 시작하면 각 게이트웨이 스팬은 요청traceId의와 함께 aws.agentcore.gateway.routing_experiment_arn 및 aws.agentcore.gateway.routing_experiment_variant_name (예: C 또는 T1) 속성을 전달합니다. 온라인 평가 파이프라인은 게이트웨이 스팬을 에이전트의 스팬에 로 조인합니다. traceId이는 점수가 매겨진 각 세션이 변형에 기인하는 방식입니다. 게이트웨이 추적이 없으면 세션은 여전히 점수가 매겨지지만 변형에 기인할 수는 없으며 A/B 테스트는 변형별 결과를 생성하지 않습니다.
5단계: A/B 테스트 생성 및 실행
이제 에이전트가 원격 측정을 내보내는 게이트웨이 대상이 됩니다. 두 단계가 남아 있습니다.
-
변형 엔드포인트당 하나의 온라인 평가 구성을 생성합니다. 온라인 평가 생성을 참조하세요. 각 구성에 대해에서 구성한
service.name및 이벤트 로그 그룹을 사용합니다1단계: AgentCore 관찰성을 위해 에이전트 계측. -
A/B 테스트를 생성하고 실행합니다. 후속 A/B 테스트 생성 단계에서 시작하여 대상 기반 라우팅으로 A/B 테스트 실행 - 로 테스트를 생성하고
perVariantOnlineEvaluationConfig, 트래픽을 전송하고, 결과를 폴링하고, 중지하고, 승자를 배포합니다.
게이트웨이를 통해 트래픽을 전송할 때 이를 제어 변형의 대상으로 전달합니다. 게이트웨이는 제어 대상에 도착하는 모든 트래픽을 A/B 테스트 구성에 따라 제어(C) 및 처리(T1) 대상으로 분할합니다.
예
문제 해결
A/B 테스트는 트래픽을 전송한 후 결과를 표시하지 않습니다.
-
게이트웨이 추적이 활성화되었는지 확인(4단계: AgentCore 게이트웨이 추적 활성화) - 게이트웨이 추적이 활성화되지 않은 경우 집계 파이프라인은 세션을 변형으로 속성할 수 없습니다.
-
각 온라인 평가 구성이 엔드포인트의
service.name와serviceNames일치하고 엔드포인트의 이벤트 로그 그룹이logGroupNames포함되어 있는지 확인합니다. 온라인 평가는aws/spans자동으로 읽으므로 나열하지 않지만 이벤트 로그 그룹(메시지 콘텐츠)이 나열되어야 합니다. -
결과는 구성된에 대해 세션이 유휴 상태인
sessionTimeoutMinutes후 다음 점수 주기로부터 약 15분 이내에 나타납니다.