Pattern degli agenti AI che ho imparato costruendo AIdaemon
Quando si parla di pattern di agenti AI, di solito vengono descritti in modo astratto. Ecco come funzionano effettivamente sette pattern ben noti all'interno di AIdaemon, un demone di agenti AI self-hosted che sto costruendo in Rust.
Il loop ReAct (Ragionamento + Azione)
ReAct è il fondamento della maggior parte degli agenti moderni. Invece di elaborare un intero piano ed eseguirlo tutto in una volta, l'agente alterna il ragionamento su cosa fare dopo all'azione vera e propria.
In AIdaemon, questo si manifesta come un ciclo di esecuzione basato su fasi. Ogni turno attraversa la costruzione del messaggio, una chiamata LLM, l'esecuzione dello strumento e un controllo di arresto. L'agente ragiona sulla sua prossima mossa, esegue un'azione, osserva il risultato e poi ragiona di nuovo. Questo ciclo continua finché l'agente non decide di aver finito o raggiunge un limite di iterazioni.
La bellezza di ReAct è l'adattabilità. Se un comando fallisce o restituisce un output inatteso, l'agente non continua ciecamente con l'approccio originale. Rivaluta e si adatta.
Pianificazione
Pianificare significa suddividere un compito complesso in passaggi prima di iniziare. Invece di prendere immediatamente il primo strumento e iniziare a lavorare, un agente di pianificazione analizza la richiesta, identifica le dipendenze e sequenzia le operazioni in un ordine logico.
In AIdaemon, prima che l'agente tocchi qualsiasi strumento, può generare un piano strutturato con passaggi concreti. Ciò previene la comune modalità di fallimento in cui un agente inizia l'esecuzione, si rende conto a metà strada di aver bisogno delle informazioni del passaggio 5 per completare il passaggio 2, e finisce per girare a vuoto.
La pianificazione aiuta anche la trasparenza. Quando è possibile visualizzare il piano dell'agente prima che venga eseguito, si intercettano ipotesi errate in anticipo anziché scoprirle dopo che l'agente ha già apportato modifiche.
Riflessione
La riflessione è la capacità dell'agente di valutare il proprio lavoro. Dopo aver completato un'azione, un agente riflessivo passa in modalità critica. Controlla la presenza di errori, verifica che i vincoli siano stati soddisfatti e identifica le lacune.
In AIdaemon, il ciclo di feedback di riflessione si attiva quando qualcosa va storto. Se una chiamata a uno strumento fallisce o produce risultati inattesi, l'agente analizza cosa è successo, perché è fallito e suggerisce una correzione prima di riprovare. Combinato con il tracciamento dello stato delle prove, l'agente mantiene osservazioni concrete su ciò che ha visto e fatto. Le sue riflessioni sono basate su risultati effettivi anziché su supposizioni.
Memoria
La memoria è il modo in cui un agente conserva le informazioni tra le conversazioni. Senza di essa, ogni interazione ricomincia da zero.
AIdaemon utilizza embedding vettoriali basati su SQLite per il richiamo semantico. I fatti vengono estratti automaticamente dalle conversazioni e archiviati con gli embedding in modo che possano essere recuperati per significato, non solo per parole chiave. Se hai menzionato un dettaglio del progetto tre settimane fa, l'agente può ricordarlo quando torna rilevante.
Il sistema di memoria crea anche riepiloghi degli episodi per le sessioni di lunga durata e consolida i fatti quotidianamente, deduplicando e facendo decadere le informazioni vecchie che non sono più utili. È la differenza tra un agente con amnesia e uno che apprende effettivamente il tuo contesto nel tempo.
Guardrail
I guardrail definiscono i limiti rigidi di ciò che un agente può e non può fare. Sono la rete di sicurezza che intercetta i casi limite che un buon prompting da solo non previene.
AIdaemon implementa guardrail a più livelli. Le liste bianche di comandi limitano quali comandi di terminale l'agente può eseguire. Il filtraggio degli strumenti basato sul livello di rischio implica che le operazioni distruttive richiedano una verifica aggiuntiva. La sanificazione dell'output rimuove dati sensibili come chiavi API e token dalle risposte prima che raggiungano l'utente. E i limiti di iterazione impediscono loop incontrollati in cui l'agente consuma token senza fare progressi.
Il settore ha raggiunto una convergenza su questo approccio a livelli. La maggior parte dei framework di agenti di produzione considera i guardrail come difesa in profondità piuttosto che come un singolo punto di controllo.
Human-in-the-loop
Human-in-the-loop è il pattern di mettere in pausa per la conferma umana prima di intraprendere azioni ad alto rischio. È il riconoscimento che alcune decisioni non dovrebbero essere completamente automatizzate.
AIdaemon utilizza un flusso di approvazione con tre opzioni per le azioni rischiose: Consenti una volta (procedi questa volta), Consenti sempre (fidati di questa azione in futuro) e Nega (interrompi e prova qualcos'altro). L'agente classifica automaticamente le azioni in base al livello di rischio. Leggere un file? Nessun blocco necessario. Eliminare file o eseguire comandi shell sconosciuti? L'agente si ferma e chiede.
La chiave è il blocco basato sul rischio anziché bloccare tutto. Troppe interruzioni e l'agente diventa inutilizzabile. Troppo poche e ti fidi di lui per azioni che potrebbero causare danni reali.
Apprendimento delle competenze
L'apprendimento delle competenze si verifica quando l'agente trasforma i pattern di successo in istruzioni riutilizzabili. La maggior parte degli agenti tratta ogni attività come un caso isolato. L'apprendimento delle competenze consente all'agente di riconoscere quando ha risolto un tipo di problema più volte e di impacchettare tale soluzione per un uso futuro.
In AIdaemon, se una procedura è stata utilizzata 5 o più volte con un tasso di successo di almeno l'80%, il sistema genera una bozza di competenza. Tale bozza necessita comunque di una revisione umana prima di diventare attiva, il che impedisce all'agente di apprendere le lezioni sbagliate. Una volta approvata, la prossima volta che si presenta un'attività simile, l'agente può fare riferimento a tale competenza anziché doverla scoprire da zero. Le competenze possono anche essere caricate da file, URL o registri remoti, in modo da poterle condividere tra diverse configurazioni.
Questo è uno di quei pattern che si accumulano nel tempo. Più a lungo l'agente è in esecuzione, più competenze accumula e più velocemente gestisce il lavoro ricorrente.