AG-UI protokollarischer Vertrag
Der AG-UI Protokollvertrag definiert die Anforderungen für die Implementierung der Kommunikation zwischen Agent und Benutzerschnittstelle in Amazon AgentCore Bedrock Runtime. Dieser Vertrag legt die technischen Anforderungen, Endpunkte und Kommunikationsmuster fest, die Ihr AG-UI Agent implementieren muss.
Beispielcode finden Sie unter Bereitstellen von AG-UI Servern in AgentCore Runtime.
Themen
Anforderungen an die Implementierung von Protokollen
Ihr AG-UI Agent muss diese spezifischen Protokollanforderungen implementieren:
-
Transport: Server-Sent Events (SSE) oder WebSocket — SSE ermöglicht unidirektionales Streaming vom Server zum Client und WebSocket ermöglicht gleichzeitig eine bidirektionale Echtzeitkommunikation
-
Sitzungsverwaltung: Die Plattform fügt automatisch einen
X-Amzn-Bedrock-AgentCore-Runtime-Session-IdHeader für die Sitzungsisolierung hinzu
Anforderungen an Container
Ihr AG-UI Agent muss als containerisierte Anwendung bereitgestellt werden, die die folgenden Spezifikationen erfüllt:
-
Gastgeber:
0.0.0.0 -
Port:
8080- Standardport für die AG-UI Agentenkommunikation (entspricht dem HTTP-Protokoll) -
Plattform: ARM64-Container — Für die Kompatibilität mit der AWS Amazon AgentCore Bedrock-Laufzeitumgebung erforderlich
Pfadanforderungen
/invocations — POST
Zweck
Empfängt Benutzeranfragen und streamt Antworten als Server-Sent Ereignisse (SSE)
Anwendungsfälle
Der Aufruf-Endpunkt dient mehreren wichtigen Zwecken:
-
Chat-Antworten streamen
-
Status des Agenten und Schritte zum Nachdenken
-
Tool-Aufrufe und Ergebnisse
Anforderungsformat
Amazon Bedrock AgentCore leitet Anforderungsnutzlasten ohne Überprüfung direkt an Ihren Container weiter. Um das zu AG-UI-compliant tun, sollten Ihre Anfragen dem RunAgentInput Format folgen. Ihre Container-Implementierung bestimmt, welche Felder erforderlich sind und wie mit Validierungsfehlern umgegangen wird.
AG-UI-compliant Agenten erwarten eine RunAgentInput JSON-Nutzlast. Beispiel:
{ "threadId": "thread-123", "runId": "run-456", "messages": [{"id": "msg-1", "role": "user", "content": "Hello, agent!"}], "tools": [], "context": [], "state": {}, "forwardedProps": {} }
Das vollständige RunAgentInput Schema und das Nachrichtenformat finden Sie unter AG-UI Typen
Reaktionsformat
AG-UI Agenten antworten mit SSE-formatted Event-Streams:
Content-Type: text/event-stream data: {"type":"RUN_STARTED","threadId":"thread-123","runId":"run-456"} data: {"type":"TEXT_MESSAGE_START","messageId":"msg-789","role":"assistant"} data: {"type":"TEXT_MESSAGE_CONTENT","messageId":"msg-789","delta":"Processing your request"} data: {"type":"TOOL_CALL_START","toolCallId":"tool-001","toolCallName":"search","parentMessageId":"msg-789"} data: {"type":"TOOL_CALL_RESULT","messageId":"msg-789","toolCallId":"tool-001","content":"Search completed"} data: {"type":"TEXT_MESSAGE_END","messageId":"msg-789"} data: {"type":"RUN_FINISHED","threadId":"thread-123","runId":"run-456"}
/ws - WebSocket
Zweck
Ermöglicht bidirektionale Echtzeitkommunikation zwischen Clients und Agenten
Anwendungsfälle
Der WebSocket Endpunkt dient mehreren wichtigen Zwecken:
-
Real-time Benutzeroberflächen für Konversationen
-
Interaktive Agentensitzungen mit Benutzerinterrupts
-
Multi-turn Konversationen mit dauerhaften Verbindungen
/ping — GET
Zweck
Überprüft, ob Ihr AG-UI Agent betriebsbereit und bereit ist, Anfragen zu bearbeiten
Reaktionsformat
Gibt einen Statuscode zurück, der den Zustand Ihres Agenten angibt:
-
Content-Type :
application/json -
HTTP-Statuscode:
200für fehlerfreie Zustände, entsprechende Fehlercodes für fehlerhafte Zustände
{ "status": "Healthy" }
statusist erforderlich und ist einer von Healthy oderHealthyBusy. Solange der Status lautetHealthyBusy, wird die Runtime-Sitzung aktiv gehalten.
Ein optionales time_of_last_update Feld (ein Unix-Zeitstempel in Sekunden) kann hinzugefügt werden, um zu melden, wann die status letzte Änderung vorgenommen wurde.
Warnung
Stellen Sie nicht time_of_last_update bei jedem Ping die aktuelle Uhrzeit ein. Ein Zeitstempel, der bei jedem Ping weitergeht, signalisiert eine kontinuierliche Statusänderung, wodurch verhindert wird, dass das Timeout für inaktive Sitzungen jemals ausgelöst wird. Die Sitzungen dauern dann an, bis Ihr Sitzungskontingent ausgeschöpft ist MaxLifetime und diese möglicherweise aufgebraucht sind. Wenn Sie das Feld weglassen, verfolgt die Plattform die Statusänderungen selbstständig. Wenn Sie das Bedrock AgentCore SDK verwenden, wird die Ping-Antwort für Sie abgewickelt.
Anforderungen an die Authentifizierung
AG-UI Agenten unterstützen mehrere Authentifizierungsmechanismen:
OAuth 2.0-Trägertoken
Fügen Sie für die AG-UI Client-Authentifizierung das Bearer-Token in die Header der Anfrage ein:
Authorization: Bearer <oauth-token> X-Amzn-Bedrock-AgentCore-Runtime-Session-Id: <session-id>
SigV4-Authentifizierung
Die standardmäßige AWS SigV4-Authentifizierung wird auch für den programmatischen Zugriff unterstützt.
Fehlerbehandlung
Fehler werden je nach dem Zeitpunkt ihres Auftretens in zwei Kategorien eingeteilt:
-
Connection-level Fehler: Treten auf, bevor die Anfrage Ihren Container erreicht (Authentifizierung, Validierung, Drosselung). Diese geben Standard-HTTP-Statuscodes zurück.
-
Laufzeitfehler: Treten während der Ausführung des Agenten auf, nachdem der Stream gestartet wurde. Diese tauchen eher als
RUN_ERROREreignisse im SSE-Stream als als HTTP-Statuscodes auf.
| AG-UI Fehlercode | HTTP-Status | Description |
|---|---|---|
|
|
401 |
Authentifizierung erforderlich oder ungültige Anmeldeinformationen |
|
|
403 |
Unzureichende Berechtigungen für den angeforderten Vorgang |
|
|
400 |
Ungültige Anforderungsdaten oder Parameter |
|
|
429 |
Zu viele Anfragen vom Client |
|
|
200 |
Der Agentencode ist bei der Ausführung fehlgeschlagen — überprüfen Sie Ihre CloudWatch Logs |
Beispiel für einen Laufzeitfehler (Agentenfehler):
HTTP/1.1 200 OK Content-Type: text/event-stream x-amzn-requestid: 8bg30e9c-7e26-6bge-dc4b-75h368cc10cf data: {"type":"RUN_ERROR","code":"AGENT_ERROR","message":"Agent execution failed"}
Antworten auf die OAuth-Authentifizierung
OAuth-configured Agenten geben Authentifizierungsfehler mit Standard-HTTP-Statuscodes zurück. Die Antwort enthält einen WWW-Authenticate Header (gemäß RFC 7235
Beispiel für einen OAuth-Authentifizierungsfehler:
HTTP/1.1 401 Unauthorized Content-Type: text/event-stream WWW-Authenticate: Bearer resource_metadata="https://bedrock-agentcore.{region}.amazonaws.com/runtimes/{ESCAPED_ARN}/invocations/.well-known/oauth-protected-resource?qualifier={QUALIFIER}" x-amzn-requestid: 8bg30e9c-7e26-6bge-dc4b-75h368cc10cf data: {"type":"RUN_ERROR","code":"UNAUTHORIZED","message":"Authentication required"}
SigV4-configured Agenten geben HTTP 403 mit einem ACCESS_DENIED Fehler zurück und schließen WWW-Authenticate keine Header ein.