LangChain este un instrument de ultimă oră și robust, dezvoltat pentru a valorifica puterea modelelor de limbaj mari (LLM).
Aceste LLM posedă capacități remarcabile și pot aborda eficient o gamă largă de sarcini. Cu toate acestea, este important să rețineți că puterea lor constă în natura lor generală, mai degrabă decât în expertiza în domeniu. Popularitatea sa a crescut rapid de la introducerea GPT-4.
În timp ce LLM-urile excelează în gestionarea diferitelor sarcini, s-ar putea confrunta cu limitări atunci când vine vorba de a oferi răspunsuri specifice sau de a aborda sarcini care necesită cunoștințe profunde de domeniu. Luați în considerare, de exemplu, utilizarea unui LLM pentru a răspunde la întrebări sau pentru a îndeplini sarcini în domenii specializate precum medicina sau dreptul.
Deși LLM poate răspunde cu siguranță întrebărilor generale despre aceste domenii, poate avea dificultăți să ofere răspunsuri mai detaliate sau mai nuanțate care necesită cunoștințe sau expertiză specializate.
Acest lucru se datorează faptului că LLM-urile sunt instruite pe cantități mari de date text din diverse surse, permițându-le să învețe tipare, să înțeleagă contextul și să genereze răspunsuri coerente. Cu toate acestea, pregătirea lor nu implică de obicei dobândirea de cunoștințe specifice domeniului sau de specialitate în aceeași măsură ca experții umani în acele domenii.
Prin urmare, în timp ce LangChain, împreună cu LLMs, poate fi un instrument de neprețuit pentru o gamă largă de sarcini, este important să recunoaștem că expertiza în domeniu poate fi totuși necesară în anumite situații. Experții umani cu cunoștințe de specialitate pot oferi profunzimea necesară, înțelegerea nuanțată și perspectivele specifice contextului, care ar putea depăși capacitățile numai LLM-urilor.
Vă sfătuim să vă uitați la documentele LangChain sau GitHub depozit pentru o înțelegere mai aprofundată a cazurilor sale tipice de utilizare. Este recomandat să obțineți o imagine mai mare a acestui pachet.
Cum functioneaza?
Pentru a înțelege scopul și activitatea LangChain, să luăm în considerare un exemplu practic. Suntem conștienți de faptul că GPT-4 are cunoștințe generale impresionante și poate oferi răspunsuri de încredere la o gamă largă de întrebări.
Totuși, ce se întâmplă dacă dorim informații specifice din propriile noastre date, cum ar fi un document personal, o carte, un fișier PDF sau o bază de date proprietară?
LangChain ne permite să conectăm un model de limbaj mare cum ar fi GPT-4 la propriile noastre surse de date. Depășește simpla lipire a unui fragment de text într-o interfață de chat. În schimb, putem face referire la o întreagă bază de date plină cu propriile noastre date.
Odată ce obținem informațiile dorite, LangChain ne poate ajuta să luăm acțiuni specifice. De exemplu, îi putem instrui să trimită un e-mail care să conțină anumite detalii.
Pentru a realiza acest lucru, vom urma o abordare pipeline folosind LangChain. În primul rând, luăm documentul pe care îl dorim model de limbaj pentru a face referire și a-l împărți în bucăți mai mici. Aceste bucăți sunt apoi stocate ca înglobări, care sunt reprezentări vectoriale ale textului, într-o bază de date vectorială.
Cu această setare, putem construi aplicații de model de limbă care urmează o conductă standard: un utilizator pune o întrebare inițială, care este apoi trimisă modelului de limbă. Reprezentarea vectorială a întrebării este utilizată pentru a efectua o căutare de similaritate în baza de date vectorială, regăsind fragmentele relevante de informații.
Aceste fragmente sunt apoi transmise modelului de limbă, permițându-i acestuia să ofere un răspuns sau să ia acțiunea dorită.
LangChain facilitează dezvoltarea de aplicații care sunt conștiente de date, deoarece ne putem referi la propriile date într-un magazin de vectori și autentice, deoarece pot întreprinde acțiuni dincolo de răspunsul la întrebări. T
Acesta deschide o multitudine de cazuri practice de utilizare, în special în asistența personală, unde un model lingvistic mare poate gestiona sarcini precum rezervarea zborurilor, transferul de bani sau asistența în chestiuni legate de taxe.
În plus, implicațiile pentru studiul și învățarea de noi discipline sunt semnificative, deoarece un model de limbă poate face referire la o întreagă programă și poate accelera procesul de învățare. Codarea, analiza datelor și știința datelor sunt, de asemenea, de așteptat să fie foarte influențate de aceste progrese.
Una dintre cele mai interesante perspective este conectarea modelelor lingvistice mari la datele companiei existente, cum ar fi informațiile despre clienți sau datele de marketing. Această integrare cu API-uri avansate precum API-ul Meta sau API-ul Google promite progrese exponențiale în analiza datelor și știința datelor.
Cum să construiți o pagină web (demo)
În prezent, Langchain este disponibil ca pachete Python și JavaScript.
Putem crea o aplicație web demonstrativă utilizând Streamlit, LangChain și modelul OpenAI GPT-3 pentru a implementa conceptul LangChain.
Dar mai întâi, trebuie să instalăm câteva dependențe, inclusiv Streamlit, LangChain și OpenAI.
Pre-rechizite
Streamlit: Un pachet popular Python pentru crearea de aplicații web legate de știința datelor
OpenAI: Este necesar accesul la modelul de limbă GPT-3 al OpenAI.
Pentru a instala aceste dependențe, utilizați următoarele comenzi în cmd:
pip install streamlit
pip install langchain
pip install openai
Import pachete
Începem prin a importa pachetele necesare, cum ar fi OpenAI, LangChain și Streamlit. Lanțurile noastre de modele de limbaj sunt definite și executate folosind trei clase de la LangChain: LLMChain, SimpleSequentialChain și PromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Configurare de bază
Baza structurală a proiectului nostru a fost apoi creată folosind sintaxa Streamlit. Am dat aplicației titlul „Ce este adevărat: Utilizarea unui lanț secvențial simplu” și am inclus un link de reducere la depozitul GitHub care a servit drept inspirație pentru aplicație.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Widgeturi front-end
Am configurat aplicația cu puține informații relevante, folosind sintaxa simplă Streamlit:
# If an API key has been provided, create an OpenAI language model instance
if API:
llm = OpenAI(temperature=0.7, openai_api_key=API)
else:
# If an API key hasn't been provided, display a warning message
st.warning("Enter your OPENAI API-KEY. Get your OpenAI API key from [here](https://platform.openai.com/account/api-keys).\n")
Pentru a adăuga widget-uri front-end
În plus, trebuie să oferim un widget de intrare pentru a permite utilizatorilor noștri să introducă orice întrebări.
# Add a text input box for the user's question
user_question = st.text_input(
"Enter Your Question : ",
placeholder = "Cyanobacteria can perform photosynthetsis , are they considered as plants?",
)
Totul este gata! Lanțurile sunt în funcțiune!
Angajăm diverse lanțuri de operațiuni împreună cu SimpleSequentialChain
pentru a răspunde la întrebarea utilizatorului. Lanțurile sunt efectuate în următoarea secvență când utilizatorul selectează "Tell me about it"
Butonul:
if st.button("Tell me about it", type="primary"):
# Chain 1: Generating a rephrased version of the user's question
template = """{question}\n\n"""
prompt_template = PromptTemplate(input_variables=["question"], template=template)
question_chain = LLMChain(llm=llm, prompt=prompt_template)
# Chain 2: Generating assumptions made in the statement
template = """Here is a statement:
{statement}
Make a bullet point list of the assumptions you made when producing the above statement.\n\n"""
prompt_template = PromptTemplate(input_variables=["statement"], template=template)
assumptions_chain = LLMChain(llm=llm, prompt=prompt_template)
assumptions_chain_seq = SimpleSequentialChain(
chains=[question_chain, assumptions_chain], verbose=True
)
# Chain 3: Fact checking the assumptions
template = """Here is a bullet point list of assertions:
{assertions}
For each assertion, determine whether it is true or false. If it is false, explain why.\n\n"""
prompt_template = PromptTemplate(input_variables=["assertions"], template=template)
fact_checker_chain = LLMChain(llm=llm, prompt=prompt_template)
fact_checker_chain_seq = SimpleSequentialChain(
chains=[question_chain, assumptions_chain, fact_checker_chain], verbose=True
)
# Final Chain: Generating the final answer to the user's question based on the facts and assumptions
template = """In light of the above facts, how would you answer the question '{}'""".format(
user_question
)
template = """{facts}\n""" + template
prompt_template = PromptTemplate(input_variables=["facts"], template=template)
answer_chain = LLMChain(llm=llm, prompt=prompt_template)
overall_chain = SimpleSequentialChain(
chains=[question_chain, assumptions_chain, fact_checker_chain, answer_chain],
verbose=True,
)
# Running all the chains on the user's question and displaying the final answer
st.success(overall_chain.run(user_question))
question_chain
: care este primul pas în conducta noastră, primește întrebarea utilizatorului ca intrare și ieșire. Interogarea utilizatorului servește ca șablon al lanțului.- Pe baza unei afirmații legate de întrebare, the
assumptions_chain
generează o listă cu marcatori de ipoteze folosind rezultatul de laquestion_chain
ca intrare. TheLLMChain
șiOpenAI
modelul de la LangChain a fost folosit pentru a construi declarația. Utilizatorul are sarcina de a crea o listă a ipotezelor care au fost făcute pentru a produce declarația folosind șablonul pentru acest lanț. - Pe baza rezultatelor de la
question_chain
șiassumptions_chain
,fact_checker_chain
generează o listă de aserțiuni sub formă de puncte. Declarațiile sunt produse folosindOpenAI
model șiLLMChain
de la LangChain. Utilizatorul are sarcina de a determina dacă fiecare afirmație este corectă sau incorectă și de a oferi o justificare pentru cele care sunt. -
answer_chain
folosește ieșirile de laquestion_chain
,assumptions_chain
, șifact_checker_chain
ca intrări pentru a crea un răspuns la întrebarea utilizatorului folosind datele produse de lanțurile anterioare. Șablonul pentru acest lanț solicită ca utilizatorul să răspundă la prima interogare folosind faptele care au fost create. - Pentru a oferi răspunsul final la întrebarea utilizatorului pe baza informațiilor produse de lanțurile anterioare, integrăm aceste lanțuri în lanțul general. După ce lanțurile sunt finalizate, folosim
st.success()
pentru a arăta utilizatorului soluția.
Concluzie
Putem pur și simplu să înlănțuim diferite acțiuni de model de limbaj pentru a crea conducte mai complicate utilizând SimpleSequentialChain
modulul LangChain. Pentru o mare varietate de aplicații NLP, inclusiv chatbot, sisteme de întrebări și răspunsuri și instrumente de traducere a limbii, acest lucru poate fi destul de util.
Stralucirea LangChain se găsește în capacitatea sa de a abstractiza, ceea ce permite utilizatorului să se concentreze mai degrabă asupra problemei curente decât asupra specificului modelării limbajului.
LangChain face procesul de creare a modelelor lingvistice sofisticate mai ușor de utilizat, oferind modele pre-instruite și o selecție de șabloane.
Vă oferă opțiunea de a ajusta modelele de limbă folosind propriile date, simplificând personalizarea modelelor de limbă. Acest lucru permite dezvoltarea unor modele mai precise, specifice domeniului, care, pentru un anumit loc de muncă, depășesc modelele instruite.
SimpleSequentialChain
Modul și alte caracteristici ale LangChain îl fac un instrument eficient pentru dezvoltarea și implementarea rapidă a sistemelor NLP sofisticate.
Lasă un comentariu