Contrato de protocolo HTTP
Entenda os requisitos para implementar o protocolo HTTP em seu aplicativo de agente. Use o protocolo HTTP para criar endpoints diretos da API REST para request/response padrões tradicionais e WebSocket endpoints para conexões de streaming bidirecionais em tempo real.
nota
Os endpoints HTTP (/invocations) e WebSocket (/ws) podem ser implantados no mesmo contêiner usando a porta 8080, permitindo que a implementação de um único agente ofereça suporte às interações tradicionais da API e ao streaming bidirecional em tempo real.
Por exemplo, código, consulte Comece a usar a AgentCore CLI.
Requisitos de contêiner
Seu agente deve ser implantado como um aplicativo em contêiner que atenda às seguintes especificações:
-
Host:
0.0.0.0 -
Porta:
8080- Porta padrão para comunicação HTTP-based do agente -
Plataforma: contêiner ARM64 - necessário para compatibilidade com o AgentCore ambiente Runtime
Requisitos de caminho
/invocações - POST
Esse é o principal endpoint de interação do agente com entrada e JSON/SSE saída JSON.
Finalidade
Recebe solicitações recebidas de usuários ou aplicativos e as processa por meio da lógica de negócios do seu agente
Casos de uso
O /invocations endpoint serve a vários propósitos principais:
-
Interações e conversas diretas do usuário
-
Integrações de API com sistemas externos
-
Processamento em lote de várias solicitações
-
Real-time respostas de streaming para operações de longa duração
Exemplo de formato de solicitação
Content-Type: application/json { "prompt": "What's the weather today?" }
Formatos de resposta
Seu agente pode responder usando um dos seguintes formatos, dependendo do caso de uso:
Resposta JSON (sem streaming)
Finalidade
Fornece respostas completas para solicitações que podem ser processadas rapidamente
Casos de uso
As respostas JSON são ideais para:
-
Cenários simples de resposta a perguntas
-
Cálculos determinísticos
-
Pesquisas rápidas de dados
-
Confirmações de status
Exemplo de formato de resposta JSON
Content-Type: application/json { "response": "Your agent's response here", "status": "success" }
Resposta SSE (streaming)
Server-sent eventos (SSE) permitem que você forneça respostas de streaming em tempo real. Para obter mais informações, consulte a especificação de Server-sent eventos
Finalidade
Permite a entrega de respostas incrementais para operações de longa duração e melhora a experiência do usuário
Casos de uso
As respostas da SSE são ideais para:
-
Real-time experiências de conversação
-
Geração progressiva de conteúdo
-
Long-running cálculos com resultados intermediários
-
Feeds e atualizações de dados ao vivo
Exemplo de formato de resposta SSE
Content-Type: text/event-stream data: {"event": "partial response 1"} data: {"event": "partial response 2"} data: {"event": "final response"}
/ws - WebSocket (Opcional)
Esse é o principal ponto final de WebSocket conexão para comunicação bidirecional em tempo real.
Finalidade
Aceita solicitações de WebSocket upgrade e mantém conexões persistentes para interações com agentes de streaming
Casos de uso
O /ws endpoint serve a vários propósitos principais:
-
Real-time interfaces de conversação
-
Sessões interativas com agentes com feedback imediato
-
Processamento de dados de streaming com comunicação bidirecional
estabelecimento de conexão
WebSocket as conexões começam com uma solicitação de upgrade HTTP:
Exemplo de solicitação de atualização 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
Exemplo de resposta de WebSocket atualização
HTTP/1.1 101 Switching Protocols Connection: Upgrade Upgrade: websocket Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
Requisitos de tratamento de mensagens
Seu WebSocket endpoint deve lidar com:
-
Aceitação da conexão: Ligue
await websocket.accept()para estabelecer a conexão -
Recepção de mensagens: Support tipos de mensagens de texto ou binárias com base nos requisitos do seu aplicativo
-
Processamento de mensagens: gerencie as mensagens recebidas de acordo com a lógica de negócios do seu agente
-
Envio de respostas: envie respostas apropriadas usando
send_text()ousend_bytes() -
Ciclo de vida da conexão: gerencie o estabelecimento, a manutenção e o término da conexão
Formatos de mensagem
Mensagens de texto
Formato JSON (recomendado)
Finalidade
Troca estruturada de dados para interações com agentes
Mensagem de exemplo
{ "prompt": "Hello, can you help me with this question?", "session_id": "session-uuid", "message_type": "user_message" }
Exemplo de resposta
{ "response": "I'd be happy to help you with your question!", "session_id": "session-uuid", "message_type": "agent_response" }
Formato de texto sem formatação
Finalidade
Comunicação simples baseada em texto
Exemplo
Hello, can you help me with this question?
Mensagens binárias
Finalidade
Support para dados não textuais, como imagens, áudio ou outros formatos binários
Casos de uso
As mensagens binárias oferecem suporte a vários cenários:
-
Multi-modal interações com agentes
-
Uploads e downloads de arquivos
-
Transmissão de dados compactados
-
Dados do protocolo binário
Requisitos de manuseio
O tratamento de mensagens binárias requer:
-
Uso
receive_bytes()esend_bytes()métodos -
Implemente o processamento apropriado de dados binários
-
Considere as limitações de tamanho da mensagem
Ciclo de vida da conexão
Estabelecimento de
-
Handshake HTTP: o cliente envia uma solicitação de WebSocket atualização
-
Resposta de atualização: o agente aceita e retorna 101 protocolos de comutação
-
WebSocket Ativo: a comunicação bidirecional começa
-
Vinculação de sessão: associe a conexão ao identificador da sessão
Troca de mensagens
-
Loop contínuo: implemente o loop de escuta de mensagens
-
Processamento de mensagens: manipule as mensagens recebidas de forma assíncrona
-
Geração de respostas: envie respostas apropriadas
-
Tratamento de erros: gerencie exceções e problemas de conexão
/ping - OBTER
Finalidade
Verifica se seu agente está operacional e pronto para lidar com as solicitações
Casos de uso
O /ping endpoint serve a vários propósitos principais:
-
Monitoramento de serviços para detectar e corrigir problemas
-
Recuperação automatizada por meio AWS da infraestrutura gerenciada
Formato de resposta
Retorna um código de status indicando a saúde do seu agente:
-
Content-Type :
application/json -
Código de status HTTP:
200para códigos de erro íntegros e apropriados para estados não íntegros
Se seu agente precisar processar tarefas em segundo plano, você poderá indicá-las com o /ping status. Se o status do ping forHealthyBusy, a sessão de tempo de execução será considerada ativa.
Exemplo de formato de resposta Ping
{ "status": "<status_value>" }
- status (obrigatório)
-
Healthy- O sistema está pronto para aceitar novos trabalhosHealthyBusy- O sistema está operacional, mas atualmente ocupado com tarefas assíncronas. Embora o status sejaHealthyBusy, a sessão de tempo de execução é considerada ativa e mantida ativa. - time_of_last_update (opcional)
-
Carimbo de data/hora Unix (em segundos) de quando a
statusúltima foi alterada. Defina-o somente em uma mudança de status real.Atenção
Não
time_of_last_updatedefina a hora atual em cada ping. Um registro de data e hora que avança a cada ping sinaliza uma mudança contínua de status, o que evita que o tempo limite da sessão ociosa seja acionado. As sessões então persistem atéMaxLifetimeesgotar sua cota de sessão. Se você omitir o campo, a plataforma rastreará as alterações de status sozinha. Se você usa o AgentCore SDK do Bedrock, a resposta do ping é tratada para você.
Respostas de autenticação OAuth
OAuth-configured os agentes seguem os padrões de autenticação RFC 6749 (OAuth 2.0
401 Não autorizado
Retornado quando o cabeçalho de autorização está ausente.
Inclui WWW-Authenticate cabeçalho:
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 os agentes retornam HTTP 403 com um ACCESS_DENIED erro e não incluem WWW-Authenticate cabeçalhos.