- Published on
Sviluppo di Agenti Anthropic: La Semplicità Vince sulla Complessità
Definizione di Agente Intelligente
Il concetto di agenti intelligenti è vario. Alcuni li vedono come "maggiordomi onnipotenti" capaci di pensare autonomamente, prendere decisioni e utilizzare strumenti per completare compiti complessi. Altri li considerano "impiegati diligenti" che eseguono procedure di lavoro predefinite. Anthropic li classifica entrambi come sistemi intelligenti, distinguendo tra flussi di lavoro e agenti:
- Flusso di lavoro: Un sistema che orchestra modelli linguistici di grandi dimensioni (LLM) e strumenti attraverso percorsi di codice predefiniti.
- Agente: Un sistema in cui un LLM guida dinamicamente il proprio flusso e l'uso di strumenti, controllando autonomamente il modo in cui i compiti vengono completati.
Quando Scegliere un Agente
Anthropic suggerisce di seguire il principio "mantieni la semplicità se possibile" nello sviluppo di applicazioni AI. Non tutti gli scenari richiedono sistemi intelligenti complessi. I sistemi intelligenti sono potenti, ma possono portare a risposte più lente e costi maggiori. Gli sviluppatori devono bilanciare funzionalità ed efficienza.
- Flussi di lavoro: Adatti a compiti definiti che richiedono prevedibilità e coerenza.
- Agenti: Più adatti a scenari su larga scala che richiedono flessibilità e decisioni guidate da modelli.
Per molte applicazioni, l'utilizzo di buoni prompt con recupero ed esempi contestuali, ponendo direttamente domande ai modelli linguistici, è spesso sufficiente.
L'Uso dei Framework
Attualmente, esistono vari framework per aiutare gli sviluppatori a costruire agenti intelligenti AI, come:
- LangGraph di LangChain
- Framework AI Agent di Amazon Bedrock
- Rivet, uno strumento di costruzione di flussi di lavoro LLM drag-and-drop
- Vellum, uno strumento GUI per la costruzione e il test di flussi di lavoro complessi
Questi framework semplificano il processo di sviluppo, ma possono anche aggiungere livelli di astrazione al codice, rendendo la logica sottostante meno trasparente, aumentando la difficoltà di debug e potenzialmente introducendo soluzioni eccessivamente complesse in scenari semplici.
Anthropic raccomanda agli sviluppatori di iniziare utilizzando direttamente l'API dei grandi modelli linguistici. Molti schemi possono essere implementati con poche righe di codice. Se si sceglie di utilizzare un framework, è fondamentale comprenderne i principi sottostanti. La scarsa comprensione dei meccanismi sottostanti ai framework è una delle principali cause di problemi nello sviluppo.
Il cookbook di Anthropic fornisce esempi specifici.
Moduli di Costruzione, Flussi di Lavoro e Agenti
Modulo di Costruzione Base: LLM Potenziati
Il modulo di costruzione base dei sistemi intelligenti è un LLM potenziato, dotato di funzionalità come il recupero e la memorizzazione. I modelli di Anthropic possono utilizzare proattivamente queste capacità, ad esempio generando query di ricerca, selezionando strumenti e decidendo quali informazioni conservare.
Nell'espandere le funzionalità, è importante concentrarsi su:
- Personalizzare le funzionalità in base a scenari applicativi specifici.
- Garantire che il modello abbia interfacce semplici e ben documentate.
Il recente protocollo di contesto dei modelli di Anthropic semplifica l'integrazione di modelli AI con ecosistemi di strumenti di terze parti.
Flussi di Lavoro: Catene di Prompt
Le catene di prompt suddividono compiti complessi in più passaggi, con ogni passaggio che richiama un modello linguistico di grandi dimensioni e i passaggi successivi che elaborano i risultati del passaggio precedente. Gli sviluppatori possono aggiungere punti di controllo nelle fasi intermedie per garantire che il processo proceda come previsto.
Le catene di prompt sono adatte a scenari in cui compiti complessi possono essere chiaramente suddivisi in una serie di sotto-compiti fissi. Ogni modello si concentra sul completamento di un compito semplice, e sebbene il tempo di risposta complessivo possa essere leggermente più lungo, la precisione aumenta in modo significativo.
Esempi di applicazione tipici:
- Prima genera il testo di marketing, poi lo traduce in altre lingue.
- Prima scrivi una bozza del documento ed esegui un controllo di conformità, poi scrivi il documento completo basato sulla bozza.
Flussi di Lavoro: Smistamento Intelligente
La tecnologia di smistamento determina il tipo di compito in entrata e lo assegna al modulo appropriato. Questo design consente a ciascun modulo di essere ottimizzato per compiti specifici, evitando interferenze tra diversi tipi di compiti. Lo smistamento intelligente è adatto a scenari in cui i compiti hanno caratteristiche di classificazione chiare. Il sistema AI può utilizzare modelli linguistici di grandi dimensioni o algoritmi tradizionali per identificare e smistare accuratamente i tipi di compiti.
Esempi di applicazione tipici:
- Nei sistemi di assistenza clienti, indirizza domande generali, richieste di rimborso e richieste di supporto tecnico ai processi appropriati.
- Assegna domande semplici e comuni a modelli più piccoli e domande difficili e rare a modelli più potenti per ottimizzare costi e velocità.
Flussi di Lavoro: Paralleli
I modelli linguistici di grandi dimensioni possono elaborare compiti contemporaneamente e aggregare gli output in modo programmatico. Le caratteristiche dei flussi di lavoro paralleli includono:
- Suddivisione del compito: Suddividi il compito in sotto-compiti eseguibili in parallelo e integra i risultati alla fine.
- Meccanismo di voto: Esegui lo stesso compito più volte, scegli il risultato migliore o sintetizza più risposte.
Il metodo parallelo è molto efficace quando i sotto-compiti possono essere eseguiti in parallelo per aumentare la velocità, o quando sono necessari più tentativi da diverse prospettive per ottenere risultati più affidabili. Per compiti complessi, è meglio concentrare ogni chiamata sull'elaborazione di un aspetto specifico.
Esempi di applicazione tipici:
- Suddivisione del compito:
- Sicurezza: un modello elabora le richieste degli utenti e un altro esegue la revisione dei contenuti.
- Valutazione delle prestazioni: modelli diversi valutano le metriche delle prestazioni del sistema.
- Meccanismo di voto:
- Controllo della sicurezza del codice: più modelli di rilevamento trovano insieme le vulnerabilità del codice.
- Revisione dei contenuti: più modelli valutano la sicurezza dei contenuti da diverse prospettive.
Flussi di Lavoro: Leader - Esecutore
Un modello linguistico centrale di grandi dimensioni suddivide dinamicamente i compiti, li assegna ai modelli esecutori e riassume i risultati.
Questo flusso di lavoro è adatto a compiti complessi per i quali è difficile determinare in anticipo i passaggi specifici. La suddivisione dei compiti non è fissa, ma viene determinata in modo dinamico dal sistema AI in base alla situazione.
Esempi di applicazione tipici:
- Applicazioni di programmazione che richiedono modifiche complesse a più file.
- Compiti di ricerca che richiedono la raccolta e l'analisi di informazioni rilevanti da più fonti.
Flussi di Lavoro: Valutazione - Ottimizzazione
Un LLM viene chiamato per generare una risposta e un altro fornisce valutazione e feedback, formando un ciclo.
Questo flusso di lavoro è particolarmente efficace quando ci sono chiari criteri di valutazione, e quando l'affinamento iterativo può portare a un valore significativo. L'LLM è in grado di fornire feedback, simile al processo di revisione ripetuta degli scrittori umani.
Esempi di applicazione tipici:
- Traduzione letteraria: il modello di valutazione rileva le differenze linguistiche omesse nella traduzione e fornisce suggerimenti di modifica.
- Ricerca complessa: il modello di valutazione determina se è necessario continuare la ricerca in modo più approfondito.
Agenti Intelligenti
Gli agenti intelligenti sono emersi con la maturazione degli LLM nella comprensione di input complessi, nel ragionamento, nella pianificazione, nell'utilizzo di strumenti e nel recupero degli errori.
Il lavoro di un agente intelligente inizia con un comando o una discussione interattiva da parte di un utente umano. Una volta che il compito è chiaro, l'agente intelligente pianifica e opera in modo indipendente, potrebbe aver bisogno di richiedere ulteriori informazioni agli umani o chiedere loro di prendere decisioni.
In ogni fase del processo di esecuzione, è essenziale ottenere la "verità" dall'ambiente. Gli agenti intelligenti possono sospendere in corrispondenza dei punti di controllo o quando incontrano un blocco per ottenere feedback umano. I compiti di solito terminano dopo il completamento, ma spesso includono anche una condizione di arresto.
Gli agenti intelligenti sono in grado di gestire compiti complessi, ma la loro implementazione è spesso semplice, di solito solo un modello linguistico di grandi dimensioni che utilizza strumenti in un ciclo basato sul feedback ambientale. Pertanto, è essenziale progettare un set di strumenti e la relativa documentazione in modo chiaro e ponderato.
Gli agenti intelligenti sono adatti a problemi aperti, per i quali è difficile prevedere il numero di passaggi richiesti e non è possibile codificare percorsi fissi. L'autonomia degli agenti intelligenti li rende la scelta ideale per l'espansione dei compiti in ambienti affidabili. L'autonomia degli agenti intelligenti significa costi più elevati e potrebbe esserci il rischio di un accumulo di errori. Si raccomanda di eseguire test approfonditi in ambienti sandbox e di impostare misure di sicurezza adeguate.
Esempi di applicazioni di agenti intelligenti:
- Un agente di codice per la risoluzione di compiti SWE-bench che comportano la modifica di più file in base alla descrizione del compito.
- La funzione "Utilizzo del computer" di Anthropic, in cui Claude utilizza un computer per completare i compiti.
Combinazione e Personalizzazione
Questi moduli di costruzione non sono prescrittivi, e gli sviluppatori possono modellarli e combinarli in base ai casi d'uso. La chiave del successo è misurare le prestazioni e implementare in modo iterativo. L'aggiunta di complessità dovrebbe essere presa in considerazione solo quando non è possibile raggiungere una soluzione più semplice. Il successo nel campo degli LLM non sta nella costruzione del sistema più complesso, ma nella costruzione del sistema adatto alle esigenze. Inizia con semplici prompt, ottimizzali con una valutazione completa e aggiungi sistemi di agenti multi-step solo quando non è possibile trovare una soluzione più semplice.
Quando si distribuiscono agenti intelligenti, è necessario seguire i seguenti principi:
- Mantenere la semplicità nella progettazione dell'agente.
- Dare priorità alla trasparenza dell'agente, mostrando chiaramente ogni passo pianificato.
- Creare con cura l'interfaccia agente-computer (ACI) attraverso una documentazione e test completi degli strumenti.