AG-UI contrato protocolario
El contrato de AG-UI protocolo define los requisitos para implementar la comunicación de la interfaz de agente a usuario en Amazon Bedrock Runtime. AgentCore Este contrato especifica los requisitos técnicos, los puntos finales y los patrones de comunicación que su agente debe implementar. AG-UI
Para ver un código de ejemplo, consulte Implementar AG-UI servidores en AgentCore tiempo de ejecución.
Temas
Requisitos de implementación del protocolo
Su AG-UI agente debe implementar estos requisitos de protocolo específicos:
-
Transporte: Server-Sent Events (SSE) o WebSocket - SSE proporciona una transmisión unidireccional del servidor al cliente y, al mismo tiempo, WebSocket permite la comunicación bidireccional en tiempo real
-
Administración de sesiones: la plataforma agrega automáticamente un
X-Amzn-Bedrock-AgentCore-Runtime-Session-Idencabezado para aislar la sesión
Requisitos del contenedor
Su AG-UI agente debe implementarse como una aplicación contenerizada que cumpla con estas especificaciones:
-
Host:
0.0.0.0 -
Puerto:
8080- Puerto estándar para la comunicación entre AG-UI agentes (igual que el protocolo HTTP) -
Plataforma: contenedor ARM64: necesario para la compatibilidad con el entorno de ejecución de AWS Amazon Bedrock AgentCore
Requisitos de ruta
/invocations - POST
Finalidad
Recibe las solicitudes de los usuarios y transmite las respuestas como Server-Sent eventos (SSE)
Casos de uso
El punto final de invocaciones cumple varios propósitos clave:
-
Transmitir las respuestas del chat
-
Estado del agente y pasos a seguir
-
Llamadas de herramientas y resultados
Formato de las solicitudes
Amazon Bedrock AgentCore transfiere las cargas útiles solicitadas directamente a su contenedor sin necesidad de validarlas. Para ello AG-UI-compliant, sus solicitudes deben seguir este formato. RunAgentInput La implementación de su contenedor determina qué campos son obligatorios y cómo se gestionan los errores de validación.
AG-UI-compliant los agentes esperan una carga útil de RunAgentInput JSON. Ejemplo:
{ "threadId": "thread-123", "runId": "run-456", "messages": [{"id": "msg-1", "role": "user", "content": "Hello, agent!"}], "tools": [], "context": [], "state": {}, "forwardedProps": {} }
Para ver los detalles completos RunAgentInput del esquema y el formato del mensaje, consulta AG-UI Tipos
Formato de las respuestas
AG-UI los agentes responden con secuencias de SSE-formatted eventos:
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
Finalidad
Proporciona comunicación bidireccional en tiempo real entre clientes y agentes
Casos de uso
El WebSocket punto final cumple varios propósitos clave:
-
Real-time interfaces conversacionales
-
Sesiones de agente interactivas con interrupciones por parte del usuario
-
Multi-turn conversaciones con conexiones persistentes
/ping - OBTENER
Finalidad
Verifica que su AG-UI agente esté operativo y preparado para gestionar las solicitudes
Formato de las respuestas
Devuelve un código de estado que indica el estado de salud de su agente:
-
Content-Type :
application/json -
Código de estado HTTP:
200para estados en buen estado, códigos de error apropiados para estados en mal estado
{ "status": "Healthy" }
statuses obligatorio y es uno de los Healthy siguientesHealthyBusy: Mientras el estado seaHealthyBusy, la sesión en tiempo de ejecución se mantiene activa.
Se puede incluir un time_of_last_update campo opcional (una marca de tiempo de Unix en segundos) para indicar cuándo se modificó por última vez. status
aviso
No establezca time_of_last_update la hora actual en cada ping. Una marca de tiempo que avanza en cada ping indica un cambio de estado continuo, lo que impide que se agote el tiempo de espera de la sesión inactiva. De este modo, las sesiones persisten hasta MaxLifetime agotar la cuota de sesión. Si omites este campo, la plataforma registra los cambios de estado por sí misma. Si utilizas el AgentCore SDK de Bedrock, la respuesta al ping se gestiona automáticamente.
Requisitos de autenticación
AG-UI los agentes admiten varios mecanismos de autenticación:
Tokens portadores de OAuth 2.0
Para la autenticación AG-UI del cliente, incluye el token Bearer en los encabezados de las solicitudes:
Authorization: Bearer <oauth-token> X-Amzn-Bedrock-AgentCore-Runtime-Session-Id: <session-id>
Autenticación SigV4
También se admite la autenticación AWS SigV4 estándar para el acceso programático.
Gestión de errores
Los errores se clasifican en dos categorías según el momento en que se producen:
-
Connection-level errores: se producen antes de que la solicitud llegue al contenedor (autenticación, validación, limitación). Estos devuelven códigos de estado HTTP estándar.
-
Errores de tiempo de ejecución: se producen durante la ejecución del agente una vez iniciada la transmisión. Estos aparecen como
RUN_ERROReventos en la transmisión SSE y no como códigos de estado HTTP.
| AG-UI Código de error | Estado HTTP | Description (Descripción) |
|---|---|---|
|
|
401 |
Se requiere autenticación o credenciales no válidas |
|
|
403 |
Permisos insuficientes para la operación solicitada |
|
|
400 |
Datos o parámetros de solicitud no válidos |
|
|
429 |
Demasiadas solicitudes del cliente |
|
|
200 |
El código del agente falló durante la ejecución: compruebe sus CloudWatch registros |
Ejemplo de error de tiempo de ejecución (fallo del agente):
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"}
Respuestas de autenticación de OAuth
OAuth-configured los agentes devuelven errores de autenticación con códigos de estado HTTP estándar. La respuesta incluye un WWW-Authenticate encabezado (según el RFC 7235
Ejemplo de error de autenticación de OAuth:
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 los agentes devuelven el HTTP 403 con un ACCESS_DENIED error y no incluyen WWW-Authenticate encabezados.