Un chatbot risponde a domande. Un agente AI risponde a domande che non conosce ancora. La differenza è deceptivamente piccola e enormemente consequenziale.

Consideriamo un assistente di ricerca che deve scrivere una revisione della letteratura su architetture di trasformazione. Un chatbot ripete ciò che ha memorizzato durante l'addestramento. Un agente cerca paper, legge abstract, cross-referenzia citazioni, identifica lacune e sintetizza un riassunto da ciò che ha effettivamente trovato. Il chatbot è una biblioteca; l'agente è un bibliotecario.

Proprietà Fondamentali degli Agenti AI

Un agente AI è un modello di linguaggio che può prendere azioni, osservare i risultati e decidere cosa fare dopo in un ciclo. Quattro componenti rendono tutto ciò possibile: un motore di ragionamento (il modello di linguaggio), gli strumenti che può chiamare, un ciclo di controllo che governa l'esecuzione e una memoria che persiste attraverso i passaggi.

Rimuovere uno qualsiasi di questi e si perde la proprietà "agente". Un modello di linguaggio senza strumenti è un chatbot. Un modello di linguaggio con strumenti ma senza ciclo è una funzione che chiama una sola volta. Un modello di linguaggio con strumenti e ciclo ma senza memoria dimentica cosa ha già provato e si ripete.

Il Modello ReAct

ReAct (Ragionamento e Azione) è il pattern fondamentale dietro la maggior parte degli agenti di produzione oggi. È stato introdotto da Yao et al. nel 2022 e intercala tre fasi in un ciclo: il modello pensa a cosa fare dopo (Pensiero), esegue un'azione come chiamare uno strumento (Azione) e processa il risultato (Osservazione). Quindi si ripete.

Il pattern ha evoluto dal momento della pubblicazione del paper originale. LangGraph ha reso ReAct modulare modellando i passaggi dell'agente come nodi in un grafo orientato con stato condiviso. Pattern complementari come Reflexion consentono agli agenti di analizzare il perché un'osservazione è fallita e provare un approccio completamente diverso, anziché semplicemente ritentare la stessa strategia.

Esempio di ReAct

Vediamo come funziona il ciclo ReAct nella pratica:

    • Pensiero: devo cercare paper su "agenti ReAct"
    • Azione: chiamata a uno strumento di ricerca
    • Osservazione: risultati della ricerca

Il ciclo si ripete finché l'agente non decide di interrompersi.

Pianificazione Strategica

ReAct funziona passo dopo passo, decidendo la prossima mossa dopo ogni osservazione. Ciò è ottimo per task esploratorie, ma costoso per task strutturate. Se l'agente deve revisionare 20 paper su 5 sottotemi, ReAct puro ripianifica ad ogni singolo passo, consumando token su ragionamenti ripetuti.

Sono emerse diverse strategie di pianificazione, ognuna con compromessi distinti.

    • ReAct (passo dopo passo)
    • Pianificazione e esecuzione
    • Ricerca dell'albero di azioni (LATS)

La scelta della strategia di pianificazione dipende dalla task specifica e dalle esigenze dell'agente.

Confronto tra Strategie di Pianificazione

Il confronto tra le strategie di pianificazione mostra che:

    • ReAct è adattabile ma costoso per task lunghe
    • Pianificazione e esecuzione è rigida ma efficiente per task strutturate
    • LATS è la strategia più costosa ma produce i risultati di più alta qualità

Integrazione e Selezione degli Strumenti

Gli strumenti sono ciò che separa gli agenti dai chatbot. Le capacità di un agente sono definite interamente dal suo set di strumenti e da come seleziona tra loro determina se ha successo o si blocca per sempre.

La chiamata di funzioni è fondamentale. I modelli di linguaggio moderni come Claude, GPT-4o e Gemini supportano la chiamata di funzioni strutturate in modo nativo, restituendo invocazioni di strumenti JSON che il vostro orchestratore può eseguire. Il protocollo di contesto del modello (MCP) standardizza il modo in cui gli agenti scoprono e invocano strumenti tra provider.

I pattern di selezione degli strumenti più comuni in produzione sono:

    • Selezione diretta
    • Selezione a due livelli

La scelta del pattern di selezione degli strumenti dipende dalle esigenze specifiche dell'agente e della task.