Execute um A/B teste para agentes hospedados fora do AgentCore
Você pode A/B testar um agente executado fora do AgentCore Runtime com um agente hospedado em qualquer lugar, por exemplo, no AWS Lambda, no Amazon EKS ou no Amazon ECS. Para agentes A/B de teste, o AgentCore gateway direciona o tráfego entre variantes, a avaliação on-line pontua cada sessão e o serviço calcula a significância estatística por variante. Quando seu agente não está em um AgentCore Runtime, você precisa instrumentá-lo para fins de observabilidade, registrá-lo como um destino de AgentCore gateway e habilitar o rastreamento do gateway para que as sessões possam ser atribuídas a uma variante.
A/B tests oferece suporte a pacotes de configuração com um único tempo de execução de agente, bem como roteamento baseado em destinos com dois endpoints de agente. Esta página mostra como configurar um endpoint de agente HTTP acessível como um destino no AgentCore gateway com o rastreamento ativado. Em seguida, o rastreamento do AgentCore gateway fornece a atribuição de variantes, e a observabilidade no endpoint do agente fornece o conteúdo da mensagem para pontuação.
Esta página é um adendo para Executar um A/B teste com roteamento baseado em metas. Ela abrange apenas a configuração extra de que um agente que não está em tempo de execução precisa — usando um Lambda-hosted agente (por trás de uma URL de função) como exemplo; a mesma abordagem se aplica a qualquer endpoint de HTTP-reachable agente que você registra como destino do AgentCore gateway — e depois o envia de volta à página para criar e executar o teste.
Pré-requisitos
Além dos pré-requisitos gerais A/B de teste, você precisa:
-
AgentCore rastreamento de gateway ativado no gateway para que as sessões possam ser atribuídas a uma variante.
-
Seu agente foi adicionado como destino de passagem em um AgentCore gateway usando um protocolo compatível.
Etapa 1: instrumentar seu agente para fins de AgentCore observabilidade
nota
Siga Habilitando a observabilidade para agentes hospedados fora do AgentCore para ver a configuração completa.
Para um Lambda-hosted agente, anexe a camada 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 }"
Um manipulador Lambda mínimo que analisa a solicitação de URL da função e define a bagagem da sessão:
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 roteamento baseado em metas, implante isso duas vezes (controle e tratamento) com a alteração que você está testando — por exemplo, um prompt diferente model_id ou do sistema.
Etapa 2: exponha seu agente via HTTP
O agente deve estar acessível em um endpoint HTTP que o AgentCore gateway possa chamar. Para o exemplo do Lambda, crie uma URL de função com autenticação IAM para cada função:
aws lambda create-function-url-config \ --function-name cs-agent-control \ --auth-type AWS_IAM \ --region us-west-2
Repita o procedimento para a função de tratamento. (Para um contêiner ou agente auto-hospedado, exponha um endpoint HTTPS em vez disso e vá para a Etapa 3.)
Etapa 3: registrar seu agente como um destino de AgentCore gateway
Registre cada endpoint como um destino de passagem HTTP em um AgentCore gateway. Para obter detalhes sobre os destinos de passagemprotocolType, incluindo as opções de fidelidade e credencial, consulte Destinos de passagem HTTP.
Para registrar uma URL da função Lambda como destino, protocolType defina CUSTOM e forneça uma. iamCredentialProvider O provedor de credenciais autoriza o gateway a assinar cada solicitação de saída no URL da função como serviço: lambda
nota
-
Isso
stickinessConfigurationdiz ao gateway que use ox-session-idcabeçalho para reconhecer quais solicitações pertencem à mesma sessão. A aderência da sessão mantém as sessões em andamento inalteradas quando você inicia ou interrompe um A/B teste: o gateway continua direcionando as sessões em andamento para o mesmo alvo ao qual elas já foram atribuídas e encaminha somente novas sessões de acordo com os pesos do tratamento do A/B teste enquanto o teste está sendo executado. -
Para fins de observação, seu agente também deve definir esse mesmo ID de sessão em seu contexto de rastreamento (por exemplo, como
session.idbagagem). Isso permite que a avaliação on-line pontue sessões e rastreamentos do agente e os atribua ao tratamento A/B de teste correto.
exemplo
Para roteamento baseado em metas, repita para o ponto final do tratamento (nomeie-o). customer-support-treatment Pesquise cada alvo com get-gateway-target até que status sejaREADY.
nota
iamCredentialProvideré necessário para um alvo de IAM-authenticated passagem. Para um URL da função Lambda definido comoservice. lambda A função do IAM do gateway deve ter ambos lambda:InvokeFunctionUrl e lambda:InvokeFunction no ARN de cada função.
Etapa 4: Ativar o rastreamento do AgentCore gateway
Ative o rastreamento da entrega no AgentCore gateway para que ele emita extensões de atribuição de variantes para. aws/spans Para ativar o rastreamento a partir do console, abra a página de detalhes do gateway e escolha Registrar entregas e rastreamento → Rastreamento → Ativar. Para obter mais informações, consulte Configurar a entrega de rastreamento para CloudWatch.
Quando o tráfego começa a fluir, cada extensão do gateway carrega os atributos aws.agentcore.gateway.routing_experiment_arn e aws.agentcore.gateway.routing_experiment_variant_name (por exemplo, C ouT1), junto com o traceId da solicitação. O pipeline de avaliação on-line une a extensão do gateway aos períodos do seu agentetraceId, e é assim que cada sessão pontuada é atribuída à sua variante. Sem o rastreamento do gateway, as sessões ainda são pontuadas, mas não podem ser atribuídas a uma variante, e o A/B teste não produz resultados por variante.
Etapa 5: criar e executar o A/B teste
Seu agente agora é um alvo de gateway que emite telemetria. Restam duas etapas:
-
Crie uma configuração de avaliação on-line por endpoint de variante. Consulte Criar avaliação on-line. Para cada configuração, use o grupo de log
service.namede eventos em Etapa 1: instrumentar seu agente para fins de AgentCore observabilidade que você configurou. -
Crie e execute o A/B teste. Siga Execute um A/B teste com roteamento baseado em metas, começando pela etapa Criar o A/B teste — crie o teste com
perVariantOnlineEvaluationConfig, envie tráfego, resultados de enquetes, pare e implante o vencedor.
Ao enviar tráfego pelo gateway, direcione-o para o destino da variante de controle. O gateway divide todo o tráfego que chega ao alvo de controle entre os alvos de controle (C) e tratamento (T1) de acordo com sua configuração de A/B teste.
exemplo
Solução de problemas
A/B o teste não mostra resultados após o envio do tráfego
-
Confirme se o rastreamento do gateway está ativado (Etapa 4: Ativar o rastreamento do AgentCore gateway) — sem ele, o pipeline de agregação não pode atribuir sessões a variantes.
-
Confirme se cada configuração de avaliação on-line
serviceNamescorresponde à do endpointservice.nameelogGroupNamesinclui o grupo de log de eventos do endpoint. A avaliação on-line é lidaaws/spansautomaticamente, então você não a lista, mas o grupo do registro de eventos (conteúdo da mensagem) deve estar listado. -
Os resultados aparecem depois que uma sessão fica ociosa para o configurado e
sessionTimeoutMinutes, em seguida, dentro de aproximadamente 15 minutos do próximo ciclo de pontuação.