LangChain je vrhunski i robustan alat razvijen da iskoristi snagu velikih jezičkih modela (LLM).
Ovi LLM poseduju izvanredne sposobnosti i mogu efikasno da se pozabave širokim spektrom zadataka. Međutim, važno je napomenuti da njihova snaga leži u njihovoj opštoj prirodi, a ne u dubinskoj stručnosti u domenu. Njegova popularnost je brzo rasla od uvođenja GPT-4.
Dok se LLM izvrsno snalaze u rukovanju različitim zadacima, mogu se suočiti s ograničenjima kada je u pitanju davanje specifičnih odgovora ili rješavanje zadataka koji zahtijevaju duboko znanje iz domena. Razmislite, na primjer, o korištenju LLM-a za odgovaranje na pitanja ili obavljanje zadataka u okviru specijalizovanih područja poput medicine ili prava.
Dok LLM svakako može odgovoriti na opća pitanja o ovim oblastima, možda će imati poteškoća da ponudi detaljnije ili nijansirane odgovore koji zahtijevaju specijalizirano znanje ili stručnost.
To je zato što su LLM obučeni za ogromne količine tekstualnih podataka iz različitih izvora, što im omogućava da nauče obrasce, razumiju kontekst i generiraju koherentne odgovore. Međutim, njihova obuka obično ne uključuje sticanje specifičnog ili specijalizovanog znanja u istoj meri kao ljudski stručnjaci u tim oblastima.
Stoga, dok LangChain, u suradnji s LLM-ima, može biti neprocjenjiv alat za širok spektar zadataka, važno je prepoznati da je duboka ekspertiza u domenu i dalje neophodna u određenim situacijama. Ljudski stručnjaci sa specijalizovanim znanjem mogu pružiti potrebnu dubinu, nijansirano razumijevanje i uvide specifične za kontekst koji mogu biti izvan mogućnosti samih LLM.
Savjetujemo vam da pogledate LangChain dokumente ili GitHub spremište za detaljnije razumijevanje njegovih tipičnih slučajeva upotrebe. Preporučuje se da dobijete širu sliku o ovom paketu.
Kako to radi?
Da bismo razumjeli svrhu i rad LangChaina, razmotrimo praktičan primjer. Svjesni smo da GPT-4 ima impresivno opšte znanje i može dati pouzdane odgovore na širok spektar pitanja.
Međutim, što ako želimo određene informacije iz vlastitih podataka, kao što su lični dokument, knjiga, PDF datoteka ili vlasnička baza podataka?
LangChain nam omogućava da povežemo a veliki jezički model poput GPT-4 našim vlastitim izvorima podataka. To ide dalje od jednostavnog lijepljenja isječka teksta u interfejs za ćaskanje. Umjesto toga, možemo referencirati cijelu bazu podataka ispunjenu našim vlastitim podacima.
Kada dobijemo željene informacije, LangChain nam može pomoći u poduzimanju određenih radnji. Na primjer, možemo ga uputiti da pošalje e-poruku koja sadrži određene detalje.
Da bismo to postigli, slijedimo cevovodni pristup koristeći LangChain. Prvo, uzimamo dokument koji želimo jezički model referencirati i podijeliti na manje dijelove. Ovi komadi se zatim pohranjuju kao ugradnje, koje jesu vektorske reprezentacije teksta, u vektorskoj bazi podataka.
Sa ovim podešavanjem, možemo izgraditi aplikacije jezičkog modela koje prate standardni cevovod: korisnik postavlja početno pitanje, koje se zatim šalje jezičkom modelu. Vektorska reprezentacija pitanja se koristi za izvođenje pretraživanja sličnosti u vektorskoj bazi podataka, dohvaćanje relevantnih dijelova informacija.
Ovi delovi se zatim vraćaju u jezički model, omogućavajući mu da pruži odgovor ili preduzme željenu akciju.
LangChain olakšava razvoj aplikacija koje su svjesne podataka, jer možemo referencirati naše vlastite podatke u vektorskoj trgovini, i autentične, jer mogu poduzeti radnje osim odgovaranja na pitanja. T
ovo otvara mnoštvo praktičnih slučajeva upotrebe, posebno u personalnoj asistenciji, gdje veliki jezički model može rješavati zadatke kao što su rezervacija letova, prijenos novca ili pomoć u poreznim pitanjima.
Osim toga, implikacije za proučavanje i učenje novih predmeta su značajne, jer jezički model može referencirati cijeli nastavni plan i program i ubrzati proces učenja. Očekuje se da će kodiranje, analiza podataka i nauka o podacima biti pod velikim uticajem ovih napretka.
Jedna od najuzbudljivijih perspektiva je povezivanje velikih jezičkih modela sa postojećim podacima kompanije, kao što su informacije o klijentima ili marketinški podaci. Ova integracija sa naprednim API-jima kao što su Meta API ili Googleov API obećava eksponencijalni napredak u analitici podataka i nauci o podacima.
Kako napraviti web stranicu (demo)
Trenutno je Langchain dostupan kao Python i JavaScript paketi.
Možemo kreirati demonstracijsku web aplikaciju koristeći Streamlit, LangChain i OpenAI GPT-3 model za implementaciju LangChain koncepta.
Ali prvo, moramo instalirati nekoliko zavisnosti, uključujući Streamlit, LangChain i OpenAI.
Preduslovi
Streamlit: Popularan Python paket za kreiranje web aplikacija za nauku o podacima
OpenAI: Potreban je pristup OpenAI-jevom GPT-3 jezičkom modelu.
Da biste instalirali ove zavisnosti, koristite sljedeće naredbe u cmd-u:
pip install streamlit
pip install langchain
pip install openai
Uvoz paketa
Počinjemo uvozom potrebnih paketa, kao što su OpenAI, LangChain i Streamlit. Naši lanci jezičkih modela su definisani i izvođeni pomoću tri klase iz LangChaina: LLMChain, SimpleSequentialChain i PromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Osnovno podešavanje
Strukturna osnova našeg projekta je tada postavljena koristeći Streamlit sintaksu. Aplikaciji smo dali naslov „Šta je ISTINA: Korišćenje jednostavnog sekvencijalnog lanca“ i uključili vezu za smanjenje vrednosti do GitHub repozitorija koja je poslužila kao inspiracija za aplikaciju.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Front-End Widgeti
Postavili smo aplikaciju s nekoliko relevantnih informacija, koristeći jednostavnu Streamlit sintaksu:
# 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")
Za dodavanje front-end vidžeta
Nadalje, moramo obezbijediti widget za unos koji će našim korisnicima omogućiti da unose bilo kakva pitanja.
# 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?",
)
Sve završeno! Lanci su pokrenuti!
Zajedno zapošljavamo različite lance poslovanja sa SimpleSequentialChain
da odgovori na upit korisnika. Lanci se izvode sljedećim redoslijedom kada korisnik odabere "Tell me about it"
dugme:
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
: koji je prvi korak u našem kanalu, prima pitanje korisnika kao ulaz i izlaz. Upit korisnika služi kao predložak lanca.- Na osnovu izjave povezane s pitanjem,
assumptions_chain
generiše tačku listu pretpostavki koristeći izlaz izquestion_chain
kao ulaz. TheLLMChain
iOpenAI
model iz LangChaina korišten je za konstruiranje izjave. Korisnik ima zadatak da kreira listu pretpostavki koje su napravljene da bi proizveo izjavu koristeći šablon za ovaj lanac. - Na osnovu rezultata iz
question_chain
iassumptions_chain
, ufact_checker_chain
generiše listu tvrdnji u obliku tačaka. Zahtjevi se proizvode korištenjemOpenAI
model iLLMChain
od LangChaina. Korisnik ima zadatak da utvrdi da li je svaka tvrdnja tačna ili netačna i da pruži opravdanje za ona koja jesu. - The
answer_chain
koristi izlaze izquestion_chain
,assumptions_chain
, Ifact_checker_chain
kao inpute za kreiranje odgovora na pitanje korisnika koristeći podatke proizvedene od ranijih lanaca. Predložak za ovaj lanac zahtijeva da korisnik odgovori na prvi upit koristeći činjenice koje su kreirane. - Kako bismo pružili konačan odgovor na upit korisnika na osnovu informacija koje su proizveli raniji lanci, integriramo ove lance u cjelokupni lanac. Nakon što su lanci završeni, koristimo ih
st.success()
da se korisniku pokaže rješenje.
zaključak
Možemo jednostavno spojiti različite akcije jezičkog modela kako bismo kreirali složenije cevovode koristeći SimpleSequentialChain
modul LangChaina. Za širok spektar NLP aplikacija, uključujući chat botove, sisteme pitanja i odgovora i alate za prevođenje jezika, ovo može biti od velike pomoći.
Briljantnost LangChain-a nalazi se u njegovoj sposobnosti da apstraktuje, što omogućava korisniku da se koncentriše na trenutno pitanje, a ne na specifičnosti jezičkog modeliranja.
LangChain čini proces kreiranja sofisticiranih jezičkih modela lakšim za korisnika nudeći unaprijed obučene modele i izbor šablona.
Daje vam mogućnost finog podešavanja jezičkih modela koristeći njihove vlastite podatke, što olakšava prilagođavanje jezičkih modela. Ovo omogućava razvoj preciznijih, domenski specifičnih modela koji, za dati posao, nadmašuju obučene modele.
The SimpleSequentialChain
modul i druge karakteristike LangChaina čine ga efikasnim alatom za brzi razvoj i primenu sofisticiranih NLP sistema.
Ostavite odgovor