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 A2A
Il contratto di protocollo A2A definisce i requisiti per l'implementazione della comunicazione da agente a agente in Amazon Bedrock Runtime. AgentCore Questo contratto specifica i requisiti tecnici, gli endpoint e i modelli di comunicazione che il server A2A deve implementare.
Per esempio di codice, vedi Distribuire i server A2A in Runtime. AgentCore
Argomenti
Requisiti di implementazione del protocollo
Il tuo server A2A deve implementare questi requisiti di protocollo specifici:
-
Trasporto: JSON-RPC 2.0
su HTTP: consente una comunicazione standardizzata da agente a agente -
Gestione delle sessioni: la piattaforma aggiunge
X-Amzn-Bedrock-AgentCore-Runtime-Session-Idautomaticamente un'intestazione per l'isolamento della sessione -
Agent Discovery: è necessario fornire l'Agent Card all'endpoint
/.well-known/agent-card.json
Requisiti del contenitore
Il server A2A deve essere distribuito come applicazione containerizzata che soddisfi queste specifiche:
-
Host:
0.0.0.0 -
Porta:
9000- Porta standard per la comunicazione con server A2A (diversa dai protocolli HTTP e MCP) -
Piattaforma: contenitore ARM64 - Necessario per la compatibilità con AWS l'ambiente di runtime Amazon Bedrock AgentCore
Requisiti del percorso
/- POSTA
Scopo
Riceve messaggi JSON-RPC 2.0 e li elabora tramite le funzionalità del vostro agente, trasmissione completa del payload dell'InvokeAgentRuntimeAPI con i messaggi del protocollo A2A
Casi d’uso
L'endpoint root serve a diversi scopi chiave:
-
Agent-to-agent comunicazione e collaborazione
-
Multi-step flussi di lavoro degli agenti e delega delle attività
-
Real-time esperienze conversazionali tra agenti
-
Richiamo degli strumenti e condivisione delle capacità
Formato della richiesta
I server A2A JSON-RPC prevedono richieste in formato 2.0:
Content-Type: application/json { "jsonrpc": "2.0", "id": "req-001", "method": "message/send", "params": { "message": { "role": "user", "parts": [ { "kind": "text", "text": "Your message content here" } ], "messageId": "unique-message-id" } } }
Formato della risposta
I server A2A rispondono con risposte in formato JSON-RPC 2.0 contenenti attività e artefatti:
Content-Type: application/json { "jsonrpc": "2.0", "id": "req-001", "result": { "artifacts": [ { "artifactId": "unique-artifact-id", "name": "agent_response", "parts": [ { "kind": "text", "text": "Agent response content" } ] } ] } }
known/agent/.well- -card.json - GET
Scopo
Fornisce i metadati della scheda agente per la scoperta degli agenti e la pubblicità delle capacità
Casi d’uso
L'endpoint Agent Card serve a diversi scopi chiave:
-
Individuazione degli agenti nei sistemi multi-agente
-
Pubblicità delle capacità e delle competenze
-
Specificazione dei requisiti di autenticazione
-
Configurazione degli endpoint del servizio
Formato della risposta
Restituisce i metadati JSON che descrivono l'identità e le funzionalità dell'agente:
Content-Type: application/json { "name": "Agent Name", "description": "Agent description and purpose", "version": "1.0.0", "url": "https://bedrock-agentcore.region.amazonaws.com/runtimes/agent-arn/invocations/", "protocolVersion": "0.3.0", "preferredTransport": "JSONRPC", "capabilities": { "streaming": true }, "defaultInputModes": ["text"], "defaultOutputModes": ["text"], "skills": [ { "id": "skill-id", "name": "Skill Name", "description": "Skill description and capabilities", "tags": [] } ] }
/ping - GET
Scopo
Verifica che il server A2A sia operativo e pronto a gestire le richieste
Formato della 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
{ "status": "Healthy" }
statusè obbligatorio ed è uno dei seguentiHealthy. HealthyBusy Mentre lo stato èHealthyBusy, la sessione di runtime viene mantenuta attiva.
È possibile includere un time_of_last_update campo opzionale (un timestamp Unix in secondi) per segnalare l'statusultima modifica.
avvertimento
Non impostate l'ora corrente time_of_last_update 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 fino MaxLifetime all'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.
Requisiti di autenticazione
I server A2A supportano diversi meccanismi di autenticazione:
Token al portatore OAuth 2.0
Per l'autenticazione del client A2A, includi il token Bearer nelle intestazioni delle richieste:
Authorization: Bearer <oauth-token> X-Amzn-Bedrock-AgentCore-Runtime-Session-Id: <session-id>
Autenticazione SIGv4
L'autenticazione AWS SigV4 standard è supportata anche per l'accesso programmatico.
Gestione degli errori
I server A2A restituiscono gli errori come risposte di errore standard 2.0. JSON-RPC La tabella seguente associa ogni eccezione di runtime al relativo codice JSON-RPC di errore, codice di stato HTTP e messaggio. Alcune eccezioni condividono un codice JSON-RPC di errore ma restituiscono messaggi diversi, quindi sono elencate come righe separate.
| JSON-RPC Codice di errore | Eccezione di runtime | Codice di errore HTTP | JSON-RPC Messaggio di errore |
|---|---|---|---|
|
Non applicabile |
AccessDeniedException |
403 |
Accesso negato (restituito come errore HTTP standard, non come JSON-RPC errore) |
|
-32051 |
ResourceNotFoundException |
404 |
Risorsa non trovata - La risorsa richiesta non esiste |
|
-32052 |
ValidationException |
400 |
Errore di convalida - Dati di richiesta non validi |
|
-32053 |
ThrottlingException |
429 |
Limite di frequenza superato: troppe richieste |
|
-32053 |
ServiceQuotaExceededException |
429 |
Limite di frequenza superato: troppe richieste |
|
-32054 |
ConflictException |
409 |
Conflitto di risorse: la risorsa esiste già |
|
-32054 |
RetryableConflictException |
409 |
Operazione della sessione in corso, riprova |
|
-32055 |
RuntimeClientError |
424 |
Errore di runtime del client: controlla i CloudWatch log per ulteriori informazioni |
|
-32603 |
Qualsiasi altra eccezione |
500 |
Errore interno: si è verificato un errore imprevisto durante l'elaborazione della richiesta |
ConflictExceptioned RetryableConflictException entrambi utilizzano JSON-RPC un codice di errore -32054 (HTTP 409). I loro messaggi li contraddistinguono. 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. Il chiamante deve riprovare con un breve backoff esponenziale, perché i client A2A non lo riprovano automaticamente.
Nota
A differenza della convenzione della specifica A2A di fornire JSON-RPC errori su una risposta HTTP 200, AgentCore Runtime restituisce il vero codice di stato HTTP (ad esempio, 409 o 404). Analizza il testo anche JSON-RPC error in caso di risposte diverse da 2xx, in modo che il cliente non perda il codice di errore (ad esempio-32054) o il Session operation in progress, please retry messaggio di cui ha bisogno per avviare un nuovo tentativo.
Esempio di risposta all'errore:
{ "jsonrpc": "2.0", "id": "req-001", "error": { "code": -32052, "message": "Validation error - Invalid request data" } }
Risposte di autenticazione OAuth
OAuth-configured gli agenti seguono gli standard di autenticazione RFC 6749 (OAuth 2.0).
401 Non autorizzato - Autenticazione mancante
HTTP/1.1 401 Unauthorized 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.