Questa pagina fornisce una panoramica concettuale di Agent Framework, illustrando gli elementi costitutivi chiave per lo sviluppo di agenti efficaci.
Che cosa sono gli agenti?
Un agente di IA generativa è come un programma per computer intelligente che agisce come un assistente indipendente. Viene dato un obiettivo, può comprendere il mondo che lo circonda (tramite dati o informazioni) e può utilizzare vari strumenti per raggiungere l'obiettivo senza supervisione umana costante. Può persino pianificare i passaggi successivi per avvicinarsi al suo scopo.
Tecnicamente, un agente di IA generativa è un'astrazione software che persegue autonomamente un obiettivo definito osservando il proprio ambiente, ragionando sul miglior orientamento di azione ed eseguendo azioni utilizzando gli strumenti disponibili. Opera indipendente dalle istruzioni umane dirette per ogni passaggio e può determinare proattivamente le azioni successive per raggiungere il suo obiettivo finale. Questo è possibile grazie ai modelli di IA generativa, che potenziano le capacità di ragionamento e di presa di decisioni dell'agente.
Cosa non sono gli agenti?
Di seguito sono riportati alcuni errori comuni che potrebbero assomigliare agli agenti, ma non lo sono:
Chatbot "If-Then" con codice hardcoded (antipattern):
Un chatbot creato con LLM in cui predefinisci meticolosamente ogni possibile input dell'utente e risposta dell'LLM. Anche se utilizzi la chiamata di funzioni, se la logica è interamente hardcoded, non si tratta di un agente. Si tratta di un albero decisionale sofisticato, non di un sistema di ragionamento.
Esempio: se l'utente dice "prenota un volo", chiama la funzione book_flight()
. Non si tratta di un agente, ma di un sistema basato su regole.
Uso eccessivo dei prompt di ReAct (potenziale anti-pattern):
I prompt ReAct (Reason + Act) sono una tecnica che consente di strutturare i prompt per incoraggiare l'LLM a pensare passo passo e poi ad agire. Si tratta di un approccio più simile al comportamento dell'agente, ma può diventare un anti-pattern se: tu, lo sviluppatore, continui a creare manualmente i prompt ReAct per ogni possibile scenario. L'agente deve essere in grado di generare il proprio ragionamento in stile ReAct, non solo seguire modelli prescritti. La parte di esecuzione è limitata a semplici chiamate di funzione e non è prevista alcuna pianificazione o adattamento di livello superiore.
Catena di pensieri (CoT) senza azione (antipattern):
L'utilizzo dei prompt CoT per fare in modo che l'LLM spieghi il proprio ragionamento è utile, ma non è un agente se non agisce in base a questo ragionamento. Si tratta solo di un modello LLM più trasparente, non di un'entità autonoma.
Agenti e LLM
Prompt singolo:
Chiedi a LLM di "scrivere un riepilogo della storia dell'Impero Romano". Si tratta di una singola interazione. Gemini elabora il prompt e genera una risposta. Non viene memorizzata alcuna interazione passata, non esiste un obiettivo a lungo termine e non è prevista alcuna interazione con strumenti esterni. È puramente input-output.
Chain of Prompts:
Potresti poi continuare dicendo: "Ora elenca le principali cause del declino dell'Impero". Questa è una serie di prompt. Sei tu, l'utente, a fornire il comportamento simile a quello di un agente guidando la conversazione e suddividendo l'attività. Gemini continua a rispondere a ogni prompt singolarmente, senza una conoscenza più ampia dell'obiettivo generale (a meno che tu non lo dichiari esplicitamente più volte). Sei tu l'agente, non Gemini.
Agente:
Un agente che utilizza LLM sarebbe fondamentalmente diverso.
Immagina un "agente di ricerca sulla storia romana" il cui obiettivo è:
"Raccogli un report completo sull'Impero Romano, inclusa la sua storia, i personaggi chiave, l'impatto culturale e i motivi del suo declino. Il report deve essere aggiornato settimanalmente con nuove informazioni provenienti da fonti accademiche."
Differenze principali:
- Obiettivo permanente: l'agente ha un obiettivo continuo e a lungo termine, non solo un'attività di un solo turno.
- Pianificazione: l'agente potrebbe suddividere questa fase in:
- Ricerca iniziale utilizzando Gemini (riepilogo della cronologia, identificazione di figure chiave).
- Ricerca in database accademici (utilizzando uno strumento separato).
- Sintesi di informazioni provenienti da più fonti.
- Generazione del report.
- Pianificare un'attività settimanale per ripetere i passaggi 2-4.
- Utilizzo di strumenti: l'agente utilizza attivamente strumenti diversi da Gemini (ad es. un'API di ricerca, un database).
- Autonomia: l'agente opera in modo indipendente, prendendo decisioni su quali informazioni raccogliere e come presentarle.
- Memoria: l'agente mantiene una memoria continua (forse in un database) per organizzare i risultati e migliorare autonomamente i prompt.
Il punto cruciale è che negli scenari di prompt singolo/a catena, sei tu il coordinatore. Nello scenario dell'agente, l'agente stesso è l'orchestratore e utilizza Gemini come uno dei suoi strumenti.
Carichi di lavoro degli agenti rispetto ai carichi di lavoro LLM tipici
La differenza più importante tra gli agenti e i carichi di lavoro LLM tipici è il comportamento autonomo e orientato agli obiettivi con pianificazione e perfezionamento iterativo. Poniti queste domande:
- Obiettivo permanente
- Il sistema ha un obiettivo a lungo termine chiaramente definito verso il quale si sta adoperando, oltre a rispondere ai singoli prompt?
- Azione autonoma
- Il sistema può eseguire azioni (utilizzare strumenti, prendere decisioni) senza istruzioni esplicite e dettagliate da parte di una persona per ogni azione?
- Pianificazione e ragionamento
- Il sistema mostra prove di pianificazione (suddivisione di un obiettivo complesso in passaggi più piccoli) e ragionamento (prende decisioni in base alla sua comprensione della situazione)?
- Perfezionamento iterativo
- Il sistema apprende e migliora il suo approccio? Non deve necessariamente essere il machine learning. Può essere un miglioramento autonomo basato sulle osservazioni.
- Stato
- Il sistema mantiene e utilizza le informazioni sullo stato per continuare a progredire verso il suo obiettivo?
Se la risposta a tutte queste domande è "sì", probabilmente stai lavorando con un agente IA. Se la risposta è "no", probabilmente hai un'applicazione LLM più sofisticata, ma non un agente a tutti gli effetti. La combinazione di questi fattori, non solo uno da solo, è ciò che definisce gli agenti. Un agente non si limita a fare cose, ma decide cosa fare e perché, adattando il proprio approccio per raggiungere un obiettivo definito.
Componenti essenziali degli agenti:
- Modello: il modello linguistico (LM) funge da decisore centrale e utilizza ragionamenti basati su istruzioni e framework logici.
- Strumenti: gli strumenti colmano il divario tra le funzionalità interne dell'agente e il mondo esterno, sbloccando una gamma più ampia di possibilità. Consentono di interagire con dati e servizi esterni.
- Livello di orchestrazione: questo livello regola il modo in cui l'agente acquisisce informazioni, esegue ragionamenti interni e utilizza questo ragionamento per informare la sua prossima azione o decisione.
Agenti e chiamate di funzione
La chiamata di funzioni dell'LLM è un passo importante verso il comportamento dell'agente, ma non è equivalente a un agente completo.
LLM + Chiamate di funzioni:
definisci le funzioni che l'LLM può chiamare (ad es. get_weather(location)
,
search_wikipedia(topic)
). Quando una risposta dell'LLM indica che deve utilizzare una funzione, il codice esegue la funzione e restituisce il risultato all'LLM. In questo modo, il modello può accedere a dati esterni o eseguire azioni.
LLM + agente:
Un agente si basa sulla chiamata di funzioni. La chiamata di funzioni è un meccanismo che gli agenti possono utilizzare, ma l'agente aggiunge:
- Decisioni strategiche: l'agente decide quando e perché chiamare le funzioni, in base al suo obiettivo e al suo piano complessivi. Non si limita a reagire a un singolo prompt.
- Ragionamento in più passaggi: un agente può mettere in catena più chiamate di funzione e interazioni Gemini, in base al suo processo di ragionamento interno. Non è limitata a una singola chiamata funzione per prompt.
- Gestione degli errori e adattamento: un buon agente gestisce i casi in cui una chiamata di funzione non va a buon fine o restituisce risultati imprevisti. Può modificare il proprio piano di conseguenza.
- Gestione dello stato: l'agente mantiene uno stato interno (memoria) che persiste su più interazioni, consentendogli di monitorare l'avanzamento e prendere decisioni più consapevoli.
Puoi considerare le chiamate di funzione come un modo per dare all'LLM la possibilità di interagire con il mondo. Un agente è ciò che conferisce all'LLM l'intelligenza e l'autonomia per utilizzare questa capacità in modo efficace per raggiungere un obiettivo complesso.
Pipeline e catene LLM
Questa sottosezione illustra in che modo gli LLM possono essere strutturati e organizzati all'interno degli agenti utilizzando pipeline e catene. Discuteremo di diversi pattern per collegare chiamate LLM, interazioni con gli strumenti e altri componenti dell'agente per svolgere attività complesse. Aspettati spiegazioni di architetture di pipeline e catene comuni pertinenti alla progettazione di agenti.
Antipattern per la creazione di agenti
Questa sezione si concentra sugli errori e sui problemi comuni da evitare durante lo sviluppo degli agenti. Identificheremo e descriveremo gli "anti-pattern", ovvero le scelte di progettazione o le strategie di implementazione che possono ostacolare il rendimento, la manutenibilità o la scalabilità degli agenti. L'apprendimento di questi antipattern aiuterà gli sviluppatori a creare agenti più efficaci e robusti.
Agenti con più passaggi o più agenti: quale scegliere?
Questa sezione mette a confronto due approcci diversi alla complessità degli agenti: agenti a più passaggi (agenti che eseguono attività in una sequenza di passaggi) e sistemi multi-agente (sistemi composti da più agenti in interazione). Discuteremo i punti di forza e di debolezza di ciascun approccio e forniremo indicazioni su quando sceglierne uno rispetto all'altro in base al caso d'uso e al comportamento dell'agente desiderato.
Quando utilizzare i flussi con più agenti?
Ampliando i sistemi multi-agente, questa sezione esplorerà in modo specifico scenari in cui l'utilizzo di "flussi" multi-agente diventa vantaggioso. Esamineremo i casi d'uso che traggono vantaggio dalla collaborazione, dalla delega o dalla risoluzione dei problemi distribuita tra più agenti. L'obiettivo è illustrare le applicazioni pratiche e i vantaggi dei flussi multi-agente in sistemi di agenti complessi.
Agenti con più strumenti o multi-agenti?
Questa sezione illustra la scelta di progettazione tra dotare un singolo agente di più strumenti o creare un sistema multi-agente. Analizzeremo le situazioni in cui è sufficiente aumentare il set di strumenti di un singolo agente e quelle in cui la distribuzione di attività e funzionalità su più agenti diventa un approccio più efficace. In questo modo, gli sviluppatori potranno decidere sull'architettura ottimale in base alla complessità e ai requisiti funzionali.
Agente con flussi predefiniti rispetto ad agenti autonomi?
Qui faremo la distinzione tra agenti con flussi di lavoro strutturati e predefiniti ("flussi") e agenti più autonomi che mostrano una maggiore flessibilità e processo decisionale nel loro funzionamento. Discuteremo dei compromessi tra controllo e adattabilità e quando ciascun tipo di agente è più appropriato per applicazioni diverse.
Memoria a breve e lungo termine
Questa sezione illustra i concetti di memoria a breve e a lungo termine all'interno del framework Agent. Discuteremo di come gli agenti gestiscono il contesto della conversazione (memoria a breve termine) e mantengono le conoscenze o i dati nelle sessioni (memoria a lungo termine). Comprendere questi meccanismi di memoria è fondamentale per creare agenti che possono mantenere lo stato e apprendere nel tempo.
Pianificazione con un solo passaggio o con più passaggi
Esploreremo le funzionalità di pianificazione degli agenti, mettendo a confronto la pianificazione in un solo passaggio (prendere decisioni immediate) con la pianificazione in più passaggi (definizione di strategie e suddivisione di attività complesse in sequenze). In questa sezione vengono descritti i vantaggi e le complessità di ogni approccio alla pianificazione e il loro impatto sul comportamento e sulle capacità di risoluzione dei problemi degli agenti.
Strumenti singoli rispetto a più strumenti rispetto ad AgentTools
Questa sezione fornisce una panoramica comparativa delle diverse configurazioni degli strumenti per gli agenti. Esamineremo l'utilizzo di singoli strumenti, agenti equipaggiati con più strumenti e "AgentTools" specializzati (strumenti che richiamano altri agenti). Lo scopo è chiarire lo scopo e gli scenari di utilizzo per ogni tipo di strumento e configurazione.
Strumenti e memoria
Questa sezione illustra l'interazione e la relazione tra strumenti e memoria nella progettazione dell'agente. Esamineremo il modo in cui gli agenti utilizzano la memoria per fornire informazioni sull'utilizzo degli strumenti, memorizzare i risultati degli strumenti e ottimizzare la selezione degli strumenti nel tempo. Comprendere questa interazione è fondamentale per creare agenti che sfruttano efficacemente sia gli strumenti sia la memoria per migliorare il rendimento.
Test e QA degli agenti
Questa sezione si concentra sugli aspetti cruciali del test e del controllo qualità (QA) per gli agenti. Discuteremo di strategie e metodologie per testare rigorosamente il comportamento degli agenti, l'integrazione degli strumenti e le prestazioni complessive del sistema. Lo scopo è fornire indicazioni per garantire l'affidabilità e la correttezza degli agenti prima del deployment.
Valutazioni degli agenti
Sulla base dei test, questa sezione affronterà specificamente le valutazioni degli agenti. Analizzeremo i metodi per misurare e valutare sistematicamente il rendimento degli agenti in base a metriche e benchmark definiti. Ti aspettiamo per discutere di framework di valutazione, metriche come accuratezza ed efficienza e su come utilizzare le valutazioni per migliorare la progettazione degli agenti.
Multi-agente
Questa sezione fornirà un approfondimento del concetto di sistemi multi-agente all'interno del framework. Rafforzerà ed estenderà le menzioni precedenti dei concetti di agenti multipli, offrendo una panoramica completa della loro architettura, dei vantaggi e delle sfide. che fungerà da risorsa centrale per comprendere e progettare applicazioni multi-agente.
Flussi
Questa sezione fornisce una spiegazione dedicata dei "flussi" nell'Agente Framework. Verranno descritti nel dettaglio i diversi tipi di flussi predefiniti (sequenziali, loop, automatici e così via) e come regolano il comportamento e l'interazione degli agenti con gli agenti secondari. Aspettati una spiegazione chiara e strutturata della dinamica del flusso e delle opzioni di personalizzazione.
Comunicazione
Questa sezione esaminerà la comunicazione all'interno dell'Agent Framework, in particolare nei sistemi multi-agente. Discuteremo di come gli agenti scambiano informazioni, coordinano le azioni e collaborano per raggiungere obiettivi comuni. L'attenzione sarà rivolta ai meccanismi e ai modelli per una comunicazione efficace tra gli agenti.
Pianificazione
Questa sezione offre un'esplorazione più approfondita della pianificazione all'interno degli agenti. Verranno trattati diversi algoritmi di pianificazione, strategie per suddividere le attività complesse e come gli agenti utilizzano la pianificazione per orientare le proprie azioni e l'utilizzo degli strumenti. Aspettati una discussione più tecnica sulle metodologie di pianificazione pertinenti allo sviluppo degli agenti.
Sessione e stati
Questa sezione fornisce una spiegazione completa della gestione delle sessioni e dello stato nell'Agent Framework. Descrive in dettaglio come vengono create e gestite le sessioni, come vengono utilizzate le variabili di stato per archiviare e accedere alle informazioni e il ciclo di vita dei dati delle sessioni. Comprendere le sessioni e gli stati è fondamentale per creare agenti in grado di gestire il contesto e mantenere la continuità tra le interazioni.
Callback
Infine, questa sezione fornirà una spiegazione dettagliata e dedicata dei callback all'interno dell'Agent Framework. Verranno trattati i diversi tipi di callback (prima/dopo l'agente, il modello, lo strumento), il loro scopo e come gli sviluppatori possono utilizzarli per personalizzare ed estendere il comportamento dell'agente nelle varie fasi dell'elaborazione. Ti aspetta una guida completa sull'utilizzo dei callback per la personalizzazione avanzata dell'agente.