LangChain è un framework di orchestrazione open source per lo sviluppo di applicazioni che utilizzano modelli linguistici di grandi dimensioni (LLM, large language model). Gli strumenti e le API di LangChain sono disponibili nelle librerie basate su Python e JavaScript e semplificano il processo di creazione di applicazioni basate su LLM come chatbot e agenti virtuali.
LangChain funge da interfaccia generica per quasi tutti gli LLM, fornendo un ambiente di sviluppo centralizzato per creare applicazioni LLM e integrarle con fonti di dati esterne e workflow di software. L'approccio di LangChain basato sui moduli consente agli sviluppatori e ai data scientist di confrontare in modo dinamico diversi prompt e anche vari foundation model senza dover riscrivere il codice. Questo ambiente modulare consente inoltre di utilizzare programmi che usano più LLM: ad esempio, un'applicazione che utilizza un LLM per interpretare le query degli utenti e un altro LLM per scrivere una risposta.
Lanciato da Harrison Chase a ottobre 2022, l'ascesa fino alla notorietà di LangChain è stata rapidissima: a giugno 2023 era l'unico progetto open source in più rapida crescita su Github.1 In concomitanza con l'importante lancio di ChatGPT di OpenAI del mese successivo, LangChain ha svolto un ruolo determinante nel rendere l'AI generativa più accessibile agli appassionati, sulla scia della sua grande popolarità.
LangChain può semplificare la maggior parte dei casi d'uso per gli LLM e l'elaborazione del linguaggio naturale (NLP, natural language processing), come chatbot, ricerca intelligente, risposta alle domande, servizi di riepilogo o anche agenti virtuali in grado di attuare la Robotic Process Automation.
Gli LLM non sono applicazioni autonome: sono modelli statistici pre-addestrati che devono essere abbinati a un'applicazione (e, in alcuni casi, a fonti di dati specifiche) per raggiungere il loro scopo.
Ad esempio, Chat-GPT non è un LLM: è un'applicazione chatbot che, a seconda della versione scelta, utilizza il modello linguistico GPT-3.5 o GPT-4. Il modello GPT interpreta l'input dell'utente e compone una risposta con il linguaggio naturale, mentre l'applicazione (tra le altre cose) fornisce un'interfaccia che consente all'utente di digitare, leggere e che offre un design UX che controlla l'esperienza del chatbot. Anche a livello aziendale, Chat-GPT non è l'unica applicazione che utilizza il modello GPT: Microsoft utilizza GPT-4 per Bing Chat.
Inoltre, anche se i modelli di fondazione (come quelli per gli LLM) sono pre-addestrati su enormi set di dati, non sono onniscienti. Se un particolare compito richiede l'accesso a informazioni contestuali specifiche, come la documentazione interna o la competenza di dominio, gli LLM devono essere collegati a queste fonti di dati esterne. Anche se desideri semplicemente che il tuo modello rifletta gli eventi attuali in tempo reale, sono necessarie informazioni esterne: i dati interni di un modello sono aggiornati solo nell'arco di tempo durante il quale sono stati pre-addestrati.
Allo stesso modo, se una certa attività di AI generativa richiede l'accesso a workflow di software esterni (ad esempio se desideri che il tuo agente virtuale si integri con Slack), allora ti servirà un modo per integrare l'LLM con l'API per quel software.
Sebbene queste integrazioni possano generalmente essere realizzate con codice completamente manuale, i framework di orchestrazione come LangChain e il portfolio IBM Watsonx di prodotti AI semplificano notevolmente il processo. Inoltre, rendono molto più facile sperimentare diversi LLM per confrontare i risultati, poiché i vari modelli possono essere sostituiti con modifiche minime al codice.
Al centro di LangChain c'è un ambiente di sviluppo che facilita la programmazione delle applicazioni LLM con l'uso dell' astrazione: la semplificazione del codice mediante la rappresentazione di uno o più processi complessi sotto forma di un componente denominato che racchiude tutti i suoi passaggi costitutivi.
Le astrazioni sono un elemento comune della vita quotidiana e del linguaggio. Ad esempio, grazie a π possiamo rappresentare il rapporto tra la lunghezza della circonferenza di un cerchio e quella del suo diametro, senza dover scrivere le sue infinite cifre. Allo stesso modo, un termostato ci consente di controllare la temperatura di casa senza dover comprendere i complessi circuiti che ciò comporta: dobbiamo solo sapere in che modo le diverse impostazioni del termostato si traducono in temperature diverse.
In sostanza, LangChain è una libreria di astrazioni per Python e Javascript, che rappresenta i passaggi e i concetti comuni necessari per lavorare con i modelli linguistici. Questi componenti modulari, come le funzioni e le classi di oggetti, fungono da elementi costitutivi dei programmi di AI generativa. Possono essere concatenati insieme per creare applicazioni, riducendo al minimo la quantità di codice e la comprensione approfondita necessaria per eseguire attività complesse di NPL. Sebbene l'approccio astratto di LangChain potrebbe limitare la misura in cui un programmatore esperto può personalizzare davvero un'applicazione, consente sia agli specialisti sia ai principianti di sperimentare e creare prototipi in modo rapido.
Su LangChain è possibile utilizzare quasi tutti gli LLM. Importare modelli linguistici su LangChain è semplice, purché si disponga di una chiave API. La classe LLM è progettata per fornire un'interfaccia standard per tutti i modelli.
La maggior parte dei provider di LLM ti chiederà di creare un account per ricevere una chiave API. Alcune API possono comportare costi, soprattutto quelle per modelli proprietari closed source, come quelle offerte da OpenAI o Anthropic.
È possibile accedere a molti modelli open source, come BLOOM di BigScience, LLaMa di Meta AI e Flan-T5 di Google, tramite Hugging Face (link esterno a ibm.com). IBM watsonx, grazie alla sua partnership con Hugging Face, offre anche una suite accurata di modelli open source. Se crei un account con uno dei due servizi, potrai generare una chiave API per uno qualsiasi dei modelli offerti da quel provider.
LangChain non si limita ai foundation model predefiniti: la classe CustomLLM (link esterno a ibm.com) consente di usufruire di wrapper LLM. Allo stesso modo, puoi utilizzare le API IBM watsonx e l'SDK Python, che include un'integrazione LangChain, per creare applicazioni su LangChain con modelli che hai già ottimizzato o addestrato per le tue esigenze specifiche usando la classe WatsonXLLM (e l' ID di progetto specifico per il modello).
I prompt sono le istruzioni fornite a un LLM. Spesso l'ingegneria dei prompt viene definita come l'arte di comporre prompt che forniscano in modo efficiente il contesto necessario all'LLM per interpretare l'input e strutturare l'output nel modo più utile per l'utente.
La classe PromptTemplate su LangChain formalizza la composizione dei prompt senza dover codificare manualmente il contesto e le query. Gli elementi importanti di un prompt sono immessi allo stesso modo come classi formali, come input_variables. Un modello di prompt può quindi contenere e riprodurre il contesto, le istruzioni (come "non usare termini tecnici"), una serie di esempi per guidare le risposte (nella cosiddetta generazione di prompt few-shot), un formato di output specifico o una domanda standardizzata a cui rispondere. Puoi salvare e denominare un modello di prompt strutturato in modo efficace e, se necessario, riutilizzarlo facilmente.
Sebbene questi elementi siano codificabili manualmente, i moduli PromptTemplate si integrano perfettamente con altre funzioni di LangChain, come le catene eponime.
Come suggerisce il nome, le catene sono il fulcro dei workflow di LangChain. Uniscono gli LLM ad altri componenti, creando applicazioni mediante l'esecuzione di una sequenza di funzioni.
La catena più basilare è LLMChain, che chiama semplicemente un modello e un modello di prompt per quel modello. Ad esempio, immagina di aver salvato un prompt come “ExamplePrompt" e di volerlo confrontare con Flan-T5. Puoi importare LLMChain da langchain.chains, quindi definire chain_example = LLMChain(llm = flan-t5, prompt = ExamplePrompt). Per eseguire la catena per un dato input, dovrai semplicemente chiamare chain_example.run(“input”).
Per utilizzare l'output di una funzione come input per quella successiva, puoi usare SimpleSequentialChain. A seconda delle tue esigenze specifiche, ogni funzione potrebbe utilizzare prompt diversi, strumenti diversi, parametri diversi o persino modelli diversi.
Per svolgere determinati compiti, gli LLM dovranno accedere a specifiche fonti di dati esterne non incluse nel set di dati della sua formazione, come documenti, e-mail o set di dati interni. LangChain si riferisce collettivamente a questa documentazione esterna con il termine di indici.
LangChain offre un'ampia gamma di caricatori di documenti per applicazioni di terze parti (link esterno a ibm.com). Ciò consente di importare facilmente i dati da fonti come, tra le tante, servizi di archiviazione file (come Dropbox, Google Drive e Microsoft OneDrive), contenuti web (come YouTube, PubMed o URL specifici), strumenti di collaborazione (come Airtable, Trello, Figma e Notion) e database (come Pandas, MongoDB e Microsoft).
A differenza dei database strutturati tradizionali, i database vettoriali rappresentano i punti dati convertendoli in incorporamenti vettoriali: rappresentazioni numeriche sotto forma di vettori con un numero fisso di dimensioni, che spesso raggruppano punti dati correlati utilizzando metodi di apprendimento non supervisionati. Ciò consente query a bassa latenza, anche per set di dati di grandi dimensioni, il che aumenta notevolmente l'efficienza. Gli incorporamenti vettoriali memorizzano anche i metadati di ogni vettore, migliorando ulteriormente le possibilità di ricerca.
LangChain fornisce integrazioni per oltre 25 metodi di incorporamento diversi e anche per più di 50 archivi vettoriali differenti (su cloud e locali).
Per aumentare la velocità e ridurre le esigenze di calcolo, spesso è consigliabile suddividere i documenti di testo di grandi dimensioni in parti più piccole. I TextSplitter di LangChain suddividono il testo in piccoli blocchi significativi dal punto di vista semantico, che possono quindi essere combinati usando metodi e parametri scelti da te.
Dopo aver collegato le fonti esterne di conoscenza, il modello deve essere in grado di recuperare e integrare rapidamente le informazioni rilevanti all'occorrenza. Come watsonx, LangChain offre la retrieval augmented generation (RAG): i suoi moduli di recupero accettano una query string come input e restituiscono un elenco di documenti come output.
Per impostazione predefinita, gli LLM non sono dotati di memoria a lungo termine per le conversazioni precedenti (a meno che la cronologia della chat non venga utilizzata come input per una query). LangChain risolve questo problema con semplici utility per aggiungere memoria a un sistema, con opzioni che vanno dal conservare tutte le conversazioni al conservare un riepilogo della conversazione fino a quel momento al conservare gli n scambi più recenti.
Gli agenti LangChain possono utilizzare un determinato modello linguistico come motore di ragionamento per stabilire quali azioni intraprendere. Quando si crea una catena per un agente, gli input comprendono:
Nonostante la potenza e versatilità annunciate, gli LLM hanno limitazioni importanti: in particolare, la mancanza di informazioni aggiornate, la mancanza di competenze specifiche del dominio e difficoltà generale con la matematica.
Gli strumentiLangChain (link esterno a ibm.com) sono un insieme di funzioni che consentono agli agenti LangChain di interagire con le informazioni del mondo reale al fine di espandere o migliorare i servizi che può fornire. Ecco alcuni esempi di importanti strumenti di LangChain:
Wolfram Alpha: fornisce l'accesso a potenti funzioni di calcolo e di visualizzazione dei dati, offrendo funzionalità matematiche sofisticate.
Google Search: fornisce l'accesso alle applicazioni di Google Search, offrendo alle applicazioni e agli agenti informazioni in tempo reale.
OpenWeatherMap: recupera le informazioni sul meteo.
Wikipedia: fornisce l'accesso efficiente alle informazioni degli articoli di Wikipedia.
Rilasciato nell’autunno del 2023, LangSmith mira a colmare il divario tra le funzionalità accessibili di prototipazione che hanno portato LangChain alla ribalta e la creazione di applicazioni LLM di qualità.
LangSmith fornisce strumenti per monitorare, valutare ed eseguire il debug delle applicazioni, tra cui la possibilità di tracciare automaticamente tutte le chiamate ai modelli per individuare gli errori e testare le prestazioni con diverse configurazioni dei modelli. Questa visibilità mira a rafforzare le applicazioni, per farle diventare più robuste e convenienti.
LangChain è open source e gratuito: il codice sorgente è disponibile per il download su Github (link esterno a ibm.com).
LangChain può essere installato anche su Python con un semplice comando pip: pip install langchain. Per installare tutte le dipendenze di LangChain (anziché solo quelle che ritieni necessarie), puoi eseguire il comando pip install langchain[all].
Molti tutorial dettagliati sono disponibili nell'ampio ecosistema della comunità LangChain e nella documentazione ufficiale su docs.langchain.com (link esterno a ibm.com).
Le applicazioni realizzate con LangChain offrono ottime utility per diversi casi d'uso, da semplici attività di risposta a domande e compiti di generazione di testo a soluzioni più complesse che utilizzano un LLM come motore di ragionamento.
Esplora la libreria IBM di foundation model nel portfolio di watsonx per scalare in sicurezza l'AI generativa per la tua azienda.
Metti l'AI al servizio della tua azienda grazie all'esperienza leader di settore e alla gamma di soluzioni di IBM nel campo dell'AI.
Reinventa i workflow e le operazioni critiche aggiungendo l'AI per massimizzare le esperienze, il processo decisionale in tempo reale e il valore di business.
Scopri IBM® Granite, la nostra famiglia di modelli AI aperti, performanti e affidabili, personalizzati per le aziende e ottimizzati per scalare le applicazioni AI. Esplora le opzioni relative a lingua, codice, serie temporali e guardrail.
Scopri come scegliere il foundation model di AI più adatto al tuo caso d’uso.
Consulta gli articoli, i blog e i tutorial di IBM Developer per approfondire la tua conoscenza degli LLM.
Scopri come incoraggiare i team a migliorare sempre di più le prestazioni dei modelli e a superare la concorrenza utilizzando le tecniche e le infrastrutture AI più recenti.
1 The fastest-growing open-source startups in Q2 2023 (link esterno a ibm.com), Runa capital, 2023
IBM web domains
ibm.com, ibm.org, ibm-zcouncil.com, insights-on-business.com, jazz.net, mobilebusinessinsights.com, promontory.com, proveit.com, ptech.org, s81c.com, securityintelligence.com, skillsbuild.org, softlayer.com, storagecommunity.org, think-exchange.com, thoughtsoncloud.com, alphaevents.webcasts.com, ibm-cloud.github.io, ibmbigdatahub.com, bluemix.net, mybluemix.net, ibm.net, ibmcloud.com, galasa.dev, blueworkslive.com, swiss-quantum.ch, blueworkslive.com, cloudant.com, ibm.ie, ibm.fr, ibm.com.br, ibm.co, ibm.ca, community.watsonanalytics.com, datapower.com, skills.yourlearning.ibm.com, bluewolf.com, carbondesignsystem.com