Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Contratto di protocollo HTTP
Comprendi i requisiti per l'implementazione del protocollo HTTP nella tua applicazione agente. Usa il protocollo HTTP per creare endpoint API REST diretti per request/response pattern tradizionali ed WebSocket endpoint per connessioni di streaming bidirezionali in tempo reale.
Nota
Entrambi gli endpoint HTTP (/invocations) e WebSocket (/ws) possono essere distribuiti sullo stesso contenitore utilizzando la porta 8080, consentendo l'implementazione di un singolo agente per supportare sia le interazioni API tradizionali che lo streaming bidirezionale in tempo reale.
Per esempio di codice, vedi Guida introduttiva all'interfaccia della riga di comando. AgentCore
Argomenti
Requisiti del contenitore
L'agente deve essere distribuito come applicazione containerizzata che soddisfi le seguenti specifiche:
-
Host:
0.0.0.0 -
Porta:
8080- Porta standard per la comunicazione con gli HTTP-based agenti -
Piattaforma: contenitore ARM64 - Necessario per la compatibilità con l'ambiente AgentCore Runtime
Requisiti del percorso
/invocazioni - POST
Questo è il principale endpoint di interazione dell'agente con input e output JSON. JSON/SSE
Scopo
Riceve le richieste in arrivo da utenti o applicazioni e le elabora tramite la logica aziendale dell'agente
Casi d'uso
L'/invocationsendpoint serve a diversi scopi chiave:
-
Interazioni e conversazioni dirette con gli utenti
-
Integrazioni API con sistemi esterni
-
Elaborazione in batch di più richieste
-
Real-time risposte in streaming per operazioni di lunga durata
Esempio di formato di richiesta
Content-Type: application/json { "prompt": "What's the weather today?" }
Formati di risposta
Il tuo agente può rispondere utilizzando uno dei seguenti formati a seconda del caso d'uso:
Risposta JSON (non in streaming)
Scopo
Fornisce risposte complete alle richieste che possono essere elaborate rapidamente
Casi d'uso
Le risposte JSON sono ideali per:
-
Scenari semplici con risposta a domande
-
Calcoli deterministici
-
Ricerche rapide dei dati
-
Conferme di stato
Esempio di formato di risposta JSON
Content-Type: application/json { "response": "Your agent's response here", "status": "success" }
Risposta SSE (streaming)
Server-sent events (SSE) consentono di fornire risposte in streaming in tempo reale. Per ulteriori informazioni, consulta le specifiche degli
Scopo
Consente una risposta incrementale per operazioni di lunga durata e una migliore esperienza utente
Casi d'uso
Le risposte SSE sono ideali per:
-
Real-time esperienze conversazionali
-
Generazione progressiva di contenuti
-
Long-running calcoli con risultati intermedi
-
Feed e aggiornamenti di dati in tempo reale
Esempio di formato di risposta SSE
Content-Type: text/event-stream data: {"event": "partial response 1"} data: {"event": "partial response 2"} data: {"event": "final response"}
/ws - WebSocket (Facoltativo)
Questo è l'endpoint di WebSocket connessione principale per la comunicazione bidirezionale in tempo reale.
Scopo
Accetta richieste di WebSocket aggiornamento e mantiene connessioni permanenti per le interazioni con gli agenti di streaming
Casi d'uso
L'/wsendpoint serve a diversi scopi chiave:
-
Real-time interfacce conversazionali
-
Sessioni interattive con agenti con feedback immediato
-
Elaborazione dei dati in streaming con comunicazione bidirezionale
Stabilimento della connessione
WebSocket le connessioni iniziano con una richiesta di aggiornamento HTTP:
Esempio di richiesta di aggiornamento 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
Esempio di risposta all' WebSocket aggiornamento
HTTP/1.1 101 Switching Protocols Connection: Upgrade Upgrade: websocket Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
Requisiti di gestione dei messaggi
Il tuo WebSocket endpoint deve gestire:
-
Accettazione della connessione: chiamata
await websocket.accept()per stabilire la connessione -
Ricezione dei messaggi: supporta tipi di messaggi di testo o binari in base ai requisiti dell'applicazione
-
Elaborazione dei messaggi: gestisci i messaggi in arrivo in base alla logica aziendale del tuo agente
-
Invio delle risposte: invia le risposte appropriate utilizzando
send_text()osend_bytes() -
Ciclo di vita della connessione: gestisci la creazione, la manutenzione e la cessazione della connessione
Formati dei messaggi
Messaggi di testo
Formato JSON (consigliato)
Scopo
Scambio di dati strutturato per le interazioni con gli agenti
Messaggio di esempio
{ "prompt": "Hello, can you help me with this question?", "session_id": "session-uuid", "message_type": "user_message" }
Esempio di risposta
{ "response": "I'd be happy to help you with your question!", "session_id": "session-uuid", "message_type": "agent_response" }
Formato di testo normale
Scopo
Comunicazione semplice basata su testo
Esempio
Hello, can you help me with this question?
Messaggi binari
Scopo
Supporto per dati non testuali come immagini, audio o altri formati binari
Casi d'uso
I messaggi binari supportano diversi scenari:
-
Multi-modal interazioni tra agenti
-
Upload e download di file
-
Trasmissione di dati compressi
-
Dati di protocollo binario
Requisiti di gestione
La gestione dei messaggi binari richiede:
-
Uso
receive_bytes()esend_bytes()metodi -
Implementare un'elaborazione di dati binari appropriata
-
Considerate le limitazioni relative alle dimensioni dei messaggi
Ciclo di vita della connessione
Stabilimento della connessione
-
Handshake HTTP: il client invia una richiesta di WebSocket aggiornamento
-
Risposta all'aggiornamento: l'agente accetta e restituisce 101 protocolli di commutazione
-
WebSocket Attivo: inizia la comunicazione bidirezionale
-
Associazione di sessione: associa la connessione all'identificatore di sessione
Scambio di messaggi
-
Loop continuo: implementa il ciclo di ascolto dei messaggi
-
Elaborazione dei messaggi: gestisce i messaggi in arrivo in modo asincrono
-
Generazione di risposte: invia le risposte appropriate
-
Gestione degli errori: gestione delle eccezioni e dei problemi di connessione
/ping - GET
Scopo
Verifica che il tuo agente sia operativo e pronto a gestire le richieste
Casi d'uso
L'/pingendpoint serve a diversi scopi chiave:
-
Monitoraggio del servizio per rilevare e risolvere i problemi
-
Ripristino automatico tramite l' AWS infrastruttura gestita
Formato di risposta
Restituisce un codice di stato che indica lo stato di salute del tuo agente:
-
Content-Type :
application/json -
Codice di stato HTTP:
200per codici di errore integri e appropriati per stati non integri
Se il tuo agente deve elaborare attività in background, puoi indicarlo con lo /ping stato. Se lo stato del ping èHealthyBusy, la sessione di runtime è considerata attiva.
Esempio di formato di risposta Ping
{ "status": "<status_value>" }
- stato (richiesto)
-
Healthy- Il sistema è pronto ad accettare nuovi lavoriHealthyBusy- Il sistema è operativo ma attualmente è occupato con attività asincrone. Mentre lo stato èHealthyBusy, la sessione di runtime è considerata attiva e viene mantenuta attiva. - time_of_last_update (opzionale)
-
Timestamp Unix (in secondi) dell'ultima modifica.
statusImpostalo solo su un cambio di stato effettivo.avvertimento
Non impostate
time_of_last_updatel'ora corrente per ogni ping. Un timestamp che avanza ad ogni ping segnala un continuo cambiamento di stato, che impedisce che il timeout della sessione inattiva si attivi. Le sessioni quindi persistono finoMaxLifetimeall'esaurimento della quota di sessione e possono esaurire la quota di sessione. Se ometti il campo, la piattaforma tiene traccia delle modifiche di stato da sola. Se utilizzi Bedrock AgentCore SDK, la risposta al ping viene gestita per te.
Gestione degli errori
A differenza dei AG-UI protocolli A2A, MCP e, il protocollo HTTP non raggruppa gli errori in una busta specifica del protocollo. Il servizio restituisce gli errori direttamente come risposte HTTP native: il codice di stato HTTP riflette l'eccezione e l'intestazione della x-amzn-ErrorType risposta riporta il nome dell'eccezione. La tabella seguente elenca le eccezioni che puoi ricevere.
| Codice di errore HTTP | Eccezione di runtime () x-amzn-ErrorType |
Description |
|---|---|---|
|
400 |
ValidationException |
Dati o parametri della richiesta non validi |
|
401 |
UnauthorizedException |
Autenticazione richiesta o credenziali (agenti) non valide OAuth-configured |
|
402 |
ServiceQuotaExceededException |
La richiesta supererebbe una quota di servizio |
|
403 |
AccessDeniedException |
Autorizzazioni insufficienti per l'operazione richiesta |
|
404 |
ResourceNotFoundException |
La risorsa richiesta non esiste |
|
409 |
ConflictException |
Conflitto di risorse: la risorsa esiste già |
|
409 |
RetryableConflictException |
Operazione della sessione in corso, riprova |
|
424 |
RuntimeClientError |
Il container del tuo agente ha restituito un errore 4xx o 5xx: controlla i tuoi log CloudWatch |
|
429 |
ThrottlingException |
Troppe richieste: il limite di frequenza delle richieste è stato superato |
|
500 |
InternalServerException |
Si è verificato un errore imprevisto durante l'elaborazione della richiesta |
ConflictExceptioned RetryableConflictException entrambi restituiscono HTTP 409. L'x-amzn-ErrorTypeintestazione e il messaggio li distinguono. Il servizio restituisce RetryableConflictException (Session operation in progress, please retry) quando una seconda operazione è indirizzata a una sessione di cui il servizio sta eseguendo il provisioning o la disattivazione. Questa condizione è transitoria e riprovabile. Riprova con un breve backoff esponenziale. Gli AWS SDK riprovano automaticamente questa eccezione quando i tentativi predefiniti sono abilitati. Se chiami l'API direttamente senza un AWS SDK, devi riprovare tu stesso.
Nota
ServiceQuotaExceededExceptionrestituisce HTTP 402 su questa superficie HTTP nativa. Nel protocollo A2A restituisce HTTP 429, lo stesso stato HTTP del throttling. Nel protocollo MCP condivide il codice di JSON-RPC errore di limitazione () ma restituisce HTTP 200. -32003 Su di AG-UI esso utilizza un codice SERVICE_QUOTA_EXCEEDED SSE distinto e restituisce HTTP 429.
Risposte di autenticazione OAuth
OAuth-configured gli agenti seguono gli standard di autenticazione RFC 6749 (OAuth 2.0).
401 - Autorizzazione negata
Restituito quando manca l'intestazione di autorizzazione.
Include l' WWW-Authenticate intestazione:
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 gli agenti restituiscono HTTP 403 con un ACCESS_DENIED errore e non includono WWW-Authenticate le intestazioni.