View a markdown version of this page

AG-UI contrato protocolario - Base amazónica AgentCore

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

AG-UI contrato protocolario

El contrato de AG-UI protocolo define los requisitos para implementar la comunicación entre el agente y la interfaz de usuario en Amazon Bedrock Runtime. AgentCore Este contrato especifica los requisitos técnicos, los puntos finales y los patrones de comunicación que debe implementar su agente. AG-UI

Para ver un ejemplo de código, consulte Implementar AG-UI servidores en AgentCore tiempo de ejecución.

Requisitos de implementación del protocolo

Su AG-UI agente debe implementar estos requisitos de protocolo específicos:

  • Transporte: Server-Sent eventos (SSE) o WebSocket - El SSE proporciona una transmisión unidireccional del servidor al cliente, al tiempo que WebSocket permite la comunicación bidireccional en tiempo real

  • Administración de sesiones: la plataforma agrega automáticamente el X-Amzn-Bedrock-AgentCore-Runtime-Session-Id encabezado para aislar la sesión

Requisitos de contenedores

Su AG-UI agente debe implementarse como una aplicación en contenedores que cumpla con estas especificaciones:

  • Host: 0.0.0.0

  • Puerto: 8080 - Puerto estándar para la comunicación con el AG-UI agente (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 las invocaciones cumple varios propósitos clave:

  • Transmisión de respuestas de chat

  • Estado del agente y pasos a seguir

  • Llamadas a herramientas y resultados

Formato de las solicitudes

Amazon Bedrock AgentCore transfiere las cargas útiles de las solicitudes directamente a su contenedor sin necesidad de validarlas. Para ser así AG-UI-compliant, sus solicitudes deben seguir el RunAgentInput formato. 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 de los mensajes, 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 agentes interactivas con interrupciones de usuario

  • Multi-turn conversaciones con conexiones persistentes

/ping - OBTENER

Finalidad

Verifica que su AG-UI agente esté operativo y listo para atender 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: en caso 200 de estado correcto, códigos de error apropiados para estados en mal estado

{ "status": "Healthy" }

statuses obligatorio y es uno de Healthy oHealthyBusy. Mientras el estado seaHealthyBusy, la sesión 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 evita 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 el campo, la plataforma registra los cambios de estado por sí sola. Si utilizas el AgentCore SDK de Bedrock, la respuesta de ping se gestionará 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 del portador en los encabezados de las solicitudes:

Authorization: Bearer <oauth-token> X-Amzn-Bedrock-AgentCore-Runtime-Session-Id: <session-id>

Autenticación Sigv4

La autenticación AWS Sigv4 estándar también es compatible con el acceso programático.

Gestión de errores

AG-UI serializa cada error como un RUN_ERROR evento SSE (Content-Type: text/event-stream), independientemente de que el error se produzca antes o durante la transmisión. Las categorías solo difieren en el código de estado HTTP que acompaña al evento:

  • Connection-level errores: se producen antes de que la solicitud llegue a tu contenedor (autenticación, autorización, validación, limitación, conflictos de sesión). El RUN_ERROR evento se devuelve con el código de estado HTTP real del error (por ejemplo, 401, 403 o 409).

  • Errores de tiempo de ejecución: se producen durante la ejecución del agente una vez iniciada la transmisión. Solo AGENT_ERROR entra en esta categoría. Su RUN_ERROR evento devuelve HTTP 200 porque la transmisión ya ha comenzado.

La siguiente tabla asigna cada excepción de tiempo de ejecución a AG-UI su código de error SSE, código de estado HTTP y mensaje. Algunas excepciones comparten un código de error de SSE, pero devuelven mensajes diferentes, por lo que aparecen en filas independientes.

Código de error de SSE Excepción de ejecución Código de error HTTP Mensaje de error

UNAUTHORIZED

UnauthorizedException

401

Se requiere autenticación o las credenciales no son válidas

ACCESS_DENIED

AccessDeniedException

403

Permisos insuficientes para la operación solicitada

VALIDATION_ERROR

ValidationException

400

Los datos o parámetros de la solicitud no son válidos

RATE_LIMIT_EXCEEDED

ThrottlingException

429

Demasiadas solicitudes del cliente

SESSION_BUSY

ConflictException

409

Conflicto de recursos: el recurso ya existe

SESSION_BUSY

RetryableConflictException

409

La sesión está en curso, inténtelo de nuevo

SERVICE_QUOTA_EXCEEDED

ServiceQuotaExceededException

429

Se ha superado la cuota de servicio

AGENT_ERROR

RuntimeClientError

200

El código del agente falló durante la ejecución: compruebe sus CloudWatch registros

INTERNAL_ERROR

¿Alguna otra excepción

500

Se ha producido un error interno al procesar la solicitud

ConflictExceptiony RetryableConflictException ambos utilizan el código SESSION_BUSY de error SSE (HTTP 409), pero se distinguen por su mensaje. El servicio devuelve RetryableConflictException (Session operation in progress, please retry) cuando una segunda operación llega a una sesión mientras el servicio está aprovisionando o cancelando esa sesión. Es transitorio y se puede volver a intentar: vuelva a intentarlo con un breve retraso exponencial, ya que los clientes no lo reintentan automáticamente. AG-UI

Ejemplo de error de tiempo de ejecución (fallo del agente):

HTTP/1.1 200 OK Content-Type: text/event-stream x-amzn-requestid: 12345678-1234-1234-1234-123456789012 data: {"type":"RUN_ERROR","code":"AGENT_ERROR","message":"Agent execution failed"}

Ejemplo de error con la sesión ocupada (conflicto que se puede volver a intentar):

HTTP/1.1 409 Conflict Content-Type: text/event-stream x-amzn-requestid: 12345678-1234-1234-1234-123456789012 data: {"type":"RUN_ERROR","code":"SESSION_BUSY","message":"Session operation in progress, please retry"}

Respuestas de autenticación de OAuth

OAuth-configured los agentes devuelven los errores de autenticación con códigos de estado HTTP estándar. La respuesta incluye un WWW-Authenticate encabezado (según la RFC 7235) para detectar OAuth a través de la API. GetRuntimeProtectedResourceMetadata

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: 12345678-1234-1234-1234-123456789012 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 los encabezados.