Contrato de protocolo HTTP
Comprenda los requisitos para implementar el protocolo HTTP en su aplicación de agente. Utilice el protocolo HTTP para crear puntos finales de la API REST directos para los request/response patrones tradicionales y puntos de WebSocket enlace para conexiones de streaming bidireccionales en tiempo real.
nota
Los puntos de enlace HTTP (/invocations) y WebSocket (/ws) se pueden implementar en el mismo contenedor mediante el puerto 8080, lo que permite la implementación de un solo agente para admitir tanto las interacciones de API tradicionales como la transmisión bidireccional en tiempo real.
Para ver código de ejemplo, consulte Comenzar con la AgentCore CLI.
Requisitos de contenedores
Su 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 con los agentes HTTP-based -
Plataforma: contenedor ARM64. Necesario para la compatibilidad con el AgentCore entorno Runtime
Requisitos de ruta
/invocations - POST
Este es el punto final de interacción del agente principal con entrada y JSON/SSE salida de JSON.
Finalidad
Recibe las solicitudes entrantes de los usuarios o las aplicaciones y las procesa según la lógica empresarial de su agente
Casos de uso
El /invocations punto final cumple varios propósitos clave:
-
Interacciones y conversaciones directas con los usuarios
-
Integraciones de API con sistemas externos
-
Procesamiento por lotes de múltiples solicitudes
-
Real-time transmisión de respuestas para operaciones de larga duración
Ejemplo de formato de solicitud
Content-Type: application/json { "prompt": "What's the weather today?" }
Formatos de respuesta
Su agente puede responder mediante uno de los siguientes formatos, según el caso de uso:
Respuesta JSON (sin transmisión)
Finalidad
Proporciona respuestas completas a las solicitudes que se pueden procesar rápidamente
Casos de uso
Las respuestas JSON son ideales para:
-
Escenarios sencillos de preguntas y respuestas
-
Cálculos deterministas
-
Búsquedas rápidas de datos
-
Confirmaciones de estado
Ejemplo de formato de respuesta JSON
Content-Type: application/json { "response": "Your agent's response here", "status": "success" }
Respuesta SSE (transmisión)
Server-sent los eventos (SSE) le permiten ofrecer respuestas de streaming en tiempo real. Para obtener más información, consulte la especificación de Server-sent los eventos
Finalidad
Permite ofrecer una respuesta incremental para operaciones de larga duración y mejorar la experiencia del usuario
Casos de uso
Las respuestas SSE son ideales para:
-
Real-time experiencias conversacionales
-
Generación progresiva de contenido
-
Long-running cálculos con resultados intermedios
-
Actualizaciones y actualizaciones de datos en tiempo real
Ejemplo de formato de respuesta SSE
Content-Type: text/event-stream data: {"event": "partial response 1"} data: {"event": "partial response 2"} data: {"event": "final response"}
/ws: WebSocket (opcional)
Este es el punto final de WebSocket conexión principal para la comunicación bidireccional en tiempo real.
Finalidad
Acepta solicitudes de WebSocket actualización y mantiene conexiones persistentes para las interacciones entre los agentes de streaming
Casos de uso
El /ws punto final cumple varios propósitos clave:
-
Real-time interfaces conversacionales
-
Sesiones interactivas para agentes con comentarios inmediatos
-
Procesamiento de datos en streaming con comunicación bidireccional
Establecimiento de conexión
WebSocket las conexiones comienzan con una solicitud de actualización HTTP:
Ejemplo de solicitud de actualización HTTP
GET /ws HTTP/1.1 Host: agent-endpoint Connection: Upgrade Upgrade: websocket Sec-WebSocket-Version: 13 Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== X-Amzn-Bedrock-AgentCore-Runtime-Session-Id: session-uuid
Ejemplo de respuesta WebSocket de actualización
HTTP/1.1 101 Switching Protocols Connection: Upgrade Upgrade: websocket Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
Requisitos de manejo de mensajes
Su WebSocket terminal debe gestionar:
-
Aceptación de la conexión: llame
await websocket.accept()para establecer la conexión -
Recepción de mensajes: Support tipos de mensajes de texto o binarios según los requisitos de su aplicación
-
Procesamiento de mensajes: gestione los mensajes entrantes de acuerdo con la lógica empresarial de su agente
-
Envío de respuestas: envíe las respuestas apropiadas utilizando
send_text()osend_bytes() -
Ciclo de vida de la conexión: gestione el establecimiento, el mantenimiento y la terminación de la conexión
Formatos de mensajes
Mensajes de texto
Formato JSON (recomendado)
Finalidad
Intercambio de datos estructurado para las interacciones entre los agentes
Ejemplo de mensaje
{ "prompt": "Hello, can you help me with this question?", "session_id": "session-uuid", "message_type": "user_message" }
Ejemplo de respuesta
{ "response": "I'd be happy to help you with your question!", "session_id": "session-uuid", "message_type": "agent_response" }
Formato de texto plano
Finalidad
Comunicación sencilla basada en texto
Ejemplo
Hello, can you help me with this question?
Mensajes binarios
Finalidad
Support para datos no textuales, como imágenes, audio u otros formatos binarios
Casos de uso
Los mensajes binarios admiten varios escenarios:
-
Multi-modal interacciones entre agentes
-
Cargas y descargas de archivos
-
Transmisión de datos comprimidos
-
Datos de protocolo binario
Requisitos de manejo
El manejo de mensajes binarios requiere:
-
Uso
receive_bytes()ysend_bytes()métodos -
Implemente el procesamiento de datos binarios adecuado
-
Tenga en cuenta las limitaciones de tamaño del mensaje
Ciclo de vida de
Establecimiento de conexión
-
HTTP Handshake: el cliente envía una solicitud de WebSocket actualización
-
Respuesta de actualización: el agente acepta y devuelve 101 protocolos de conmutación
-
WebSocket Activa: comienza la comunicación bidireccional
-
Vinculación de sesión: asocie la conexión al identificador de sesión
Intercambio de mensajes
-
Bucle continuo: Implemente un ciclo de escucha de mensajes
-
Procesamiento de mensajes: gestione los mensajes entrantes de forma asíncrona
-
Generación de respuestas: envíe las respuestas apropiadas
-
Gestión de errores: gestione las excepciones y los problemas de conexión
/ping - OBTENER
Finalidad
Verifica que su agente esté operativo y preparado para gestionar las solicitudes
Casos de uso
El /ping punto final cumple varios propósitos clave:
-
Supervisión del servicio para detectar y solucionar problemas
-
Recuperación automatizada a través AWS de una infraestructura gestionada
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
Si su agente necesita procesar tareas en segundo plano, puede indicarlo con el /ping estado. Si el estado del ping esHealthyBusy, la sesión en tiempo de ejecución se considera activa.
Ejemplo de formato de respuesta de ping
{ "status": "<status_value>" }
- estado (obligatorio)
-
Healthy- El sistema está preparado para aceptar nuevos trabajosHealthyBusy- El sistema está operativo pero actualmente está ocupado con tareas asíncronas. Mientras el estado esHealthyBusy, la sesión en tiempo de ejecución se considera activa y se mantiene activa. - time_of_last_update (opcional)
-
Marca de tiempo de Unix (en segundos) de cuándo se modificó por última vez.
statusConfigúrelo solo en caso de un cambio de estado real.aviso
No configure
time_of_last_updatela 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 hastaMaxLifetimeagotar 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.
Respuestas de autenticación de OAuth
OAuth-configured los agentes siguen los estándares de autenticación RFC 6749 (OAuth 2.0)
401 sin autorización
Se devuelve cuando falta el encabezado de autorización.
Incluye WWW-Authenticate encabezado:
WWW-Authenticate: Bearer resource_metadata="https://bedrock-agentcore.{region}.amazonaws.com/runtimes/{ESCAPED_ARN}/invocations/.well-known/oauth-protected-resource?qualifier={QUALIFIER}"
nota
SigV4-configured los agentes devuelven el HTTP 403 con un ACCESS_DENIED error y no incluyen WWW-Authenticate encabezados.