Pregled sadržaja[Sakriti][Pokazati]
LangChain je vrhunski i robustan alat razvijen da iskoristi snagu Large Language Models (LLM).
Ovi LLM-ovi posjeduju izvanredne sposobnosti i mogu se učinkovito uhvatiti u koštac sa širokim spektrom zadataka. Međutim, važno je napomenuti da njihova snaga leži u njihovoj općoj prirodi, a ne u dubinskoj stručnosti u domeni. Njegova popularnost naglo je porasla od uvođenja GPT-4.
Iako su LLM-ovi izvrsni u rješavanju raznih zadataka, mogli bi se suočiti s ograničenjima kada je u pitanju davanje specifičnih odgovora ili rješavanje zadataka koji zahtijevaju duboko poznavanje područja. Razmotrite, na primjer, korištenje LLM-a za odgovaranje na pitanja ili obavljanje zadataka unutar specijaliziranih područja poput medicine ili prava.
Dok LLM sigurno može odgovoriti na općenite upite o ovim područjima, možda će mu biti teško ponuditi detaljnije ili nijansirane odgovore koji zahtijevaju specijalizirano znanje ili stručnost.
To je zato što se LLM obučavaju na golemim količinama tekstualnih podataka iz različitih izvora, što im omogućuje da nauče obrasce, razumiju kontekst i generiraju koherentne odgovore. Međutim, njihovo osposobljavanje obično ne uključuje stjecanje znanja specifičnog za određeno područje ili specijaliziranog znanja u istoj mjeri kao ljudski stručnjaci u tim područjima.
Stoga, iako LangChain, u kombinaciji s LLM-om, može biti neprocjenjiv alat za širok raspon zadataka, važno je prepoznati da dublja stručnost u domeni može biti potrebna u određenim situacijama. Ljudski stručnjaci sa specijaliziranim znanjem mogu pružiti potrebnu dubinu, nijansirano razumijevanje i uvide specifične za kontekst koji bi mogli biti izvan mogućnosti samih LLM-ova.
Savjetujemo vam da pogledate LangChainove dokumente ili GitHub repozitorij za temeljitije razumijevanje njegovih tipičnih slučajeva upotrebe. Toplo se savjetuje da dobijete širu sliku o ovom paketu.
Kako se to radi?
Da bismo razumjeli svrhu i rad LangChaina, razmotrimo praktični primjer. Svjesni smo da GPT-4 ima impresivno opće znanje i da može pružiti pouzdane odgovore na širok raspon pitanja.
Međutim, što ako želimo određene informacije iz vlastitih podataka, poput osobnog dokumenta, knjige, PDF datoteke ili vlasničke baze podataka?
LangChain nam omogućuje povezivanje a veliki jezični model poput GPT-4 našim vlastitim izvorima podataka. Nadilazi jednostavno lijepljenje isječka teksta u sučelje za chat. Umjesto toga, možemo referencirati cijelu bazu podataka ispunjenu našim podacima.
Nakon što 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 pojedinosti.
Da bismo to postigli, slijedimo pristup cjevovoda koristeći LangChain. Prvo uzimamo dokument koji želimo jezični model referencirati i podijeliti ga na manje dijelove. Ti se dijelovi zatim pohranjuju kao ugradnje, koje su vektorske reprezentacije teksta u vektorskoj bazi podataka.
S ovom postavkom možemo izgraditi aplikacije jezičnog modela koje slijede standardni cjevovod: korisnik postavlja početno pitanje koje se zatim šalje jezičnom modelu. Vektorska reprezentacija pitanja koristi se za izvođenje pretrage sličnosti u vektorskoj bazi podataka, dohvaćajući relevantne dijelove informacija.
Ti se dijelovi zatim šalju natrag u jezični model, omogućujući mu da pruži odgovor ili poduzme željenu radnju.
LangChain olakšava razvoj aplikacija koje su svjesne podataka, budući da možemo referencirati vlastite podatke u vektorskoj pohrani, i autentične, jer mogu poduzimati radnje osim odgovaranja na pitanja. T
otvara mnoštvo praktičnih slučajeva upotrebe, posebno u osobnoj asistenciji, gdje veliki jezični model može rješavati zadatke poput rezerviranja letova, prijenosa novca ili pomoći u stvarima povezanim s porezom.
Osim toga, implikacije za proučavanje i učenje novih predmeta su značajne, budući da jezični model može referencirati cijeli nastavni plan i program i ubrzati proces učenja. Očekuje se da će kodiranje, analiza podataka i znanost o podacima također biti pod velikim utjecajem ovih napredaka.
Jedna od najuzbudljivijih perspektiva je povezivanje velikih jezičnih modela s postojećim podacima tvrtke, kao što su informacije o kupcima ili marketinški podaci. Ova integracija s naprednim API-jima poput Metinog API-ja ili Googleovog API-ja obećava eksponencijalni napredak u analizi podataka i znanosti o podacima.
Kako izraditi web stranicu (demo)
Trenutno je Langchain dostupan kao Python i JavaScript paketi.
Možemo izraditi pokaznu web-aplikaciju koristeći Streamlit, LangChain i OpenAI GPT-3 model za implementaciju koncepta LangChain.
Ali prvo moramo instalirati nekoliko ovisnosti, uključujući Streamlit, LangChain i OpenAI.
Preduvjeti
Protočno osvijetljeno: Popularni Python paket za izradu web aplikacija povezanih s podacima
OpenAI: Potreban je pristup OpenAI GPT-3 jezičnom modelu.
Za instaliranje ovih ovisnosti upotrijebite sljedeće naredbe u cmd-u:
pip install streamlit
pip install langchain
pip install openai
Uvoz paketa
Počinjemo s uvozom potrebnih paketa, kao što su OpenAI, LangChain i Streamlit. Naši lanci jezičnih modela definirani su i izvode 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 tada je postavljena korištenjem Streamlit sintakse. Aplikaciji smo dali naslov “What's TRUE: Using Simple Sequential Chain” i uključili link za markdown na GitHub repozitorij koji je poslužio 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 widgeta
Nadalje, moramo osigurati widget za unos kako bismo našim korisnicima omogućili unos 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?",
)
Gotovo! Lanci su u pogonu!
Koristimo različite lance operacija zajedno s SimpleSequentialChain
odgovoriti na upit korisnika. Lanci se izvode sljedećim redoslijedom kada korisnik odabere "Tell me about it"
Tipka:
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
: što je prvi korak u našem cjevovodu, prima pitanje korisnika kao ulaz i izlaz. Upit korisnika služi kao predložak lanca.- Na temelju izjave povezane s pitanjem,
assumptions_chain
generira popis pretpostavki koristeći rezultate izquestion_chain
kao ulaz. TheLLMChain
iOpenAI
za konstrukciju izjave korišten je model iz LangChaina. Korisnik ima zadatak izraditi popis pretpostavki koje su napravljene kako bi se proizvela izjava pomoću predloška za ovaj lanac. - Na temelju rezultata iz
question_chain
iassumptions_chain
jefact_checker_chain
generira popis tvrdnji u obliku točaka. Zahtjevi su proizvedeni korištenjemOpenAI
model iLLMChain
od LangChaina. Korisnik ima zadatak utvrditi je li svaka tvrdnja točna ili netočna i pružiti opravdanje za one koje jesu. - Korištenje električnih romobila ističe
answer_chain
koristi izlaze izquestion_chain
,assumptions_chain
ifact_checker_chain
kao inpute za stvaranje odgovora na pitanje korisnika korištenjem podataka koje su proizveli raniji lanci. Predložak za ovaj lanac zahtijeva da korisnik odgovori na prvi upit koristeći činjenice koje su stvorene. - Kako bismo pružili ultimativni odgovor na upit korisnika na temelju informacija koje su proizveli raniji lanci, te lance integriramo u cjelokupni lanac. Nakon što su lanci dovršeni, koristimo
st.success()
pokazati korisniku rješenje.
Zaključak
Možemo jednostavno povezati različite akcije jezičnog modela kako bismo stvorili kompliciranije cjevovode pomoću SimpleSequentialChain
modul LangChaina. Za veliki izbor NLP aplikacija, uključujući chatbotove, sustave pitanja i odgovora i alate za prevođenje jezika, ovo može biti od velike pomoći.
Briljantnost LangChaina nalazi se u njegovoj sposobnosti apstrahiranja, što korisniku omogućuje da se koncentrira na trenutnu temu, a ne na specifičnosti jezičnog modeliranja.
LangChain čini proces stvaranja sofisticiranih jezičnih modela lakšim za korisnike nudeći unaprijed obučene modele i izbor predložaka.
Daje vam mogućnost finog podešavanja jezičnih modela pomoću njihovih vlastitih podataka, što olakšava prilagođavanje jezičnih modela. To omogućuje razvoj preciznijih modela specifičnih za domenu koji, za određeni posao, nadmašuju uvježbane modele.
Korištenje električnih romobila ističe SimpleSequentialChain
modul i druge značajke LangChaina čine ga učinkovitim alatom za brzi razvoj i implementaciju sofisticiranih NLP sustava.
Ostavi odgovor