Agenti¶
Traduzione automatica dell'originale francese.
Il termine "agente" si riferisce a due oggetti diversi all'interno del parco, e confonderli comporta perdere ore.
| Cosa è | Dove risiede | |
|---|---|---|
| L'eseguente | un programma che riceve un comando, legge, riflette e produce un testo | una macchina del parco — un claude -p non interattivo, un servizio Python, un motore di workflow |
| La definizione | cosa è, quale modello può chiamare, cosa può leggere, quanto costa | il proxy LLM, nel suo registro di agenti |
La regola del parco dal 2026-09-13: la definizione è la riferimento, ed è nel proxy. Il deposito di un agente non contiene più che il suo piano di backup — ciò che rimane quando il proxy non risponde.
Perché separare i due
Un eseguente è legato a una macchina: ha bisogno del disco, del deposito, della sessione autenticata. Una definizione, invece, deve essere leggibile da tutti: l'interfaccia utente, uno script, un altro agente, il registro delle spese. Tenerli insieme obbliga a clonare il file di configurazione ovunque qualcuno voglia sapere cosa fa l'agente.
A2A, in una pagina¶
A2A (Agent-to-Agent) è un protocollo aperto che risponde a una domanda precisa: come un programma può comunicare con un agente che non ha scritto?
Si riduce a tre elementi.
1. La scheda dell'agente¶
Un documento JSON fornito dall'agente stesso, a un indirizzo convenzionale: /.well-known/agent-card.json. Indica il suo nome, la sua descrizione, l'URL, le competenze (skills) che espone, i formati che accetta e produce, e come autenticarsi con esso.
È l'equivalente di un file OpenAPI per un'API REST: permette di chiamare l'API senza aver letto il codice corrispondente.
2. Una chiamata JSON-RPC¶
Un unico metodo è sufficiente per iniziare: message/send. Si invia un messaggio composto da parti (testo, un'immagine, un file), e l'agente risponde.
{
"jsonrpc": "2.0", "id": "1", "method": "message/send",
"params": { "message": {
"role": "user",
"parts": [{ "kind": "text", "text": "vérifie la continuité de la scène 1" }],
"messageId": "f1e2d3"
}}
}
3. Un compito con una durata¶
Un agente non risponde sempre in due secondi. A2A modella quindi un compito con stati — inviato, in corso, completato — e artefatti consegnati nel tempo. Questo distingue A2A da una semplice richiesta HTTP: il protocollo prevede che il lavoro duri.
L'errore di progettazione, e si tratta di una struttura
Un agente che lavora per diversi minuti si comporta in modo non sincronizzato. Se chi effettua la richiesta attende la risposta sulla stessa connessione, tutto ciò che si trova tra entrambi — proxy, reverse proxy, client HTTP — ha un proprio timeout, e il primo che scade vince. Un agente lento si progetta tenendo conto del ciclo di vita del compito, non altrimenti.
Cosa aggiunge il proxy LLM¶
Il proxy del parco — quello che serve già tutti gli alias dei modelli — ha anche un registro degli agenti. Ciò che offre non è il protocollo: è tutto ciò che non si vuole riscrivere in ogni agente.
flowchart LR
subgraph consommateurs
s["Script · cron"]
w["Moteur de workflows"]
c["Interface de chat"]
a2["Un autre agent"]
end
p["Proxy LLM<br/>registre + identité + limites + dépense"]
ag["Agent<br/>serveur A2A"]
m["Modèles<br/>locaux · souverains · API"]
s --> p
w --> p
c --> p
a2 --> p
p -->|"A2A : message/send"| ag
p -->|"OpenAI : chat/completions"| m
ag -->|"ses propres appels,<br/>avec SA clé"| p
| Ciò che offre il proxy | Ciò che evita |
|---|---|
| Un elenco — la lista degli agenti, la loro mappa, le loro competenze | ogni agente ha la propria lista, e queste divergono |
| Un'identità — una chiave virtuale per ogni agente | una sola chiave condivisa, quindi un costo che non si riesce a imputare a nessuno |
| Limiti — velocità per agente, lista bianca dei modelli, budget | un agente che entra in un loop consuma il budget di tutti |
| Il costo — ogni chiamata ha un costo specifico | un costo che si distribuisce proporzionalmente, quindi un costo inventato |
| Due facce — protocollo A2A e API di chat classica | riscrivere un client per ogni agente |
Le doppio approccio, e questo è fondamentale¶
Un agente registrato può essere contattato in due modi, senza apportare modifiche sul lato dell'agente:
- tramite A2A, a
/a2a/<id>/message/send— si tratta del protocollo, con la sua carta e il suo ciclo di attività; - tramite API di chat, semplicemente richiedendo il modello
a2a/<nom>su/v1/chat/completions.
Il secondo è quello che conta in pratica: ogni applicazione del parco che è in grado di comunicare con un modello può quindi comunicare con l'agente, senza dover scrivere una singola riga di codice. L'interfaccia di chat, il motore di workflow, uno script di tre righe — vedono un nuovo nome di modello nell'elenco.
Questo approccio funziona anche al contrario: un agente registrato può essere che si limita a fornire un modello, e il proxy gli crea un'interfaccia A2A.
Ciò che è vero oggi, e ciò che non lo è¶
Un registro di agenti esterni
Il registro richiede agenti che già operano da qualche parte: un server A2A o una piattaforma per agenti commerciali. Non esistono alcuni tipi di "programmi da riga di comando".
Conséquence directe pour le parc : un agent qui est un claude -p lancé sur
une machine ne devient joignable par les autres que si on lui met un
serveur A2A devant. Tant que ce serveur n'existe pas, le registre sert de
référence de définition — ce qui est déjà beaucoup — mais pas de point
d'appel, et l'URL annoncée sur sa carte ne répond pas.
Un registre qui oublie au redémarrage
La lista degli agenti a cui fa riferimento il proxy risiede in memoria e non viene riletta dal database quando il processo riparte. Dopo un riavvio, gli agenti esistono ancora, ma la lista è vuota — e il meccanismo a2a/<nom>, che legge lo stesso registro, si interrompe per tutti i consumatori. Un controllo periodico che riapplica le definizioni risolve il problema; altrimenti, il guasto è silenzioso e il servizio appare perfettamente funzionante.
La fase successiva, riga per riga: Definire un agente e consumarlo.
Dernière vérification de cette page : 2026-09-13