Prompt engineering
Dalla Zero alla Progettazione Avanzata di Prompt con Langchain in Python

Un aspetto importante dei Modelli di Linguaggio di Grande Scala (LLM) è il numero di parametri che questi modelli utilizzano per l’apprendimento. Più parametri ha un modello, meglio può comprendere la relazione tra le parole e le frasi. Ciò significa che i modelli con miliardi di parametri hanno la capacità di generare vari formati di testo creativo e rispondere a domande aperte e complesse in modo informativo.
I LLM come ChatGPT, che utilizzano il modello Transformer, sono proficienti nella comprensione e generazione del linguaggio umano, rendendoli utili per le applicazioni che richiedono la comprensione del linguaggio naturale. Tuttavia, essi non sono senza limitazioni, che includono conoscenze obsolete, incapacità di interagire con sistemi esterni, mancanza di comprensione del contesto e a volte generazione di risposte plausibili ma errate o insensate, tra gli altri.
Affrontare queste limitazioni richiede l’integrazione dei LLM con fonti di dati esterne e capacità, che possono presentare complessità e richiedere competenze estensive di codifica e gestione dei dati. Ciò, unito alle sfide di comprensione dei concetti di intelligenza artificiale e algoritmi complessi, contribuisce alla curva di apprendimento associata allo sviluppo di applicazioni che utilizzano i LLM.
Tuttavia, l’integrazione dei LLM con altri strumenti per formare applicazioni alimentate da LLM potrebbe ridefinire il nostro paesaggio digitale. Il potenziale di tali applicazioni è vasto, includendo il miglioramento dell’efficienza e della produttività, la semplificazione dei compiti, il miglioramento della presa di decisioni e la fornitura di esperienze personalizzate.
In questo articolo, esploreremo più a fondo questi problemi, esaminando le tecniche avanzate di progettazione di prompt con Langchain, offrendo spiegazioni chiare, esempi pratici e istruzioni passo dopo passo su come implementarle.
Langchain, una libreria all’avanguardia, porta convenienza e flessibilità nella progettazione, implementazione e regolazione dei prompt. Mentre esaminiamo i principi e le pratiche della progettazione di prompt, imparerai a utilizzare le funzionalità potenti di Langchain per sfruttare le forze dei modelli di intelligenza artificiale generativa di stato dell’arte come GPT-4.
Comprensione dei Prompt
Prima di addentrarci nelle tecniche di progettazione di prompt, è essenziale comprendere il concetto di prompt e la loro importanza.
Un ‘prompt‘ è una sequenza di token utilizzata come input per un modello di linguaggio, istruendolo a generare una specifica tipologia di risposta. I prompt giocano un ruolo cruciale nel guidare il comportamento di un modello. Possono impattare sulla qualità del testo generato e, quando progettati correttamente, possono aiutare il modello a fornire risultati approfonditi, precisi e specifici del contesto.
La progettazione di prompt è l’arte e la scienza di creare prompt efficaci. L’obiettivo è quello di ottenere l’output desiderato da un modello di linguaggio. Selezionando e strutturando con cura i prompt, è possibile guidare il modello verso la generazione di risposte più accurate e rilevanti. Nella pratica, ciò comporta il raffinamento delle frasi di input per adattarle alle tendenze di formazione e strutturali del modello.
La sofisticazione della progettazione di prompt va dalle tecniche semplici, come l’alimentazione del modello con parole chiave rilevanti, a metodi più avanzati che coinvolgono la progettazione di prompt complessi e strutturati che utilizzano a proprio vantaggio la meccanica interna del modello.
Langchain: Lo Strumento di Prompt più Velocemente Crescente
LangChain, lanciato nel 2022 da Harrison Chase, è diventato uno degli framework open-source più apprezzati su GitHub nel 2023. Offre un’interfaccia semplificata e standardizzata per l’integrazione dei Modelli di Linguaggio di Grande Scala (LLM) nelle applicazioni. Fornisce inoltre un’interfaccia ricca di funzionalità per la progettazione di prompt, consentendo ai sviluppatori di sperimentare con diverse strategie e valutare i risultati. Utilizzando Langchain, è possibile eseguire compiti di progettazione di prompt in modo più efficace e intuitivo.
LangFlow funge da interfaccia utente per orchestrare i componenti di LangChain in un diagramma di flusso eseguibile, consentendo una rapida prototipazione e sperimentazione.

LangChain colma una lacuna cruciale nello sviluppo di intelligenza artificiale per le masse. Consente una serie di applicazioni di elaborazione del linguaggio naturale (NLP) come assistenti virtuali, generatori di contenuti, sistemi di risposta alle domande e altro, per risolvere una gamma di problemi del mondo reale.
Piuttosto che essere un modello o fornitore autonomo, LangChain semplifica l’interazione con diversi modelli, estendendo le capacità delle applicazioni LLM oltre i limiti di una semplice chiamata API.
L’Architettura di LangChain
I principali componenti di LangChain includono Model I/O, Prompt Templates, Memoria, Agenti e Catene.
Model I/O
LangChain consente una connessione senza soluzione di continuità con vari modelli di linguaggio avvolgendoli con un’interfaccia standardizzata nota come Model I/O. Ciò facilita un passaggio senza problemi tra modelli per ottimizzazione o migliori prestazioni. LangChain supporta vari provider di modelli di linguaggio, tra cui OpenAI, HuggingFace, Azure, Fireworks e molti altri.
Prompt Templates
Questi sono utilizzati per gestire e ottimizzare le interazioni con i LLM fornendo istruzioni concise o esempi. L’ottimizzazione dei prompt migliora le prestazioni del modello e la loro flessibilità contribuisce notevolmente al processo di input.
Un semplice esempio di prompt template:
<p>from langchain.prompts import PromptTemplate
prompt = PromptTemplate(input_variables=["soggetto"],
template="Quali sono gli ultimi progressi nel campo del {soggetto}?")
print(prompt.format(soggetto="Elaborazione del Linguaggio Naturale"))</p>
Man mano che avanziamo nella complessità, incontriamo modelli più sofisticati in LangChain, come il pattern Reason and Act (ReAct). ReAct è un pattern vitale per l’esecuzione di azioni dove l’agente assegna un compito a uno strumento appropriato, personalizza l’input per esso e analizza l’output per completare il compito. L’esempio Python seguente mostra un pattern ReAct. Dimostra come un prompt sia strutturato in LangChain, utilizzando una serie di pensieri e azioni per ragionare su un problema e produrre una risposta finale:
PREFIX = """Rispondi alla seguente domanda utilizzando gli strumenti forniti:"""
FORMAT_INSTRUCTIONS = """Segui questo formato:
Domanda: {input_question}
Pensiero: il tuo pensiero iniziale sulla domanda
Azione: la tua azione scelta da [{tool_names}]
Input Azione: il tuo input per l'azione
Osservazione: il risultato dell'azione"""
SUFFIX = """Inizia!
Domanda: {input}
Pensiero:{agent_scratchpad}"""
Memoria
La memoria è un concetto critico in LangChain, che consente ai LLM e agli strumenti di conservare informazioni nel tempo. Questo comportamento stato-dipendente migliora le prestazioni delle applicazioni LangChain memorizzando le risposte precedenti, le interazioni dell’utente, lo stato dell’ambiente e gli obiettivi dell’agente. Le strategie di ConversationBufferMemory e ConversationBufferWindowMemory aiutano a tenere traccia della parte completa o recente di una conversazione, rispettivamente. Per un approccio più sofisticato, la strategia di ConversationKGMemory consente di codificare la conversazione come un grafo di conoscenza che può essere riutilizzato in prompt o utilizzato per prevedere risposte senza chiamare il LLM.
Agenti
Un agente interagisce con il mondo eseguendo azioni e compiti. In LangChain, gli agenti combinano strumenti e catene per l’esecuzione di compiti. Può stabilire una connessione con il mondo esterno per il recupero di informazioni per aumentare la conoscenza del LLM, superando così le loro limitazioni intrinseche. Possono decidere di passare calcoli a un calcolatore o interprete Python a seconda della situazione.
Gli agenti sono dotati di sottocomponenti:
- Strumenti: Questi sono componenti funzionali.
- Toolkit: Collezioni di strumenti.
- Esecutori di Agenti: Questo è il meccanismo di esecuzione che consente di scegliere tra gli strumenti.
Gli agenti in LangChain seguono anche il pattern ReAct a zero shot, dove la decisione si basa solo sulla descrizione dello strumento. Questo meccanismo può essere esteso con la memoria per tenere conto della storia completa della conversazione. Con ReAct, invece di chiedere a un LLM di completare il testo, è possibile istruirlo a rispondere in un ciclo di pensiero/azione/osservazione.
Catene
Le catene, come suggerisce il termine, sono sequenze di operazioni che consentono alla libreria LangChain di elaborare input e output del modello di linguaggio in modo fluido. Questi componenti fondamentali di LangChain sono fondamentalmente composti da collegamenti, che possono essere altre catene o primitive come prompt, modelli di linguaggio o utility.
Immagina una catena come una cintura di trasporto in una fabbrica. Ogni passo su questa cintura rappresenta un’operazione specifica, che potrebbe essere l’invocazione di un modello di linguaggio, l’applicazione di una funzione Python a un testo o persino l’istruzione del modello in un modo particolare.
LangChain categorizza le sue catene in tre tipi: Utility catene, Catene generiche e Catene di combinazione di documenti. Ci concentreremo sulle Utility catene e sulle Catene generiche per la nostra discussione.
- Utility Catene sono progettate specificamente per estrarre risposte precise da modelli di linguaggio per compiti ben definiti. Ad esempio, prendiamo in considerazione la LLMMathChain. Questa catena di utility consente ai modelli di linguaggio di eseguire calcoli matematici. Accetta una domanda in linguaggio naturale e il modello di linguaggio genera un frammento di codice Python che viene eseguito per produrre la risposta.
- Catene generiche, d’altra parte, servono come blocchi costitutivi per altre catene, ma non possono essere utilizzate autonomamente. Queste catene, come la LLMChain, sono fondamentali e vengono spesso combinate con altre catene per eseguire compiti intricati. Ad esempio, la LLMChain viene frequentemente utilizzata per interrogare un oggetto modello di linguaggio formattando l’input in base a un modello di prompt fornito e passandolo poi al modello di linguaggio.
Implementazione Passo dopo Passo della Progettazione di Prompt con Langchain
Ti guideremo attraverso il processo di implementazione della progettazione di prompt utilizzando Langchain. Prima di procedere, assicurati di aver installato il software e i pacchetti necessari.
Puoi utilizzare strumenti popolari come Docker, Conda, Pip e Poetry per configurare LangChain. I file di installazione pertinenti per ciascun metodo possono essere trovati all’interno del repository LangChain su https://github.com/benman1/generative_ai_with_langchain. Ciò include un Dockerfile per Docker, un requirements.txt per Pip, un pyproject.toml per Poetry e un file langchain_ai.yml per Conda.
Nel nostro articolo useremo Pip, il gestore di pacchetti standard per Python, per facilitare l’installazione e la gestione delle librerie di terze parti. Se non è incluso nella tua distribuzione Python, puoi installare Pip seguendo le istruzioni su https://pip.pypa.io/.
Per installare una libreria con Pip, utilizza il comando pip install nome_libreria.
Tuttavia, Pip non gestisce gli ambienti di sua iniziativa. Per gestire ambienti diversi, utilizziamo lo strumento virtualenv.
Nella prossima sezione, discuteremo l’integrazione dei modelli.
Passo 1: Configurazione di Langchain
Innanzitutto, devi installare il pacchetto Langchain. Stiamo utilizzando il sistema operativo Windows. Esegui il seguente comando nel terminale per installarlo:
pip install langchain
Passo 2: Importazione di Langchain e altri moduli necessari
Successivamente, importa Langchain insieme ad altri moduli necessari. Qui, importiamo anche la libreria transformers, ampiamente utilizzata in compiti di NLP.
<p>import langchain from transformers import AutoModelWithLMHead, AutoTokenizer
Passo 3: Caricamento del Modello Pre-addestrato
Open AI
OpenAI modelli possono essere facilmente interfacciati con la libreria LangChain o la libreria client Python di OpenAI. Notabilmente, OpenAI fornisce una classe di incorporamento per modelli di incorporamento di testo. Due modelli LLM chiave sono GPT-3.5 e GPT-4, che differiscono principalmente nella lunghezza del token. I prezzi per ogni modello possono essere trovati sul sito web di OpenAI. Mentre ci sono modelli più sofisticati come GPT-4-32K che hanno una maggiore accettazione di token, la loro disponibilità tramite API non è sempre garantita.

L’accesso a questi modelli richiede una chiave API di OpenAI. Ciò può essere fatto creando un account sulla piattaforma di OpenAI, configurando le informazioni di fatturazione e generando una nuova chiave segreta.
<p>import os os.environ["OPENAI_API_KEY"] = 'il tuo token openai'</p>
Dopo aver creato con successo la chiave, puoi impostarla come variabile d’ambiente (OPENAI_API_KEY) o passarla come parametro durante l’istanziazione della classe per le chiamate a OpenAI.
Considera uno script LangChain per mostrare l’interazione con i modelli OpenAI:
from langchain.llms import OpenAI llm = OpenAI(model_name="text-davinci-003") # Il LLM prende un prompt come input e produce un completamento prompt = "chi è il presidente degli Stati Uniti d'America?" completamento = llm(prompt)
<p>Il presidente attuale degli Stati Uniti d'America è Joe Biden.</p>
In questo esempio, un agente viene inizializzato per eseguire calcoli. L’agente prende un input, un semplice compito di addizione, lo elabora utilizzando il modello OpenAI fornito e restituisce il risultato.
Hugging
Hugging Face è una libreria di trasformatori Python gratuita, compatibile con PyTorch, TensorFlow e JAX, e include implementazioni di modelli come BERT, T5, ecc.
Hugging Face offre anche Hugging Face Hub, una piattaforma per ospitare repository di codice, modelli di apprendimento automatico, set di dati e applicazioni web.
Per utilizzare Hugging Face come fornitore per i tuoi modelli, avrai bisogno di un account e di chiavi API, che possono essere ottenute dal loro sito web. Il token può essere reso disponibile nell’ambiente come HUGGINGFACEHUB_API_TOKEN.
Considera il seguente snippet Python che utilizza un modello open-source sviluppato da Google (GOOGL ), il modello Flan-T5-XXL:
from langchain.llms import HuggingFaceHub
<p>llm = HuggingFaceHub(model_kwargs={"temperature": 0.5, "max_length": 64}, repo_id="google/flan-t5-xxl")
prompt = "In quale paese si trova Tokyo?"
completamento = llm(prompt)
print(completamento)</p>
Questo script prende una domanda come input e restituisce una risposta, mostrando le capacità di conoscenza e previsione del modello.
Passo 4: Progettazione di Prompt di Base
Per iniziare, genereremo un prompt semplice e vedremo come il modello risponde.
prompt = 'Traduci il seguente testo inglese in francese: "{0}"'
input_testo = 'Ciao, come stai?'
input_ids = tokenizer.encode(prompt.format(input_testo), return_tensors='pt')
<p>generated_ids = model.generate(input_ids, max_length=100, temperature=0.9)
print(tokenizer.decode(generated_ids[0], skip_special_tokens=True))
Nell’esempio di codice sopra, forniamo un prompt per tradurre il testo inglese in francese. Il modello di linguaggio tenta quindi di tradurre il testo fornito in base al prompt.
Passo 5: Progettazione di Prompt Avanzata
Mentre l’approccio sopra funziona, non sfrutta appieno il potere della progettazione di prompt. Miglioriamo questo introducendo strutture di prompt più complesse.
prompt = 'Come traduttore francese altamente qualificato, traduci il seguente testo inglese in francese: "{0}"'
input_testo = 'Ciao, come stai?'
input_ids = tokenizer.encode(prompt.format(input_testo), return_tensors='pt')
<p>generated_ids = model.generate(input_ids, max_length=100, temperature=0.9)
print(tokenizer.decode(generated_ids[0], skip_special_tokens=True))
In questo esempio di codice, modifichiamo il prompt per suggerire che la traduzione è eseguita da un ‘traduttore francese altamente qualificato’. Il cambiamento nel prompt può portare a traduzioni migliorate, poiché il modello ora assume la personalità di un esperto.
Costruzione di un Sistema di Domande e Risposte sulla Letteratura Accademica con Langchain
Costruiremo un sistema di domande e risposte sulla letteratura accademica utilizzando LangChain che possa rispondere a domande sui saggi accademici pubblicati di recente.

Innanzitutto, per configurare il nostro ambiente, installiamo le dipendenze necessarie.
pip install langchain arxiv openai transformers faiss-cpu
Dopo l’installazione, creiamo un nuovo notebook Python e importiamo le librerie necessarie:
from langchain.llms import OpenAI from langchain.chains.qa_with_sources import load_qa_with_sources_chain from langchain.docstore.document import Document import arxiv
Il nucleo del nostro sistema di domande e risposte è la capacità di recuperare saggi accademici rilevanti relativi a un campo specifico, qui consideriamo l’Elaborazione del Linguaggio Naturale (NLP), utilizzando il database accademico arXiv. Per eseguire questo, definiamo una funzione get_arxiv_data(max_results=10). Questa funzione raccoglie le sintesi dei saggi NLP più recenti da arXiv e li incapsula in oggetti Document di LangChain, utilizzando la sintesi come contenuto e l’ID di ingresso univoco come fonte.
Utilizzeremo l’API arXiv per recuperare saggi recenti relativi all’NLP:
<p>def get_arxiv_data(max_results=10):
search = arxiv.Search(
query="NLP",
max_results=max_results,
sort_by=arxiv.SortCriterion.SubmittedDate,
)</p>
documenti = []
<p>for result in search.results():
documenti.append(Document(
page_content=result.summary,
metadata={"source": result.entry_id},
))</p>
return documenti
Questa funzione recupera le sintesi dei saggi NLP più recenti da arXiv e le converte in oggetti Document di LangChain. Stiamo utilizzando la sintesi del saggio e il suo ID di ingresso univoco (URL del saggio) come contenuto e fonte, rispettivamente.
def print_answer(domanda):
print(
chain(
{
"input_documents": fonti,
"question": domanda,
},
return_only_outputs=True,
)["output_text"]
)
Definiamo ora la nostra raccolta di documenti e configuriamo LangChain:
fonti = get_arxiv_data(2) chain = load_qa_with_sources_chain(OpenAI(temperature=0))
Con il nostro sistema di domande e risposte accademiche ora pronto, possiamo testarlo chiedendo una domanda:
print_answer("Quali sono gli ultimi progressi nell'NLP?")
La risposta sarà la risposta alla tua domanda, citando le fonti da cui le informazioni sono state estratte. Ad esempio:
<p>Recenti progressi nell'NLP includono modelli di recupero di informazioni migliorati e un nuovo framework computazionale per la risoluzione di problemi di flusso di potenza ottimale alternato (ACOPF) utilizzando unità di elaborazione grafica (GPU). FONTI: http://arxiv.org/abs/2307.16877v1, http://arxiv.org/abs/2307.16830v1
Puoi facilmente passare a modelli diversi o modificare il sistema in base alle tue esigenze. Ad esempio, qui stiamo passando a GPT-4, che si traduce in una risposta molto più dettagliata e migliorata.
fonti = get_arxiv_data(2) chain = load_qa_with_sources_chain(OpenAI(model_name="gpt-4", temperature=0))
<p>Recenti progressi nel campo del Linguaggio Naturale (NLP) includono lo sviluppo di modelli di recupero di informazioni migliorati per compiti di ricerca di informazioni come la risposta alle domande (QA). Questi modelli possono essere adattati a vari domini di informazione e compiti senza ulteriore formazione. Tuttavia, spesso lottano per attenersi alle conoscenze fornite e possono a volte generare risposte plausibili ma errate o insensate. Un altro progresso è l'introduzione di un framework computazionale per la risoluzione di problemi di flusso di potenza ottimale alternato (ACOPF) utilizzando unità di elaborazione grafica (GPU). Questo approccio utilizza un'astrazione a dati singoli, multi-istruzioni (SIMD) di programmi non lineari (NLP) e impiega un metodo di punto interno con una strategia di rilassamento delle disuguaglianze. Questa strategia consente la fattorizzazione della matrice KKT senza pivoting numerico, che in precedenza ha ostacolato la parallelizzazione dell'algoritmo IPM. FONTI: http://arxiv.org/abs/2307.16877v1, http://arxiv.org/abs/2307.16830v1
Un token in GPT-4 può essere lungo quanto un carattere o quanto una parola. Ad esempio, GPT-4-32K può elaborare fino a 32.000 token in un’unica esecuzione, mentre GPT-4-8K e GPT-3.5-turbo supportano 8.000 e 4.000 token rispettivamente. Tuttavia, è importante notare che ogni interazione con questi modelli ha un costo che è direttamente proporzionale al numero di token elaborati, sia in input che in output.
Nel contesto del nostro sistema di domande e risposte, se un pezzo di letteratura accademica supera il limite di token massimo, il sistema non sarà in grado di elaborarlo nella sua interezza, influenzando così la qualità e la completezza delle risposte. Per superare questo problema, il testo può essere suddiviso in parti più piccole che rispettino il limite di token.
FAISS (Facebook AI Similarity Search) (META ) aiuta a trovare rapidamente i pezzi di testo più rilevanti relativi alla query dell’utente. Crea una rappresentazione vettoriale di ogni pezzo di testo e utilizza questi vettori per identificare e recuperare i pezzi più simili alla rappresentazione vettoriale di una data domanda.
È importante ricordare che, anche con l’uso di strumenti come FAISS, la necessità di dividere il testo in parti più piccole a causa dei limiti di token può a volte portare alla perdita di contesto, influenzando la qualità delle risposte. Pertanto, una gestione e ottimizzazione attente dell’utilizzo dei token sono cruciali quando si lavora con questi grandi modelli di linguaggio.
pip install faiss-cpu langchain CharacterTextSplitter
Dopo aver assicurato che le librerie sopra siano installate, esegui
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores.faiss import FAISS
from langchain.text_splitter import CharacterTextSplitter
documenti = get_arxiv_data(max_results=10) # Ora possiamo utilizzare più dati
pezzi_di_documenti = []
splitter = CharacterTextSplitter(separator=" ", chunk_size=1024, chunk_overlap=0)
for documento in documenti:
for pezzo in splitter.split_text(documento.page_content):
pezzi_di_documenti.append(Document(page_content=pezzo, metadata=documento.metadata))
<p>search_index = FAISS.from_documents(pezzi_di_documenti, OpenAIEmbeddings())</p>
<p>chain = load_qa_with_sources_chain(OpenAI(temperature=0))</p>
<p>def print_answer(domanda):
print(
chain(
{
"input_documents": search_index.similarity_search(domanda, k=4),
"question": domanda,
},
return_only_outputs=True,
)["output_text"]
)
Con il codice completo, ora abbiamo uno strumento potente per interrogare la letteratura accademica più recente nel campo dell’NLP.
Recenti progressi nell'NLP includono l'uso di reti neurali profonde (DNN) per l'analisi automatica del testo e i compiti di NLP come la correzione ortografica, la rilevazione della lingua, l'estrazione di entità, la rilevazione dell'autore, la risposta alle domande e altri compiti. FONTI: http://arxiv.org/abs/2307.10652v1, http://arxiv.org/abs/2307.07002v1, http://arxiv.org/abs/2307.12114v1, http://arxiv.org/abs/2307.16217v1
Conclusione
L’integrazione dei Modelli di Linguaggio di Grande Scala (LLM) nelle applicazioni ha accelerato l’adozione in diversi domini, tra cui la traduzione del linguaggio, l’analisi del sentimento e il recupero di informazioni. La progettazione di prompt è uno strumento potente per massimizzare il potenziale di questi modelli e Langchain è alla guida nella semplificazione di questa complessa attività. La sua interfaccia standardizzata, i modelli di prompt flessibili, l’integrazione robusta del modello e l’uso innovativo di agenti e catene garantiscono risultati ottimali per le prestazioni dei LLM.
Tuttavia, nonostante questi progressi, ci sono alcuni suggerimenti da tenere a mente. Mentre si utilizza Langchain, è essenziale comprendere che la qualità dell’output dipende fortemente dalla formulazione del prompt. Sperimentare con diversi stili e strutture di prompt può portare a risultati migliorati. Inoltre, ricordate che, sebbene Langchain supporti una varietà di modelli di linguaggio, ognuno ha i suoi punti di forza e debolezza. Scegliere il modello giusto per il proprio compito specifico è cruciale. Infine, è importante ricordare che l’uso di questi modelli comporta considerazioni di costo, poiché l’elaborazione dei token influenza direttamente il costo delle interazioni.
Come dimostrato nella guida passo dopo passo, Langchain può alimentare applicazioni robuste, come il sistema di domande e risposte sulla letteratura accademica. Con una comunità di utenti in crescita e una crescente rilevanza nel panorama open-source, Langchain promette di essere uno strumento fondamentale per sfruttare appieno il potenziale dei LLM come GPT-4.
interazioni. Come dimostrato nella guida passo dopo passo, Langchain può alimentare applicazioni robuste, come il sistema di domande e risposte sulla letteratura accademica. Con una comunità di utenti in crescita e una crescente rilevanza nel panorama open-source, Langchain promette di essere uno strumento fondamentale per sfruttare appieno il potenziale dei LLM come GPT-4.














