A2A v1: comunicazione cross-platform tra agenti AI nel Microsoft Agent Framework per .NET
#tech
spcnet.it/a2a-v1-comunicazione…
@informatica
A2A v1: comunicazione cross-platform tra agenti AI nel Microsoft Agent Framework per .NET
Con il rilascio dell’A2A Protocol v1.0 e il relativo supporto nel Microsoft Agent Framework per .NET, il mondo degli agenti AI multi-vendor fa un passo importante verso la maturità. Non si tratta solo di un aggiornamento di versione: A2A v1 è il primo standard stabile e production-ready per la comunicazione tra agenti intelligenti, indipendentemente dal framework o dal provider che li ospita.Il problema: isole di agenti incompatibili
Chi sviluppa sistemi multi-agente in ambienti aziendali lo sa bene: ogni team usa il proprio framework, ogni divisione ha i propri provider AI, e ogni volta che due agenti devono comunicare si finisce a scrivere codice di integrazione su misura. Il costo di questo «collante» cresce più in fretta del valore che gli agenti stessi producono.Il protocollo A2A nasce esattamente per eliminare questa frizione. L’analogia è quella di HTTP e REST per i servizi web: prima di avere standard condivisi, ogni integrazione richiedeva codice proprietario. Dopo, è diventato possibile comporre servizi indipendentemente dal linguaggio o dalla piattaforma sottostante. A2A vuole fare la stessa cosa per gli agenti AI.
Chi c’è dietro A2A v1
Il protocollo è governato da un comitato tecnico con rappresentanti di AWS, Cisco, Google, IBM Research, Microsoft, Salesforce, SAP e ServiceNow. Non è un progetto Microsoft-only, ma uno standard aperto con ampio supporto industriale. La versione 1.0 segnala che il protocollo è maturo: i contorni aspri delle bozze precedenti sono stati levigati, le aree ambigue chiarite, e la superficie API è stata progettata per la durabilità nel tempo.Novità di A2A v1 rispetto alla v0.3
Per chi veniva dalla versione precedente (v0.3), ecco cosa cambia:
- Stabilità e supporto a lungo termine: v1.0 è la prima versione con garanzie di compatibilità stabile. L’investimento nel codice scritto oggi sarà protetto.
- Funzionalità enterprise: supporto multi-tenancy, Agent Card firmate crittograficamente per la verifica dell’identità degli agenti, e flussi di sicurezza migliorati per ambienti regolamentati e multi-parte.
- Architettura web-aligned: A2A v1 si appoggia su protocolli e pattern già consolidati nell’infrastruttura web. È possibile scalare le interazioni tra agenti usando gli stessi load balancer, gateway e strumenti di observability già in uso per i servizi HTTP.
Come funziona nel Microsoft Agent Framework per .NET
La filosofia di design del framework è che l’interoperabilità non deve richiedere una ristrutturazione del codice. Un agente remoto A2A appare nel codice esattamente come qualsiasi altroAIAgentlocale: stessa interfacciaRunAsync, stesso streaming, stessa gestione della sessione.Connettere un agente remoto A2A via discovery automatica
Il protocollo A2A definisce un percorso standard per la discovery degli agenti:/.well-known/agent-card.json. ConA2ACardResolverè possibile scoprire e istanziare un agente remoto in una sola chiamata:using A2A; using Microsoft.Agents.AI; // Punta il resolver all'host dell'agente remoto A2ACardResolver resolver = new(new Uri("https://a2a-agent.example.com")); // Risolve l'Agent Card e crea un AIAgent in un solo passaggio AIAgent agent = await resolver.GetAIAgentAsync(); // Usalo come qualsiasi altro AIAgent Console.WriteLine(await agent.RunAsync("Qual è il meteo a Milano?"));Configurazione diretta (per ambienti di sviluppo)
In scenari di sviluppo o sistemi strettamente accoppiati dove l’endpoint è già noto, si può creare unA2AClientdirettamente:using A2A; using Microsoft.Agents.AI; A2AClient a2aClient = new(new Uri("https://a2a-agent.example.com")); AIAgent agent = a2aClient.AsAIAgent( name: "my-agent", description: "Un assistente specializzato."); Console.WriteLine(await agent.RunAsync("Di cosa ti occupi?"));Selezione del protocollo di trasporto
A2A v1 supporta più binding di protocollo. Per default, il framework preferisce HTTP+JSON con JSON-RPC come fallback. È possibile specificarlo esplicitamente:A2ACardResolver resolver = new(new Uri("https://a2a-agent.example.com")); A2AClientOptions options = new() { PreferredBindings = [ProtocolBindingNames.HttpJson] }; AIAgent agent = await resolver.GetAIAgentAsync(options: options);Streaming in tempo reale
A2A supporta lo streaming via Server-Sent Events.RunStreamingAsyncpermette di ricevere aggiornamenti in tempo reale mentre l’agente elabora la risposta — particolarmente utile per task lunghi o per mostrare progressi all’utente:await foreach (var update in agent.RunStreamingAsync("Analizza questo documento...")) { Console.Write(update.Text); }Esporre il proprio agente come endpoint A2A
Il meccanismo funziona anche in senso inverso: qualsiasiAIAgentgià costruito — su Microsoft Foundry, Azure OpenAI, OpenAI, Anthropic, AWS Bedrock o qualsiasi altro provider supportato — può essere esposto come endpoint A2A con poche righe di hosting. Nessun boilerplate di protocollo da scrivere, nessun refactoring necessario quando si decide di rendere un agente interno disponibile ad altri team o a partner esterni.Quando ha senso adottare A2A v1
A2A v1 diventa rilevante non appena si esce dai prototipi mono-agente. I casi d’uso tipici includono:
- Un agente di procurement che deve consultare un servizio di compliance di un partner
- Un agente di customer support che cede il controllo a un agente specializzato di un’altra divisione
- Pipeline di elaborazione dove agenti diversi (analisi, sintesi, verifica) sono costruiti da team differenti
- Ecosistemi ISV dove prodotti di terze parti devono integrarsi con gli agenti della piattaforma principale
Conclusioni
A2A v1 è una tappa importante nell’evoluzione degli agenti AI verso sistemi distribuiti e interoperabili. La scelta di costruirlo come standard aperto con sponsorship industriale ampio — e non come API proprietaria Microsoft — è un segnale di maturità dell’ecosistema. Per i team .NET che stanno costruendo o pianificando sistemi multi-agente, vale la pena investire nella migrazione dalla v0.3 o nell’adozione diretta di v1: la stabilità garantita e le funzionalità enterprise rendono il protocollo adatto alla produzione oggi.Fonte: A2A v1 Is Here – Microsoft Agent Framework Blog (Sergey Menshykh, Microsoft)
A2A v1 Is Here: Cross-Platform Agent Communication in Microsoft Agent Framework for .NET | Microsoft Agent Framework
As organizations move from single-agent prototypes to multi-agent production systems, the ability for agents to communicate reliably across platforms and organizational boundaries becomes essential. With the release of A2A Protocol v1.Sergey Menshykh (Microsoft Agent Framework)
Elena Brescacin
in reply to Trames Venenosus • • •Gli hashtag da quanto so, ti vincolano alla federazione. Se la mia istanza eventuale single-user non viene vista da quelle grandi, il post rischia di andare nel vuoto; una comunità o un aggregatore - tipo il nuovo tags.pub - invece teoricamente spara in giro.
Questo qua tags.pub "gioca" molto sui relay per cui se il server non "richiama" tags.pub, non va in automatico.
Gli hashtag da soli, funzionerebbero alla grandissima se ci fosse una vera ricerca globale in tutto il fedi, ma penso che questa non potrà esserci mai. La decentralizzazione su questo pone dei grossi ostacoli.
Il fatto è che una comunità non esclude gli hashtag. Parlando dell'istanza dove sono, io posso decidere di taggare la comunità "musica" di feddit, ma poi agganciarci l'hashtag "fediradio". A leggere, in entrambi i casi, potrebbero essere persone completamente diverse.
tags.pub
tags.pubOblomov reshared this.
Trames Venenosus
in reply to Elena Brescacin • • •Sai benissimo, @elettrona, che una vera ricerca globale degli hashtag nel Fediverso richiederebbe una struttura contraria alla filosofia su cui si basa il suo funzionamento.
Hai una conoscenza tecnica molto superiore alla mia; la mia basa le proprie conclusioni sull'intuito e vale forse per chi si trovi in istanze di dimensioni simili alla nostra o più grandi.
Non intendevo convincerti a non usare le community, solo appena accennare ai motivi per cui io personalmente abbia deciso di non usarle più.
Come promesso, in futuro metterò giù qualche riflessione su come si comportino gli hashtag nel Fediverso, così farò altre affermazioni discutibili e ci divertiremo a dialogare su quelli che tu chiami limiti e io, forse sbagliando, chiamo punti di forza.
Elena Brescacin
in reply to Trames Venenosus • • •Per la cronaca, anche NON VEDERE è un limite. Enorme. Eppure di fronte a certe situazioni può diventare un punto di forza. Mangiare certi cibi che guardandoli eviteresti, dare un bacio sulla guancia a un parente morto, infilare i preservativi senza preoccuparsi di buio e luce... Ecco.
Oblomov reshared this.
Trames Venenosus
in reply to Elena Brescacin • • •Elena Brescacin
in reply to Trames Venenosus • • •Trames Venenosus reshared this.
Oblomov
in reply to Elena Brescacin • • •Trames Venenosus
in reply to Oblomov • • •@oblomov La mia idea è che, se vuoi a tutti i costi riprodurre certe caratteristiche, allora stai sbagliando la scelta del social in cui stare.
@elettrona @snow
Oblomov
in reply to Trames Venenosus • • •Elena Brescacin
in reply to Oblomov • • •Verissimo, tags.pub centralizza, ma in qualche modo lo fanno anche le community di lemmy. Se lemmy.world, feddit, diggita, per qualche motivo vanno giù, tu hai finito di postare.
Sbagliato social? Mica è detto. Io posso dire che sul fediverso trovo un sacco di discorsi su linux, sulla flotilla, sull'iran, su trump, sui diritti lgbt in generale... potrei dirmi l'unica che fa advocacy HIV e AIDS apertamente. Fossi una narcisista patologica e un pochino più tecnologicamente ignorante, potrei dire che "sono l'unica attiva nel settore HIV di tutto il fediverso"... Fin che qualcuno non mi abbassasse le alette (giustamente) a forza, perché la realtà è differente - evidentemente non ce ne sono nell'istanza mia e in quelle federate con la mia. Per cui l'hashtag non può funzionare.
Oblomov reshared this.
Trames Venenosus
in reply to Elena Brescacin • • •@elettrona
Esatto.
Non sono d'accordo. Mi dispiace ripetermi, ma la mia opinione, che ho già espresso, è che, in un server delle dimensioni di quello in cui ci troviamo e in una situazione come quella delle istanze in lingua italiana, la differenza dalle community sia trascurabile. È un'opinione basata su deduzioni solo intuitive, per cui eviterò di essere perentorio e rifuggirò inorridito ogni tentazione di convincerti.
@oblomov @snow
Oblomov
in reply to Elena Brescacin • • •Trames Venenosus reshared this.
Trames Venenosus
in reply to Oblomov • • •@oblomov Il canto delle sirene è irresistibile anche nel Fediverso, per questo vediamo certe tendenze piuttosto che altre.
@elettrona @snow
Oblomov
in reply to Oblomov • • •Trames Venenosus
in reply to Oblomov • • •@oblomov Il metodo indirizzo.istanza/tags/nomeDelTag purtroppo non dà solo le occorrenze dell'istanza stessa ma tutte quelle che l'istanza vede al momento dell'interrogazione.
@elettrona @snow
Oblomov
in reply to Trames Venenosus • • •Elena Brescacin
in reply to Oblomov • • •Io probabilmente parto dall'approccio sbagliato, perché considero gli hashtag come delle keyword. Pertanto a seconda dei miei interessi seguo "hiv, wordpress, accessibility, a11y, blind"... sperando di avere la home con delle notizie o post efficaci sull'argomento. Però chiaramente non guardano tutto il fedi. Allora qualcosa di magari interessante viene perso, mentre chi tipo mette "wordpress" come hashtag solo perché usa wordpress come blog ma racconta del gatto che gli ha pisciato sui piedi, quello mi compare.
Forse però sono troppo estrema io, tenendoci agli hashtag - per dire non etichetterei mai con hashtag "hiv" un post che parla del virus senziente Fernando.
Oblomov reshared this.
Oblomov
in reply to Elena Brescacin • • •Elena Brescacin
in reply to Oblomov • • •@oblomov @snow Io auspicavo hashtag "globali" perché le istanze minori, praticamente, è come se non esistessero. Vince sempre e solo chi sta nell'istanza più grossa, anche senza algoritmo, ma temo sia comunque un po' "classista" perché "el polastro de campagna" che sta nel borghetto veneto in tanta mona e si guadagna da vivere allevando polli, io gli tiro su il blog (in cambio del polastro) ma poi lui arriva deluso perché non ha un network di follower come ce l'ho io. E non ha nessun amico/conoscente che ha il fediverso.
E magari con l'hashtag globale, anche "el polastro" potrebbe stare dentro l'hashtag "food, negozio, shop, ecommerce"... Mi spiego?
Poi secondo me un po' manca il discorso ricerca anche delle persone. Se uno mi cerca per nome e cognome ma ha scelto di usare pixelfed perché è un fotografo, deve per forza cercare su mastodon. La soluzione sarebbero motori esterni, ma sono quasi tutti ormai basati su AI...
Oblomov
in reply to Elena Brescacin • • •@elettrona @snow
qui però stiamo coprendo problemi molto diversi tra loro: (1) come fanno le istanze “minori” o piú in generale isolae a farsi “conoscere” (2) i tag come struttura gerarchica, e (3) la ricerca degli account (che è un problema separato dalla questione dei tag, anche se con alcune similitudini).
Comunque nessuna di questa ha bisogno della centralizzazione di un servizio per essere risolto.
(Scusa il thread lungo che segue ma sono su un'istanza con i soliti limiti)
0/n
Oblomov
in reply to Oblomov • • •@elettrona @snow
1/n (1) il problema di come fanno le istanze minori/isolate a farsi conoscere finora si è posto poco perché l'uso principale del protocollo è stato per microblogging, e generalmente chi si iscrive sul fediverso su una istanza singola non ci arriva “da zero” ma comunque con già una rete di contatti da cui “nascono” le prime connessioni (es quando finalmente io avrò la mia instanza personale, mi porterò tutti i contatti che ho sviluppato finora).
Oblomov
in reply to Oblomov • • •@elettrona @snow
2/n
ovviamente per un WordPress questo è piú un problema, perché chiaramente un account WordPress generalmente non _segue_ nessuno, è solo seguíto, e quindi non andrà a “cercare” altri e quindi (reciprocamente) a farsi conoscere; al momento gli unici modi che esistono per sapere che un blog WP è federato è
o l'annuncio da parte del blogger, che ha già un account nel fediverso, o, piú raramente l'uso di qualche strumento “laterale” come StreetPass.
Oblomov
in reply to Oblomov • • •@elettrona @snow
3/n
Questo è obiettivamente un problema, per il quale una soluzione provvisoria è che quando Elena Brescacin fa il blog al pollivendolo poi lo annuncia anche sul fediverso 😉 (scherzi a parte, so che funziona per esperienza personale: ho aiuto un blog di informazione di amici ad entrare nel Fediverso ed ovviamente io sono stato il primo a seguirlo da qui, ma so che col tempo hanno raccolto altra gente).
Oblomov
in reply to Oblomov • • •@elettrona @snow
4/n
una soluzione migliore (ma da sviluppare) sarebbe un meccanismo per cui le istanze potessero annunciare la loro esistenza ad una manciata di istanze iniziali (configurabili) da cui l'informazione si potrebbe propagare sempre con un meccanismo tipo DHT non dissimile da quello che avevo inizialmente proposto per i tag.
(2) Il problema dei tag gerarchici a mio parere non ha una vera soluzione, ma perché il problema è di tipo linguistico/sociale prima che tecnico.
Oblomov
in reply to Oblomov • • •@elettrona @snow
5/n in questo senso piú che ad una soluzione tecnica mirerei ad una soluzione di tipo “contenutistico-educativa”: sta all'autore del blog dell'allevatore (lui stesso, o suo nipote social media manager) di mettere tutti i tag rilevanti.
Penso che questo sia essenziale perché non è detto che tutti usino un tag nello stesso contesto, e chi va a cercarsi foto di cavalli gloriosamente scorrazzanti potrebbe non gradire foto di polpette dalle macellerie di via del Plebiscito.
Oblomov
in reply to Oblomov • • •@elettrona @snow
6/6 per finire, la questione account è simile a quella degli hashtag, e si potrebbe risolvere anche qui con una DHT, senza bisogno di motori esterni, ma con una semantica diversa (ricerca per nome, handle, descrizione profilo, tag profilo).
Un problema a parte è quella delle discrepanze tra diverse piattaforme (PixelFed vs Mastodon), ma questo metirerebbe un discorso *ancora* piú lungo 😉
Elena Brescacin
in reply to Oblomov • • •@oblomov @snow non so cosa sia questa cosa del dht, cerco di andare con ordine:
istanze minori. Io mi sono creata la gotosocial, con "social . dominio-personale", per poter parlare del progetto "liberamente" e non fare spam nell'istanza grande. Perché mi pareva di violare le politiche creandomi [nome-progetto] @ mastodonUno / poliversity / etc...
Il discorso che fai sui "tag vs. sensibilità personali" è complicato, ma su quello non penso si possa fare molto.
Non puoi impedire a uno di pubblicizzare la propria macelleria equina con l'hashtag "cavallo". Non per tutto il fediverso almeno. Nella tua istanza personale potresti avere la regola di non volere utenti che parlano di carne macellata, quella è una scelta tua, ma sarebbe un problema se decidessi di defederare un'istanza di grosse dimensioni solo perché non mette quel vincolo.
Per quanto riguarda gli hashtag poi sul sito Fedi.tips ci sono alcuni esempi di parole chiave diventate una "convenzione", ma alcuni poi li si scopre strada facendo - io non sapevo dell'esistenza di "fedifiction" e "microfiction"...
L'educazione, quella, poi è utopia se pretendiamo di educare le persone sul fediverso quando non lo sono per strada. Io sono praticamente nata con la netiquette, e so che usare certi tag per DIVENTARE VIRALI, è gioco sporco.
Oblomov reshared this.
Oblomov
in reply to Elena Brescacin • • •Elena Brescacin
in reply to Oblomov • • •Trames le chiama "discussioni tossiche sul fediverso" però secondo me servono. Il fediverso non è come un frigorifero che lo compri e ci metti dentro roba, non c'è altro modo di usarlo. Questo, lo puoi usare in millantamila modi e tutti vanno bene, a seconda di cosa vuoi. E discutere con punti di vista diversi può anche servire per mettere in discussione il proprio utilizzo, per rendersi conto di aver sbagliato strada. E anche per uscire dal fediverso qualora ci si renda conto che non sia la strada giusta.
reshared this
Oblomov e Trames Venenosus reshared this.
Trames Venenosus
in reply to Elena Brescacin • • •@elettrona Grazie per avere compreso e accettato lo spirito di questi post che vorrei scrivere con cadenza irregolare: vale sempre la pena di discutere...
...facendo attenzione a non coinvolgere community con moderatori impressionabili.
@oblomov @snow
Elena Brescacin
in reply to Trames Venenosus • • •Se a qualcuno dovesse dare fastidio non sarebbe più un problema mio. A me basta non dare fastidio nel senso di, non mancare di rispetto al prossimo.
Yohanan ✨
in reply to Trames Venenosus • • •Trames Venenosus
in reply to Yohanan ✨ • • •Ti do perfettamente ragione. Tuttavia:
Domenico
in reply to Trames Venenosus • • •