Il protocollo A2A, o Agent2Agent, è uno standard aperto che consente la comunicazione strutturata tra agenti AI, client e strumenti. In questo tutorial, è possibile creare un sistema di agenti in cui un client di chat elabora le query degli utenti e le invia a un agente AI in esecuzione su un server compatibile con A2A.
La maggior parte delle applicazioni di agentic AI implementa una comunicazione personalizzata tra i componenti (ad esempio, ChatChain di ChatDev), rendendo difficile il riutilizzo dello stesso agente in diverse applicazioni o l'integrazione di strumenti esterni. Questa mancanza di standardizzazione impedisce l'interoperabilità e limita lo sviluppo di un ecosistema di agenti più ampio.
A2A risolve questa limitazione separando il livello di comunicazione dalla logica dell'agente attraverso un protocollo standardizzato basato su HTTP, JSON-RPC 2.0 e Server-Sent Events (SSE). Questo disaccoppiamento consente agli agenti di collaborare con altri agenti, soddisfare le richieste dei clienti e accedere a strumenti esterni senza codice di integrazione personalizzato.
A2A supporta architetture decentralizzate che consentono ai team di far evolvere i propri sistemi di AI in modo incrementale senza violare il codice del cliente. I team possono aggiornare gli strumenti, scambiare modelli o modificare il comportamento degli agenti mantenendo un'interfaccia coerente attraverso i workflow complessi.
Gli agenti si scambiano informazioni in messaggi strutturati nel formato JSON-RPC che includono metadati che arricchiscono le interazioni degli agenti con chiarezza e coerenza. Ogni server A2A espone una AgentCard a un endpoint noto (.well-known/agent-card.json) che descrive le funzionalità dell'agente come dati JSON strutturati. Pertanto, consente ai clienti di scoprire dinamicamente cosa può fare un agente, in modo simile a come la documentazione dell'API descrive gli endpoint disponibili.
Segui la creazione e l'esecuzione di un sistema di agenti A2A e acquisisci esperienza pratica con:
Nota: se hai lavorato con ACP (Agent Communication Protocol), puoi riconoscere le somiglianze. ACP, originariamente sviluppato da BeeAI di IBM, ha unito le forze con Google A2A nell'ambito della Linux Foundation. BeeAI ora utilizza gli adattatori A2A (A2AServer e A2AAgent) per fornire comunicazioni conformi allo standard A2A. A2A collabora anche con MCP (Model Context Protocol) per consentire agli agenti di interagire con fonti e strumenti di dati, creando ecosistemi di agenti interoperabili.
Questo progetto dimostra come l'A2A consenta una separazione netta tra l'interfaccia client e la logica dell'agente.
Il workflow segue questa sequenza:
Questo workflow dimostra un modello riutilizzabile applicabile ai casi d'uso che richiedono una comunicazione strutturata client-agente come chatbot, sistemi di automazione, agenti di supporto clienti e assistenti di ricerca con orchestrazione degli strumenti.
Questo progetto utilizza un singolo Agente AI con molteplici funzionalità di strumenti. Nei sistemi più complessi, è possibile implementare più agenti specializzati, ciascuno focalizzato su domini o attività specifici.
RequirementAgent (BeeAI): un agente dichiarativo che seleziona e coordina dinamicamente più strumenti in base alla richiesta dell'utente. Utilizza:
Il server A2A (
2. Configurazione dell'agente: crea un RequirementAgent con strumenti e memoria per gestire il ciclo di vita dell'agente.
3. Configurazione del server: espone l'agente tramite endpoint HTTP conformi a A2A
Il server espone automaticamente una AgentCard all'indirizzo /.well-known/agent-card.json che descrive le funzionalità dell'agente e aiuta a convalidarne le configurazioni.
Il client A2A (
Configurazione della connessione: crea una scheda client A2A
Il
Scambio di messaggi: invia prompt asincroni ed elabora le risposte:
Il
Ecco i requisiti di sistema per eseguire questo progetto:
Prima di iniziare, ecco una panoramica degli strumenti necessari per questo progetto:
Questo progetto utilizza Ollama come fornitore di modelli per l'agente AI. Segui questi passaggi per configurare Ollama:
Nota: puoi utilizzare qualsiasi modello compatibile con Ollama, impostando la variabile d'ambiente
Per eseguire questo progetto, clona il repository GitHub utilizzando https://github.com/IBM/ibmdotcom-tutorials.git come URL HTTPS. Per i passaggi dettagliati su come clonare un repository, consulta la documentazione di GitHub.
Questo tutorial è reperibile all'interno della directory projects del repository.
All'interno di un terminale, vai alla directory di questo tutorial:
Questo progetto richiede due script Python separati per l'esecuzione simultanea, uno per il server e l'altro per il client. È necessario aprire due finestre o schede del terminale.
Tieni aperto il suo terminale attuale, poi apri un secondo terminale e assicurati che entrambi siano indirizzati nella directory di progetto corretta (la directory principale
Utilizzi un IDE?
Se stai usando un IDE come Visual Studio Code, puoi utilizzare la funzionalità di suddivisione del terminale per gestire più terminali fianco a fianco.
In alternativa, apri due finestre di terminale autonome e accedi in ciascuna alla directory del progetto.
Gli ambienti virtuali aiutano a mantenere separate e mantenute le dipendenze. Per mantenere separate le dipendenze tra server e client, crea un ambiente virtuale per ogni componente.
Per il server:
Vai alla directory
Crea un ambiente virtuale con Python 3.11:
Attiva l'ambiente virtuale:
Nota per gli utenti Windows: usa venv\ Scripts\ activate per attivare l'ambiente virtuale.
Per il client:
Vai alla directory
Crea e attiva un ambiente virtuale:
Installa le dipendenze richieste per ogni componente eseguendo questo codice in ogni terminale:
Puoi eseguire
Nel primo terminale, avvia il server dell'agente A2A:
Dovresti vedere:
Il server è ora in ascolto delle richieste in ingresso dall'applicazione client, pronto a supportare la comunicazione da agente ad agente.
Nell'altro terminale, avvia il client A2A:
Questo dovrebbe richiedere l'input:
Digita un messaggio nel terminale client e premi
Nel terminale del server, puoi vedere i log del protocollo A2A che mostrano la comunicazione con le notifiche push:
La prima richiesta recupera l'oggetto AgentCard che descrive le funzionalità dell'agente. La seconda richiesta invia il tuo messaggio come
Nota: gli output degli LLM sono probabilistici e possono variare ogni volta che esegui il workflow, anche con lo stesso input.
Sperimenta con diversi tipi di query per testare i vari strumenti dell'agente:
Accedi a https://0.0.0.0:9999/.well-known/agent-card.json nel tuo browser per visualizzare
Questo documento JSON descrive:
Questa AgentCard consente a qualsiasi cliente conforme ad A2A di scoprire e interagire con l'agente senza conoscere preventivamente i dettagli di implementazione.
In questo tutorial, hai creato un sistema di chat utilizzando un server di reclamo A2A che esponeva un'interfaccia strutturata per la comunicazione tra il client e l'agente. Separando il livello di messaggistica dalla logica interna, il protocollo Agent2Agent consente ai team di aggiornare le funzionalità degli agenti, scambiare modelli o modificare le configurazioni degli strumenti senza modificare il codice del client. Questa flessibilità è particolarmente utile quando si coordinano le attività che richiedono input, si monitora lo stato delle attività o si tratta di ogni operazione come un'unità di lavoro discreta.
L'A2A funziona definendo un formato di messaggio comune che qualsiasi componente conforme può comprendere, consentendo agli agenti autonomi di collaborare con altri agenti. La specifica del protocollo definisce il modo in cui i messaggi sono strutturati in formato JSON-RPC e arricchiti con metadati per garantire coerenza e chiarezza tra le interazioni.
Questo tutorial si basa sugli esempi fondamentali forniti dal repository di campioni A2A. Per ulteriori informazioni sull'implementazione originale, fai riferimento al file readme nel repository, che fornisce più contesto ed esempi per la creazione di sistemi conformi ad A2A.
Per le distribuzioni nel mondo reale, i server A2A possono implementare meccanismi di autenticazione per proteggere gli endpoint, utilizzare gli eventi inviati dal server per lo streaming delle risposte e scalare per gestire i workflow. Seguendo questo workflow, hai visto come un client a riga di comando può interagire con un agente AI attraverso un protocollo standardizzato, che consente all'agente AI di coordinare più strumenti e fornire risposte contestuali. Questo approccio dimostra la potenza dell'A2A nell'abilitare sistemi AI manutenibili, scalabili e flessibili.
Una volta terminati gli esperimenti con il sistema, segui questi passaggi per arrestare correttamente tutti i componenti in esecuzione:
In ogni finestra del terminale, premi Ctrl+C per interrompere il processo in esecuzione.
Dovresti vedere un output simile a questo:
Se il server non risponde o si blocca durante l'arresto, è possibile arrestarlo forzatamente:
Trova l'ID del processo (PID):
Identifica il PID del processo che stai tentando di interrompere.
Termina il processo:
Se necessario, ripeti questa procedura per ogni server.
Questo è tutto. Hai eseguito con successo un sistema di chat completo conforme ad A2A.
Crea, implementa e gestisci assistenti e agenti AI potenti che automatizzano workflow e processi con l'AI generativa.
Costruisci il futuro della tua azienda con soluzioni AI di cui puoi fidarti.
I servizi di AI di IBM Consulting aiutano a reinventare il modo in cui le aziende lavorano con l'AI per la trasformazione.