Che cos'è LangChain?

Autori

Dave Bergmann

Senior Staff Writer, AI Models

IBM Think

Cole Stryker

Staff Editor, AI Models

IBM Think

Che cos'è LangChain?

LangChain è un framework di orchestrazione open source per lo sviluppo di applicazioni che utilizzano modelli linguistici di grandi dimensioni (LLM). Gli strumenti e le API di LangChain sono disponibili nelle librerie basate su Python e JavaScript e semplificano il processo di sviluppo di applicazioni basate su LLM come chatbot e agenti AI. 

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 ad ottobre 2022, LangChain ha visto un'ascesa rapidissima: a giugno 2023 era il 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 (genAI) più accessibile agli appassionati e alle startup, sulla scia della sua grande popolarità. I progressi nell'accessibilità dell'AI agentica stanno attualmente consentendo una rivoluzione dell'automazione.

LangChain può semplificare la maggior parte dei casi d'uso per gli LLM e l'elaborazione del linguaggio naturale (NLP), come chatbot, ricerca intelligente, risposta alle domande, riepilogo dei servizi o persino agenti AI capaci di attuare la Robotic Process Automation.

Integrazioni con gli LLM

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 e leggere, oltre a 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 foundation model (come quelli per gli LLM) sono pre-addestrati sulla base di enormi set di dati, non sono onniscienti. Se una particolare attività richiede l'accesso a informazioni contestuali specifiche, come la documentazione interna o la competenza nell'ambito, 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 per l'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 di intelligenza artificiale 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.

Come funziona LangChain?

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.

Importazione di modelli linguistici

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.

Molti modelli open source, come LLaMa di Meta AI, Deepseek-LLM di Deepseek, Granite di IBM e Flan-T5 di Google, sono accessibili tramite Hugging Face. 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: la classe CustomLLM  consente di usufruire di wrapper LLM personalizzati. 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).

Modelli di prompt

I prompt sono le istruzioni fornite a un LLM. Spesso il prompt engineering viene definito 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.

Catene

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.

Indici

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.

Caricatori di documenti

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).

Database vettoriali

A differenza dei database strutturati tradizionali, i database vettoriali rappresentano i punti dati convertendoli in embedding 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 embedding 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). 

Divisori di testo 

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.

Recupero

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.

Con LangChain, possiamo anche creare sistemi RAG agentici. Nelle applicazioni RAG tradizionali, l'LLM è dotato di un database vettoriale a cui fare riferimento per formare le sue risposte. Al contrario, le applicazioni agentic AI non si limitano al solo recupero dei dati. Agenic RAG può anche comprendere strumenti per attività come la risoluzione di calcoli matematici, la scrittura di e-mail, l'esecuzione di analisi dei dati e altro ancora.

Memoria

Per impostazione predefinita, gli LLM non sono dotati di memoria a lungo termine per le interazioni 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.

Strumenti

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 strumenti LangChain sono un insieme di funzioni che consentono agli agenti LangChain di interagire con informazioni del mondo reale per ampliare o migliorare i servizi che possono fornire. Ecco alcuni esempi di importanti strumenti precostituiti 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.

Le ultime tendenze in materia di AI, proposte da esperti

Ricevi insight selezionati sulle notizie più importanti e interessanti sull'AI. Iscriviti alla nostra newsletter settimanale Think. Leggi l'Informativa sulla privacy IBM.

Grazie per aver effettuato l'iscrizione!

L'abbonamento sarà fornito in lingua inglese. Troverai un link per annullare l'iscrizione in tutte le newsletter. Puoi gestire i tuoi abbonamenti o annullarli qui. Per ulteriori informazioni, consulta l'Informativa sulla privacy IBM.

Agenti LangChain

Possiamo creare un agente con il framework LangChain per dare a un LLM la capacità di prendere decisioni, utilizzare strumenti e completare attività complesse passo dopo passo, anziché generare una sola risposta testuale. A differenza di una semplice interazione di risposta rapida con un solo LLM, un agente basato su LangChain può pensare, pianificare, eseguire una sequenza di azioni, imparare e adattarsi.

LangChain offre un'esperienza utente semplificata con un framework già pronto ed estensibile per la creazione di agenti AI, quindi non è necessario creare nuove logiche di selezione degli strumenti, cicli di ragionamento (come per gli agenti ReAct), tracciamento delle osservazioni/azioni o orchestrazione e formattazione dei prompt.

I pacchetti, le classi e i metodi specifici di LangChain variano a seconda della piattaforma di AI che si intende utilizzare. Alcuni componenti chiave della classe WatsonxLLM che consentono la comunicazione con i modelli watsonx.ai tramite LangChain includono:

  • langchain_ibm: il pacchetto responsabile dell'integrazione di LangChain con IBM. È necessario installare questo pacchetto per utilizzare una delle classi e dei metodi seguenti.
  • ibm_watsonx_ai: la libreria che consente la connessione a servizi watsonx.ai come IBM Cloud e IBM Cloud Pak for Data.
  • APIClient: la classe principale della libreria ibm_watsonx_ai che gestisce le risorse del servizio API. I parametri includono le credenziali API e l'endpoint.
  • WatsonXLLM: il wrapper per i foundation model IBM watsonx.ai. Questo wrapper fornisce l'integrazione della catena ed è necessario per l'importazione. I parametri includono l'ID del modello, la chiave API watsonx.ai, l'endpoint URL, l'ID del progetto e tutti i parametri LLM.
  • ModelInference: la classe che crea un'istanza dell'interfaccia del modello. I parametri includono l'ID del modello, le credenziali watsonx.ai, l'ID del progetto, i parametri del modello e altro ancora. Una volta istanziato, il modello può essere passato alla classe.
  • invoke: metodo che chiama direttamente il modello con un singolo prompt di tipo stringa. 
  • generate: il metodo che chiama il modello con più prompt di tipo stringa in un elenco.

Un'altra classe LangChain per la creazione di agenti AI con l'integrazione della chiamata e del concatenamento degli strumenti con i modelli watsonx.ai è ChatWatsonX. Questa classe, utilizzata in molti dei nostri tutorial, utilizza il metodo bind_tools per passare un elenco di strumenti all'LLM ad ogni iterazione. Questi possono includere sia strumenti personalizzati che precostituiti. Per recuperare la risposta dell'agente AI, è possibile utilizzare il metodo invoke. Una volta richiamato l'agente, l'attributo tool_calls della risposta mostra il nome, gli argomenti, l'ID e il tipo di ogni chiamata dello strumento effettuata, se presente.

LangGraph

LangGraph, creato da LangChain, è un framework open source che supporta l'orchestrazione multiagente e consente agli sviluppatori di creare workflow agentici in cui diversi agenti interagiscono, si specializzano e collaborano. 

Fondamentalmente, LangGraph utilizza la potenza delle architetture basate su grafi per modellare e gestire le complesse relazioni tra i vari componenti di un workflow con agenti AI. In combinazione con il meccanismo di monitoraggio human-in-the-loop e una serie di integrazioni di API e strumenti, LangGraph offre agli utenti una piattaforma versatile per lo sviluppo di soluzioni e workflow AI, tra cui chatbot, grafi di stato e altri sistemi basati su agenti

Con la libreria langchain-mcp-adapters , gli agenti LangGraph possono anche utilizzare strumenti definiti sui server MCP (Model Context Protocol). La libreria mcp consente agli utenti di creare anche server MCP personalizzati. In sostanza, MCP consente una connessione sicura tra un sistema di AI come un agente AI, e strumenti esterni. Pertanto, vari LLM possono connettersi agli stessi strumenti e fonti di dati in base all'MCP standard. 

AI Academy

Ecco perché i foundation model rappresentano un cambio di paradigma per l'AI

Scopri una nuova classe di modelli AI flessibili e riutilizzabili che possono sbloccare nuove entrate, ridurre i costi e aumentare la produttività, consulta quindi la nostra guida per approfondire.

LangSmith

Lanciato 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 e valutare le applicazioni ed eseguirne il debug, compresa la possibilità di tracciare automaticamente tutte le chiamate dei modelli per individuare gli errori e testare le prestazioni con diverse configurazioni dei modelli. L'uso di LangSmith non si limita alle applicazioni create utilizzando l'ecosistema LangChain. La valutazione delle prestazioni degli agenti viene effettuata utilizzando valutatori LLM-as-a-Judge. Questa observability e queste metriche mirano a ottimizzare applicazioni più robuste ed efficienti in termini di costi. 

Inizia con LangChain

LangChain è open source e gratuito: il codice sorgente è disponibile per il download su Github.

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].

IBM fornisce molti tutorial passo passo, quali quelli per la chiamata degli strumenti LangChain, la RAG agentica, l'orchestrazione degli agenti LLM, il chunking agentico e altro ancora.

Casi d'uso di LangChain

Le applicazioni AI realizzate con LangChain offrono ottime utility per diversi casi d'uso, dalle semplici attività di risposta alle domande e generazione di testo alle soluzioni più complesse che utilizzano un LLM come motore di ragionamento.

Chatbot

I chatbot chatbot rappresentano alcuni degli usi più intuitivi degli LLM. LangChain può essere utilizzato per fornire un contesto adeguato per l'uso specifico di un chatbot e per integrare i chatbot nei canali di comunicazione e nei workflow esistenti con le proprie API.

Riepilogo

I modelli linguistici possono essere incaricati di riassumere molti tipi di testo, dalle trascrizioni e gli articoli di tipo accademico complessi alle e-mail in arrivo.

Risposta alle domande

Utilizzando documenti specifici o basi di conoscenza specializzate (come Wolfram, arXiv o PubMed), gli LLM possono recuperare informazioni rilevanti dallo storage e articolare risposte utili. Se vengono ottimizzati o se il prompt viene eseguito correttamente, alcuni LLM possono rispondere a molte domande anche senza informazioni esterne.

Data augmentation

Gli LLM possono essere utilizzati per generare dati sintetici da utilizzare nel machine learning. Ad esempio, un LLM può essere addestrato a generare campioni di dati aggiuntivi che somigliano molto ai punti dati in un set di dati di addestramento.

Agenti virtuali

I moduli Agente di LangChain sono integrati con i workflow corretti e possono utilizzare un LLM per stabilire i prossimi passi in modo autonomo e agire utilizzando la Robotic Process Automation (RPA).

Soluzioni correlate
Foundation Model

Esplora la libreria IBM di foundation model nel portfolio di watsonx per scalare in sicurezza l'AI generativa per la tua azienda.

Scopri watsonx.ai
Soluzioni di intelligenza artificiale

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.

Esplora le soluzioni AI
Consulenza e servizi sull'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.

Esplora i servizi AI
Fai il passo successivo

Esplora la libreria IBM dei foundation model nel portafoglio di IBM watsonx per scalare in sicurezza l'AI generativa per la tua azienda.

Esplora watsonx.ai Esplora le soluzioni AI