Realice una A/B prueba para los agentes alojados fuera de AgentCore
Puede A/B probar un agente que se ejecute fuera de un AgentCore entorno de ejecución con un agente alojado en cualquier lugar, por ejemplo, en AWS Lambda, Amazon EKS o Amazon ECS. En el caso de los agentes de A/B pruebas, la AgentCore puerta de enlace enruta el tráfico entre las variantes, la evaluación en línea puntúa cada sesión y el servicio calcula la significación estadística de cada variante. Cuando tu agente no esté en AgentCore ejecución, tendrás que instrumentarlo para garantizar su observabilidad, registrarlo tú mismo como destino de AgentCore pasarela y habilitar el seguimiento de la pasarela para poder atribuir las sesiones a una variante.
A/B Las pruebas admiten paquetes de configuración con un único tiempo de ejecución de agente, así como el enrutamiento basado en objetivos con dos terminales de agente. En esta página, se muestra cómo configurar un punto final de agente accesible por HTTP como destino en una AgentCore puerta de enlace con el rastreo habilitado. A continuación, el rastreo de la AgentCore pasarela proporciona la atribución de variantes y la observabilidad en el punto final del agente proporciona el contenido del mensaje para la puntuación.
Esta página es una adición a la sección Ejecute una prueba con un A/B enrutamiento basado en objetivos. Abarca únicamente la configuración adicional que necesita un agente que no esté en tiempo de ejecución: por ejemplo, se utiliza un Lambda-hosted agente (detrás de la URL de una función); el mismo enfoque se aplica a cualquier terminal de HTTP-reachable agente que registre como destino de la AgentCore puerta de enlace y, a continuación, le devuelve a esa página para crear y ejecutar la prueba.
Requisitos previos
Además de los requisitos generales A/B de las pruebas, necesita:
-
AgentCore el rastreo de la puerta de enlace está habilitado en la puerta de enlace para poder atribuir las sesiones a una variante.
-
Su agente lo agregó como objetivo de acceso directo a una AgentCore puerta de enlace mediante un protocolo compatible.
Paso 1: Instrumente a su agente para AgentCore garantizar la observabilidad
nota
Consulte Habilitar la observabilidad para los agentes alojados fuera de o AgentCore para ver la configuración completa.
Para un Lambda-hosted agente, adjunte la capa AWS Lambda OpenTelemetry
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 }"
Un controlador Lambda mínimo que analiza la solicitud de URL de la función y establece el equipaje de la sesión:
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"
Para el enrutamiento basado en objetivos, impleméntelo dos veces (control y tratamiento) con el cambio que esté probando (por ejemplo, un indicador diferente model_id o del sistema).
Paso 2: Exponga su agente a través de HTTP
El agente debe estar accesible en un punto final HTTP al que pueda llamar la AgentCore puerta de enlace. Para el ejemplo de Lambda, cree una URL de función con autenticación de IAM para cada función:
aws lambda create-function-url-config \ --function-name cs-agent-control \ --auth-type AWS_IAM \ --region us-west-2
Repita el procedimiento para la función de tratamiento. (En el caso de un contenedor o un agente autohospedado, en su lugar, exponga un punto final HTTPS y vaya al paso 3).
Paso 3: Registre a su agente como destino de AgentCore puerta de enlace
Registre cada punto final como destino de acceso HTTP en una AgentCore puerta de enlace. Para obtener más información sobre los destinos de transferencia, incluidas las opciones de acceso protocolType directo, adherencia y credenciales, consulte los destinos de acceso directo HTTP.
Para registrar la URL de una función Lambda como destino, configúrela en CUSTOM y protocolType proporcione una. iamCredentialProvider El proveedor de credenciales autoriza a la pasarela a firmar cada solicitud saliente a la URL de la función como servicio: lambda
nota
-
stickinessConfigurationIndica a la puerta de enlace que utilice elx-session-idencabezado para reconocer qué solicitudes pertenecen a la misma sesión. La rigidez de las sesiones evita que las sesiones en curso se vean afectadas al iniciar o detener una A/B prueba: la pasarela sigue dirigiendo las sesiones en curso al mismo objetivo al que ya estaban asignadas y dirige solo las sesiones nuevas en función de las ponderaciones del tratamiento de la A/B prueba mientras se está realizando la prueba. -
Para garantizar la visibilidad, el agente también debe establecer este mismo identificador de sesión en su contexto de rastreo (por ejemplo, como equipaje).
session.idEsto permite que la evaluación en línea puntúe las sesiones y los rastros de los agentes y los atribuya al tratamiento de A/B prueba correcto.
ejemplo
Para el enrutamiento basado en objetivos, repita el procedimiento para el punto final del tratamiento (asígnele un nombrecustomer-support-treatment). Encueste cada objetivo con get-gateway-target hasta que status seaREADY.
nota
iamCredentialProvideres necesario para un objetivo IAM-authenticated de acceso directo. Para una URL de función Lambda establecida service en. lambda El rol de IAM de la puerta de enlace debe tener ambos lambda:InvokeFunctionUrl y estar lambda:InvokeFunction en el ARN de cada función.
Paso 4: Habilitar AgentCore el rastreo de la puerta de enlace
Habilite el rastreo de la entrega en la AgentCore puerta de enlace para que emita intervalos de atribución variables hasta. aws/spans Para activar el rastreo desde la consola, abra la página de detalles de la pasarela y elija Registrar entregas y rastreo → Rastreo → Activar. Para obtener más información, consulte Configurar el seguimiento de la entrega a. CloudWatch
Una vez que el tráfico comienza a fluir, cada tramo de puerta de enlace incluye los atributos aws.agentcore.gateway.routing_experiment_arn y aws.agentcore.gateway.routing_experiment_variant_name (por ejemplo, C oT1), junto con los traceId de la solicitud. El proceso de evaluación en línea une el intervalo de la pasarela con el intervalo del agentetraceId, que es la forma en que cada sesión puntuada se atribuye a su variante. Sin el rastreo inicial, las sesiones se siguen puntuando, pero no se pueden atribuir a una variante y la A/B prueba no arroja resultados por variante.
Paso 5: Crea y ejecuta la prueba A/B
Su agente es ahora un objetivo de puerta de enlace que emite telemetría. Quedan dos pasos:
-
Cree una configuración de evaluación en línea por cada variante de punto final. Consulte Crear una evaluación en línea. Para cada configuración, utilice el
service.namegrupo de registro de eventos en el que se configuróPaso 1: Instrumente a su agente para AgentCore garantizar la observabilidad. -
Crea y ejecuta la A/B prueba. Siga Ejecute una A/B prueba con un enrutamiento basado en objetivos, empezando por el paso Crear la A/B prueba: cree la prueba con
perVariantOnlineEvaluationConfig, envíe el tráfico, los resultados de la encuesta, detenga y despliegue al ganador.
Cuando envíe tráfico a través de la puerta de enlace, diríjalo al objetivo de la variante de control. La puerta de enlace divide todo el tráfico que llega al objetivo de control entre los objetivos de control (C) y de tratamiento (T1) según la configuración de A/B prueba.
ejemplo
Resolución de problemas
A/B La prueba no muestra resultados después de enviar el tráfico
-
Confirme que el rastreo de puertas de enlace esté habilitado (Paso 4: Habilitar AgentCore el rastreo de la puerta de enlace); sin él, la canalización de agregación no puede atribuir las sesiones a las variantes.
-
Confirme que cada configuración de evaluación en línea
serviceNamescoincide con la del punto finalservice.nameelogGroupNamesincluye el grupo de registro de eventos del punto final. La evaluación en líneaaws/spansse lee automáticamente, por lo que no se incluye en la lista, pero sí se debe incluir el grupo de registro de eventos (contenido del mensaje). -
Los resultados aparecen después de que una sesión esté inactiva para la sesión configurada y
sessionTimeoutMinutes, a continuación, aproximadamente 15 minutos después del siguiente ciclo de puntuación.