LangChain je vrhunsko in robustno orodje, razvito za izkoriščanje moči velikih jezikovnih modelov (LLM).
Ti LLM-ji imajo izjemne zmogljivosti in se lahko učinkovito spopadejo s širokim naborom nalog. Vendar je pomembno omeniti, da je njihova moč v splošni naravi in ne v poglobljenem strokovnem znanju. Njegova priljubljenost je od uvedbe GPT-4 hitro narasla.
Medtem ko LLM blestijo pri reševanju različnih nalog, se lahko soočajo z omejitvami, ko gre za zagotavljanje specifičnih odgovorov ali reševanje nalog, ki zahtevajo poglobljeno poznavanje področja. Razmislite, na primer, o uporabi LLM za odgovarjanje na vprašanja ali opravljanje nalog na specializiranih področjih, kot sta medicina ali pravo.
Medtem ko lahko LLM zagotovo odgovori na splošna vprašanja o teh področjih, bo morda težko ponudil podrobnejše ali niansirane odgovore, ki zahtevajo posebno znanje ali strokovnost.
To je zato, ker se LLM usposabljajo na ogromnih količinah besedilnih podatkov iz različnih virov, kar jim omogoča učenje vzorcev, razumevanje konteksta in ustvarjanje skladnih odgovorov. Vendar njihovo usposabljanje običajno ne vključuje pridobivanja znanja, specifičnega za področje, ali specializiranega v enakem obsegu kot človeški strokovnjaki na teh področjih.
Čeprav je LangChain v povezavi z LLM lahko neprecenljivo orodje za širok spekter nalog, je pomembno vedeti, da je v določenih situacijah morda še vedno potrebno globoko strokovno znanje. Človeški strokovnjaki s specializiranim znanjem lahko zagotovijo potrebno globino, niansirano razumevanje in vpoglede, specifične za kontekst, ki morda presegajo zmožnosti samih LLM.
Svetujemo vam, da si ogledate LangChainove dokumente oz GitHub repozitorij za bolj temeljito razumevanje njegovih tipičnih primerov uporabe. Priporočljivo je, da si ustvarite večjo sliko tega svežnja.
Kako deluje?
Da bi razumeli namen in delo LangChaina, si oglejmo praktični primer. Zavedamo se, da ima GPT-4 impresivno splošno znanje in lahko zagotovi zanesljive odgovore na številna vprašanja.
Kaj pa, če želimo določene informacije iz lastnih podatkov, kot je osebni dokument, knjiga, datoteka PDF ali lastniška zbirka podatkov?
LangChain nam omogoča povezavo a velik jezikovni model kot GPT-4 do naših lastnih virov podatkov. Presega preprosto lepljenje delčka besedila v vmesnik za klepet. Namesto tega se lahko sklicujemo na celotno bazo podatkov, napolnjeno z lastnimi podatki.
Ko pridobimo želene informacije, nam lahko LangChain pomaga pri izvajanju določenih ukrepov. Lahko mu na primer naročimo, naj pošlje e-pošto z določenimi podrobnostmi.
Da bi to dosegli, uporabljamo cevovodni pristop z uporabo LangChain. Najprej vzamemo dokument, ki ga želimo jezikovni model za referenco in razdelitev na manjše dele. Ti kosi so nato shranjeni kot vdelave, ki so vektorske predstavitve besedila v vektorski bazi podatkov.
S to nastavitvijo lahko zgradimo aplikacije jezikovnega modela, ki sledijo standardnemu cevovodu: uporabnik postavi začetno vprašanje, ki se nato pošlje jezikovnemu modelu. Vektorska predstavitev vprašanja se uporablja za izvajanje iskanja podobnosti v vektorski podatkovni zbirki, pri čemer se pridobijo ustrezni deli informacij.
Ti deli se nato vrnejo v jezikovni model, kar mu omogoči, da zagotovi odgovor ali izvede želeno dejanje.
LangChain olajša razvoj aplikacij, ki se zavedajo podatkov, saj se lahko sklicujemo na lastne podatke v vektorski shrambi, in verodostojne, saj lahko izvajajo dejanja, ki presegajo odgovarjanje na vprašanja. T
odpira številne primere praktične uporabe, zlasti pri osebni asistenci, kjer lahko velik jezikovni model obravnava naloge, kot je rezervacija letov, nakazilo denarja ali pomoč pri zadevah, povezanih z davki.
Poleg tega so posledice za študij in učenje novih predmetov pomembne, saj se lahko jezikovni model sklicuje na celoten učni načrt in pospeši učni proces. Pričakuje se, da bo ta napredek močno vplival tudi na kodiranje, analizo podatkov in podatkovno znanost.
Ena najbolj vznemirljivih možnosti je povezovanje velikih jezikovnih modelov z obstoječimi podatki podjetja, kot so informacije o strankah ali tržni podatki. Ta integracija z naprednimi API-ji, kot sta Metin API ali Googlov API, obljublja eksponenten napredek v podatkovni analitiki in podatkovni znanosti.
Kako zgraditi spletno stran (demo)
Trenutno je Langchain na voljo kot paketa Python in JavaScript.
Ustvarimo lahko predstavitveno spletno aplikacijo, ki uporablja Streamlit, LangChain in model OpenAI GPT-3 za implementacijo koncepta LangChain.
Toda najprej moramo namestiti nekaj odvisnosti, vključno s Streamlitom, LangChain in OpenAI.
Predpogoji
Streamlit: Priljubljen paket Python za ustvarjanje spletnih aplikacij, povezanih s podatkovno znanostjo
OpenAI: Potreben je dostop do jezikovnega modela OpenAI GPT-3.
Če želite namestiti te odvisnosti, uporabite naslednje ukaze v cmd:
pip install streamlit
pip install langchain
pip install openai
Uvozni paketi
Začnemo z uvozom zahtevanih paketov, kot so OpenAI, LangChain in Streamlit. Verige naših jezikovnih modelov so definirane in izvedene z uporabo treh razredov iz LangChaina: LLMChain, SimpleSequentialChain in PromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Osnovna nastavitev
Strukturno osnovo našega projekta smo nato postavili s sintakso Streamlit. Aplikaciji smo dali naslov »What's TRUE: Using Simple Sequential Chain« in vključili povezavo do repozitorija GitHub, ki je služila kot navdih za aplikacijo.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Sprednji pripomočki
Aplikacijo smo nastavili z nekaj ustreznimi informacijami z uporabo preproste sintakse 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")
Če želite dodati sprednje pripomočke
Poleg tega moramo zagotoviti pripomoček za vnos, ki bo našim uporabnikom omogočil vnos vprašanj.
# 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?",
)
Končano! Verige so pripravljene!
Uporabljamo različne verige delovanja skupaj z SimpleSequentialChain
za odgovor na uporabnikovo poizvedbo. Ko uporabnik izbere, se verige izvajajo v naslednjem zaporedju "Tell me about it"
gumb:
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
: ki je prvi korak v našem cevovodu, prejme uporabnikovo vprašanje kot vhod in izhod. Uporabnikova poizvedba služi kot predloga verige.- Na podlagi izjave, povezane z vprašanjem, je
assumptions_chain
ustvari seznam predpostavk s točkami z uporabo rezultatov izquestion_chain
kot vnos. TheLLMChain
inOpenAI
model iz LangChaina je bil uporabljen za sestavo izjave. Uporabnik ima nalogo, da ustvari seznam predpostavk, ki so bile narejene za izdelavo izjave z uporabo predloge za to verigo. - Na podlagi izhodov iz
question_chain
inassumptions_chain
jefact_checker_chain
ustvari seznam trditev v obliki točk. Zahtevki so izdelani z uporaboOpenAI
model inLLMChain
od LangChain. Uporabnik mora ugotoviti, ali je vsaka trditev točna ali nepravilna, in zagotoviti utemeljitev za tiste, ki so. - O
answer_chain
uporablja izhode izquestion_chain
,assumptions_chain
infact_checker_chain
kot vhodne podatke za ustvarjanje odgovora na uporabnikovo vprašanje z uporabo podatkov, ki so jih ustvarile prejšnje verige. Predloga za to verigo zahteva, da uporabnik odgovori na prvo poizvedbo z uporabo dejstev, ki so bila ustvarjena. - Da bi zagotovili končni odgovor na uporabnikovo poizvedbo na podlagi informacij, ki jih ustvarijo prejšnje verige, te verige integriramo v celotno verigo. Ko so verige končane, uporabimo
st.success()
uporabniku pokazati rešitev.
zaključek
Preprosto lahko povežemo dejanja različnih jezikovnih modelov, da ustvarimo bolj zapletene cevovode z uporabo SimpleSequentialChain
modul LangChain. Za široko paleto aplikacij NLP, vključno s chatboti, sistemi vprašanj in odgovorov ter orodji za prevajanje jezikov, je to lahko zelo koristno.
Briljantnost LangChaina je v njegovi zmožnosti abstrahiranja, ki uporabniku omogoča, da se osredotoči na trenutno težavo in ne na specifike jezikovnega modeliranja.
LangChain naredi postopek ustvarjanja prefinjenih jezikovnih modelov uporabniku prijaznejši, saj ponuja vnaprej pripravljene modele in izbiro predlog.
Omogoča vam natančno nastavitev jezikovnih modelov z uporabo njihovih lastnih podatkov, kar olajša prilagajanje jezikovnih modelov. To omogoča razvoj natančnejših, domensko specifičnih modelov, ki za dano delo prekašajo usposobljene modele.
O SimpleSequentialChain
Modul in druge funkcije LangChaina omogočajo učinkovito orodje za hiter razvoj in uvajanje sofisticiranih sistemov NLP.
Pustite Odgovori