As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
AG-UI contrato de protocolo
O contrato de AG-UI protocolo define os requisitos para a implementação da comunicação entre agentes e usuários no Amazon Bedrock Runtime. AgentCore Este contrato especifica os requisitos técnicos, os endpoints e os padrões de comunicação que seu AG-UI agente deve implementar.
Por exemplo, código, consulte Implantar AG-UI servidores em AgentCore tempo de execução.
Tópicos
Requisitos de implementação do protocolo
Seu AG-UI agente deve implementar esses requisitos específicos de protocolo:
-
Transporte: Server-Sent Eventos (SSE) ou WebSocket - SSE fornece streaming unidirecional do servidor para o cliente, enquanto WebSocket permite a comunicação bidirecional em tempo real
-
Gerenciamento de sessão: a plataforma adiciona automaticamente o
X-Amzn-Bedrock-AgentCore-Runtime-Session-Idcabeçalho para isolamento da sessão
Requisitos de container
Seu AG-UI 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 com AG-UI agentes (igual ao protocolo HTTP) -
Plataforma: contêiner ARM64 - necessário para compatibilidade com o ambiente de execução AWS Amazon Bedrock AgentCore
Requisitos de caminho
/invocações - POST
Finalidade
Recebe solicitações de usuários e transmite respostas como Server-Sent eventos (SSE)
Casos de uso
O endpoint de invocações serve a vários propósitos principais:
-
Respostas de bate-papo em streaming
-
Status do agente e etapas de raciocínio
-
Chamadas e resultados de ferramentas
Formato de solicitação
O Amazon Bedrock AgentCore passa as cargas de solicitação diretamente para o seu contêiner sem validação. Para ser AG-UI-compliant, suas solicitações devem seguir o RunAgentInput formato. Sua implementação de contêiner determina quais campos são obrigatórios e como os erros de validação são tratados.
AG-UI-compliant os agentes esperam uma carga útil RunAgentInput JSON. Exemplo:
{ "threadId": "thread-123", "runId": "run-456", "messages": [{"id": "msg-1", "role": "user", "content": "Hello, agent!"}], "tools": [], "context": [], "state": {}, "forwardedProps": {} }
Para obter os detalhes completos do RunAgentInput esquema e do formato da mensagem, consulte AG-UI Tipos
Formato de resposta
AG-UI os agentes respondem com fluxos 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
Finalidade
Fornece comunicação bidirecional em tempo real entre clientes e agentes
Casos de uso
O WebSocket endpoint serve a vários propósitos principais:
-
Real-time interfaces conversacionais
-
Sessões interativas de agentes com interrupções do usuário
-
Multi-turn conversas com conexões persistentes
/ping - OBTENHA
Finalidade
Verifica se seu AG-UI agente está operacional e pronto para lidar com solicitações
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 saudáveis e apropriados para estados não íntegros
{ "status": "Healthy" }
statusé obrigatório e é um dos Healthy ouHealthyBusy. Enquanto o status forHealthyBusy, a sessão de tempo de execução é mantida ativa.
Um time_of_last_update campo opcional (um carimbo de data/hora do Unix em segundos) pode ser incluído para informar quando a status última alteração foi feita.
Atenção
Não time_of_last_update defina a hora atual em cada ping. Um carimbo de data/hora que avança a cada ping sinaliza uma mudança contínua de status, o que impede que o tempo limite da sessão ociosa seja acionado — as sessões então persistem até MaxLifetime esgotar sua cota de sessão. Se você omitir o campo, a plataforma rastreará as alterações de status sozinha. Se você usa o Bedrock AgentCore SDK, a resposta do ping é tratada para você.
Requisitos de autenticação
AG-UI os agentes oferecem suporte a vários mecanismos de autenticação:
Tokens portadores do OAuth 2.0
Para autenticação AG-UI do cliente, inclua o token Bearer nos cabeçalhos da solicitação:
Authorization: Bearer <oauth-token> X-Amzn-Bedrock-AgentCore-Runtime-Session-Id: <session-id>
Autenticação SigV4
A autenticação AWS SigV4 padrão também é suportada para acesso programático.
Tratamento de erros
AG-UI serializa cada erro como um RUN_ERROR evento SSE (Content-Type: text/event-stream), independentemente de o erro ocorrer antes ou durante o streaming. As categorias diferem somente no código de status HTTP que acompanha o evento:
-
Connection-level erros: ocorrem antes que a solicitação chegue ao seu contêiner (autenticação, autorização, validação, limitação, conflitos de sessão). O
RUN_ERRORevento é retornado com o código de status HTTP real do erro (por exemplo, 401, 403 ou 409). -
Erros de tempo de execução: ocorrem durante a execução do agente após o início do stream. Só
AGENT_ERRORse enquadra nessa categoria. SeuRUN_ERRORevento retorna HTTP 200 porque o fluxo já começou.
A tabela a seguir mapeia cada exceção de tempo de execução para seu código de erro AG-UI SSE, código de status HTTP e mensagem. Algumas exceções compartilham um código de erro SSE, mas retornam mensagens diferentes, então elas são listadas como linhas separadas.
| Código de erro SSE | Exceção de execução | Código de erro HTTP | Mensagem de erro |
|---|---|---|---|
|
|
UnauthorizedException |
401 |
Autenticação necessária ou credenciais inválidas |
|
|
AccessDeniedException |
403 |
Permissões insuficientes para a operação solicitada |
|
|
ValidationException |
400 |
Dados ou parâmetros de solicitação inválidos |
|
|
ThrottlingException |
429 |
Muitas solicitações do cliente |
|
|
ConflictException |
409 |
Conflito de recursos - O recurso já existe |
|
|
RetryableConflictException |
409 |
Operação da sessão em andamento, tente novamente |
|
|
ServiceQuotaExceededException |
429 |
Cota de serviço excedida |
|
|
RuntimeClientError |
200 |
O código do agente falhou durante a execução — verifique seus CloudWatch registros |
|
|
Qualquer outra exceção |
500 |
Ocorreu um erro interno ao processar a solicitação |
ConflictExceptione RetryableConflictException ambos usam o código de erro SESSION_BUSY SSE (HTTP 409), mas são diferenciados por sua mensagem. O serviço retorna RetryableConflictException (Session operation in progress, please retry) quando uma segunda operação atinge uma sessão enquanto o serviço está provisionando ou desativando essa sessão. É transitório e pode ser repetido — tente novamente com um pequeno recuo exponencial, porque AG-UI os clientes não o fazem automaticamente.
Exemplo de erro de tempo de execução (falha do 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"}
Exemplo de erro de sessão ocupada (conflito que pode ser repetido):
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"}
Respostas de autenticação OAuth
OAuth-configured os agentes retornam erros de autenticação com códigos de status HTTP padrão. A resposta inclui um WWW-Authenticate cabeçalho (de acordo com a RFC 7235
Exemplo de erro de autenticação 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 os agentes retornam HTTP 403 com um ACCESS_DENIED erro e não incluem WWW-Authenticate cabeçalhos.