Führen Sie einen A/B Test für Agenten durch, die außerhalb von gehostet werden AgentCore
Sie können einen Agenten, der außerhalb einer AgentCore Runtime ausgeführt wird, mit einem Agenten A/B testen, der irgendwo gehostet wird, z. B. auf AWS Lambda, Amazon EKS oder Amazon ECS. Beim A/B Testen von Agents leitet AgentCore das Gateway den Datenverkehr zwischen den Varianten weiter, die Online-Evaluierung bewertet jede Sitzung und der Service berechnet die statistische Signifikanz pro Variante. Wenn sich Ihr Agent nicht in einer AgentCore Runtime befindet, müssen Sie ihn auf Beobachtbarkeit prüfen und ihn selbst als AgentCore Gateway-Ziel registrieren. Außerdem müssen Sie das Gateway-Tracing aktivieren, sodass Sitzungen einer Variante zugeordnet werden können.
A/B Tests unterstützt Konfigurationspakete mit einer Laufzeit für einen einzelnen Agenten sowie zielbasiertes Routing mit zwei Agenten-Endpunkten. Auf dieser Seite wird gezeigt, wie Sie einen über HTTP erreichbaren Agentenendpunkt als Ziel auf dem AgentCore Gateway einrichten, wenn die Ablaufverfolgung aktiviert ist. Anschließend stellt die AgentCore Gateway-Ablaufverfolgung die Variantenzuweisung bereit, und Observability auf dem Agenten-Endpunkt liefert den Nachrichteninhalt für die Bewertung.
Diese Seite ist ein Nachtrag zum Ausführen eines Tests mit zielbasiertem Routing. A/B Sie behandelt nur die zusätzliche Einrichtung, die ein Agent benötigt, der kein Runtime-Agent ist. Dabei wird ein Lambda-hosted Agent (hinter einer Funktions-URL) als Beispiel verwendet; derselbe Ansatz gilt für jeden HTTP-reachable Agent-Endpunkt, den Sie als AgentCore Gateway-Ziel registrieren. Anschließend werden Sie zu dieser Seite zurückgeleitet, um den Test zu erstellen und auszuführen.
Voraussetzungen
Zusätzlich zu den allgemeinen A/B Testvoraussetzungen benötigen Sie:
-
AgentCore Die Gateway-Ablaufverfolgung ist auf dem Gateway aktiviert, sodass Sitzungen einer Variante zugeordnet werden können.
-
Ihr Agent wurde mithilfe eines unterstützten Protokolls als Passthrough-Ziel auf einem AgentCore Gateway hinzugefügt.
Schritt 1: Instrumentieren Sie Ihren Agenten im Hinblick auf die AgentCore Beobachtbarkeit
Anmerkung
Die vollständige Einrichtung finden Sie unter Aktivieren von Observability für Agenten, die außerhalb von AgentCore gehostet werden.
Fügen Sie für einen Lambda-hosted Agenten den AWS Lambda-Layer für
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 }"
Ein minimaler Lambda-Handler, der die URL-Anfrage der Funktion analysiert und das Sitzungs-Backage festlegt:
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"
Für zielbasiertes Routing sollten Sie diesen Vorgang zweimal (Kontrolle und Behandlung) zusammen mit der Änderung, die Sie testen, einsetzen, z. B. eine andere model_id oder eine Systemaufforderung.
Schritt 2: Machen Sie Ihren Agenten über HTTP verfügbar
Der Agent muss an einem HTTP-Endpunkt erreichbar sein, den das AgentCore Gateway aufrufen kann. Erstellen Sie für das Lambda-Beispiel eine Funktions-URL mit IAM-Authentifizierung für jede Funktion:
aws lambda create-function-url-config \ --function-name cs-agent-control \ --auth-type AWS_IAM \ --region us-west-2
Wiederholen Sie den Vorgang für die Behandlungsfunktion. (Machen Sie für einen Container oder einen selbst gehosteten Agenten stattdessen einen HTTPS-Endpunkt verfügbar und fahren Sie mit Schritt 3 fort.)
Schritt 3: Registrieren Sie Ihren Agenten als AgentCore Gateway-Ziel
Registrieren Sie jeden Endpunkt als HTTP-Passthrough-Ziel auf einem AgentCore Gateway. Einzelheiten zu den Passthrough-Zielen — einschließlich der OptionenprotocolType, Stickiness und Credential-Optionen — finden Sie unter HTTP-Passthrough-Ziele.
Um eine Lambda-Funktions-URL als Ziel zu registrieren, setzen Sie protocolType auf CUSTOM und geben Sie eine aniamCredentialProvider. Der Anmeldeinformationsanbieter autorisiert das Gateway, jede ausgehende Anfrage an die Funktions-URL als Dienst zu signieren: lambda
Anmerkung
-
Der
stickinessConfigurationweist das Gateway an, anhand desx-session-idHeaders zu erkennen, welche Anfragen zu derselben Sitzung gehören. Die Sitzungsbindung sorgt dafür, dass während des Tests laufende Sitzungen nicht beeinträchtigt werden, wenn Sie einen A/B Test starten oder beenden: Das Gateway leitet laufende Sitzungen weiterhin an dasselbe Ziel weiter, dem sie bereits zugewiesen wurden, und leitet nur neue Sitzungen entsprechend Ihren A/B Testbehandlungsgewichten weiter, während der Test läuft. -
Aus Gründen der Beobachtbarkeit muss Ihr Agent dieselbe Sitzungs-ID auch in seinem Trace-Kontext angeben (z. B. als Gepäck).
session.idAuf diese Weise können Online-Evaluierungen die Sitzungen und Traces der Agenten bewerten und sie der richtigen A/B Testbehandlung zuordnen.
Beispiel
Für eine zielbasierte Weiterleitung wiederholen Sie den Vorgang für den Behandlungsendpunkt (geben Sie ihm einen Namencustomer-support-treatment). Fragen Sie jedes Ziel mit get-gateway-target bis status ist READY ab.
Anmerkung
iamCredentialProviderist für ein IAM-authenticated Passthrough-Ziel erforderlich. Für eine Lambda-Funktions-URL, die service auf lambda gesetzt ist. Die Gateway-IAM-Rolle muss lambda:InvokeFunctionUrl sowohl als auch lambda:InvokeFunction im ARN jeder Funktion enthalten sein.
Schritt 4: AgentCore Gateway-Ablaufverfolgung aktivieren
Aktivieren Sie die Ablaufverfolgungszustellung auf dem AgentCore Gateway, sodass Spans mit Variantenzuweisung an ausgegeben werden. aws/spans Um die Ablaufverfolgung von der Konsole aus zu aktivieren, öffnen Sie die Gateway-Detailseite und wählen Sie Lieferungen und Ablaufverfolgung protokollieren → Ablaufverfolgung → Aktivieren aus. Weitere Informationen finden Sie unter Tracing Delivery to konfigurieren. CloudWatch
Sobald der Datenverkehr zu fließen beginnt, enthält jeder Gateway-Bereich die Attribute aws.agentcore.gateway.routing_experiment_arn und aws.agentcore.gateway.routing_experiment_variant_name (z. B. C oderT1) zusammen mit den Attributen traceId der Anfrage. Die Online-Evaluierungspipeline verknüpft den Gateway-Span mit den Spans Ihres Agenten durchtraceId. Auf diese Weise wird jede bewertete Sitzung ihrer Variante zugeordnet. Ohne Gateway-Tracing werden Sitzungen immer noch bewertet, aber sie können keiner Variante zugeordnet werden, und der A/B Test liefert keine Ergebnisse pro Variante.
Schritt 5: Den Test erstellen und ausführen A/B
Ihr Agent ist jetzt ein Gateway-Ziel, das Telemetrie sendet. Es bleiben zwei Schritte übrig:
-
Erstellen Sie eine Online-Evaluierungskonfiguration pro Variantenendpunkt. Siehe Online-Evaluierung erstellen. Verwenden Sie für jede Konfiguration die Ereignisprotokollgruppe
service.nameund die Ereignisprotokollgruppe, in der Sie konfiguriert habenSchritt 1: Instrumentieren Sie Ihren Agenten im Hinblick auf die AgentCore Beobachtbarkeit. -
Erstellen Sie den A/B Test und führen Sie ihn aus. Führen Sie einen A/B Test mit zielbasiertem Routing aus, und beginnen Sie mit dem Schritt A/B Test erstellen. Erstellen Sie den Test mit
perVariantOnlineEvaluationConfig, senden Sie Traffic, fragen Sie die Ergebnisse ab, beenden Sie den Test und stellen Sie ihn bereit.
Wenn Sie Datenverkehr über das Gateway senden, leiten Sie ihn an das Ziel der Kontrollvariante weiter. Das Gateway teilt den gesamten Datenverkehr, der am Kontrollziel ankommt, entsprechend Ihrer A/B Testkonfiguration auf die Kontroll- (CT1) und Behandlungsziele () auf.
Beispiel
Fehlerbehebung
A/B Der Test zeigt nach dem Senden von Datenverkehr keine Ergebnisse
-
Vergewissern Sie sich, dass die Gateway-Ablaufverfolgung aktiviert ist (Schritt 4: AgentCore Gateway-Ablaufverfolgung aktivieren). Andernfalls kann die Aggregationspipeline keine Sitzungen Varianten zuordnen.
-
Vergewissern Sie sich, dass alle Konfigurationen für die Online-Evaluierung
serviceNamesmit denen des Endpunkts übereinstimmenservice.nameund dass sie die Ereignisprotokollgruppe des EndpunktslogGroupNamesenthalten. Die Online-Evaluierungaws/spanswird automatisch gelesen, sodass Sie sie nicht auflisten. Die Ereignisprotokollgruppe (Nachrichteninhalt) muss jedoch aufgeführt werden. -
Die Ergebnisse werden angezeigt, nachdem eine Sitzung für die Konfiguration inaktiv
sessionTimeoutMinuteswar, und dann innerhalb von etwa 15 Minuten nach dem nächsten Bewertungszyklus.