LangChain amûrek pêşkeftî û bihêz e ku ji bo karanîna hêza Modelên Zimanên Mezin (LLM) hatî pêşve xistin.
Van LLM xwedan kapasîteyên berbiçav in û dikarin bi rengek berfereh peywiran bi bandor bikin. Lêbelê, girîng e ku meriv bala xwe bide ku hêza wan di cewhera wan a gelemperî de ne ji pisporiya qada kûr de ye. Popularîteya wê ji danasîna GPT-4 bi lez zêde bûye.
Dema ku LLM di birêvebirina peywirên cihêreng de jêhatî dibin, dibe ku ew bi tixûban re rû bi rû bimînin dema ku ew tê ser peydakirina bersivên taybetî an mijûlkirina peywirên ku hewceyê zanîna domaina kûr hewce dike. Mînakî, binihêrin ku LLM bikar bînin da ku bersiva pirsan bidin an peywiran di nav qadên pispor ên mîna derman an qanûn de bikin.
Digel ku LLM bê guman dikare bersivê bide lêpirsînên giştî yên di derbarê van qadan de, dibe ku ew têbikoşe ku bersivên hûrgulî an hûrgulî pêşkêşî bike ku hewceyê zanîn an pisporiya pispor hewce dike.
Ev ji ber ku LLM li ser gelek daneyên nivîsê yên ji çavkaniyên cihêreng têne perwerde kirin, rê dide wan ku fêrî nimûneyan bibin, çarçovê fam bikin û bersivên hevgirtî biafirînin. Lêbelê, perwerdehiya wan bi gelemperî bi destxistina zanyariya domain-taybet an pisporî bi heman astê pisporên mirovî di wan waran de nagire.
Ji ber vê yekê, dema ku LangChain, digel LLM-an, dikare ji bo cûrbecûr peywiran bibe amûrek nirxdar, girîng e ku meriv zanibe ku pisporiya domaina kûr hîn jî di hin rewşan de pêdivî ye. Pisporên mirovî yên xwedan zanîna pispor dikarin kûrahiya pêwîst, têgihîştina nuwaze, û têgihiştinên taybetî yên çarçovê peyda bikin ku dibe ku tenê ji kapasîteyên LLM-an wêdetir bin.
Em ê şîret bikin ku li belgeyên LangChain an GitHub depo ji bo têgihiştinek hûrtir a dozên karanîna wê yên tîpîk. Bi tundî tê pêşniyar kirin ku hûn wêneyek mezin a vê pakêtê bistînin.
Meriv awa Kar dike?
Ji bo ku armanc û xebata LangChain fam bikin, em mînakek pratîkî bifikirin. Em dizanin ku GPT-4 xwedan zanîna gelemperî ya berbiçav e û dikare bersivên pêbawer ji gelek pirsan re peyda bike.
Lêbelê, heke em agahdariya taybetî ji daneyên xwe dixwazin, wekî belgeyek kesane, pirtûk, pelê PDF, an databasa xwedan?
LangChain destûrê dide me ku em a modela zimanê mezin mîna GPT-4 ji çavkaniyên daneyên me re. Ew ji tenê xistina perçeyek nivîsê di navgînek danûstendinê de wêdetir e. Di şûna wê de, em dikarin hemî databasek ku bi daneyên xwe tije tije referans bikin.
Dema ku em agahdariya xwestinê bistînin, LangChain dikare di pêkanîna çalakiyên taybetî de alîkariya me bike. Mînakî, em dikarin wê rê bidin ku e-nameyek ku hin hûrgulî tê de bişîne.
Ji bo ku em bigihîjin vê yekê, em bi karanîna LangChain nêzîkatiyek boriyê dişopînin. Pêşîn, em belgeya ku em dixwazin digirin modela ziman referans bikin û wê li perçeyên piçûktir parve bikin. Dûv re van perçeyan wekî embeddings têne hilanîn, ku ew in nûneratiyên vector yên nivîsê, di Database Vector.
Bi vê sazkirinê, em dikarin serîlêdanên modela zimanî yên ku li gorî rêzek standard dişopînin ava bikin: bikarhênerek pirsek destpêkê dipirse, ku paşê ji modela zimên re tê şandin. Nûneratiya vektorê ya pirsê ji bo pêkanîna lêgerînek wekheviyê di Daneya Vektorê de tê bikar anîn, ku perçeyên têkildar ên agahdariyê vedigire.
Dûv re van perçeyan li modela ziman vedigerin, ku ew dikare bersivek peyda bike an çalakiya xwestî bike.
LangChain pêşkeftina serîlêdanên ku ji daneyê haydar in hêsan dike, ji ber ku em dikarin daneyên xwe di firotgehek vektorî de referans bikin, û otantîk, ji ber ku ew dikarin ji bersiva pirsan wêdetir çalakiyan bikin. T
wî gelek dozên karanîna pratîkî vedike, nemaze di arîkariya kesane de, ku modelek zimanek mezin dikare karên mîna veqetandina balafiran, veguheztina drav, an jî arîkariya bi mijarên girêdayî bacê re bike.
Wekî din, encamên ji bo xwendin û fêrbûna mijarên nû girîng in, ji ber ku modelek zimanî dikare bi tevahî bernameya xwendinê referans bike û pêvajoya fêrbûnê bilez bike. Kodkirin, analîzkirina daneyan, û zanistiya daneyê jî tê çaverê kirin ku ji van pêşkeftinan pir bandor bibin.
Yek ji hêviyên herî balkêş girêdana modelên zimanên mezin bi daneyên pargîdaniya heyî re ye, wekî agahdariya xerîdar an daneyên kirrûbirrê. Ev yekbûn bi API-yên pêşkeftî yên mîna API-ya Meta an API-ya Google-ê re di analîzên daneyê û zanistiya daneyê de pêşkeftina berbiçav soz dide.
Meriv çawa Malperek (Demo) ava dike
Heya nuha, Langchain wekî Pakêtên Python û JavaScript heye.
Em dikarin xwenîşandanek Web App-ê biafirînin ku Streamlit, LangChain, û modela OpenAI GPT-3 bikar tîne da ku têgeha LangChain bicîh bîne.
Lê pêşî, divê em çend pêwendiyan saz bikin, di nav de Streamlit, LangChain, û OpenAI.
Pêşniyarên pêşîn
Streamlit: Pakêtek Python-a populer a ji bo afirandina serîlêdanên malperê yên têkildarî zanistiya daneyê
OpenAI: Gihîştina modela zimanê OpenAI-yê GPT-3 hewce ye.
Ji bo sazkirina van girêdanan, emrên jêrîn di cmd de bikar bînin:
pip install streamlit
pip install langchain
pip install openai
Pakêtên Import
Em bi hinardekirina pakêtên pêwîst, wek OpenAI, LangChain, û Streamlit dest pê dikin. Zincên modela zimanê me bi karanîna sê çînên ji LangChain têne destnîşankirin û darve kirin: LLMChain, SimpleSequentialChain, û PromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Sazkirina Bingehîn
Bingeha strukturel a projeya me wê hingê bi karanîna hevoksaziya Streamlit hate danîn. Me sernavê sepanê da "Çi RAST e: Bikaranîna Zincîra Rêzdar a Hêsan" û girêdanek nîşankirinê ya depoya GitHub ya ku wekî îlhama sepanê kar dikir vekir.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Widgetên Pêş-End
Me serîlêdanê bi çend agahdariya têkildar saz kir, bi karanîna hevoksaziya Streamlit hêsan:
# 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")
Ji bo zêdekirina widgetên pêş-end
Zêdetir, pêdivî ye ku em widgetek têketinê peyda bikin da ku bihêle bikarhênerên me bikevin her pirsan.
# 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?",
)
Hemû kirin! Zincîr li ber xwe didin!
Em bi hev re zincîreyên cûda yên operasyonan bikar tînin SimpleSequentialChain
ji bo bersivdana pirsa bikarhêner. Dema ku bikarhêner bijarte zincîre di rêza jêrîn de têne çêkirin "Tell me about it"
pişkov:
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
: ku gava yekem di xeta me de ye, pirsa bikarhêner wekî têketin û derketinê distîne. Pirsa bikarhêner wekî şablonê zincîreyê kar dike.- Li ser bingeha daxuyaniyeke ku bi pirsê ve girêdayî ye
assumptions_chain
lîsteyek xala xalî ya texmînan bi karanîna hilbera ji ya diafirînequestion_chain
wek input. EwLLMChain
ûOpenAI
modela ji LangChain ji bo avakirina daxuyaniyê hate bikar anîn. Bikarhêner bi afirandina navnîşek texmînên ku hatine çêkirin ji bo ku bi karanîna şablonê ji bo vê zincîrê ve hatî çêkirin, were peywirdar kirin. - Li ser bingeha encamên ji
question_chain
ûassumptions_chain
, jifact_checker_chain
di forma xalên guleyan de navnîşek îdîayan çêdike. Daxuyan bi karanîna ve têne hilberandinOpenAI
model ûLLMChain
ji LangChain. Bikarhêner peywirdar e ku diyar bike ka her îdîa rast an nerast e û ji bo yên ku rastdar in peyda dike. - Ew
answer_chain
derencan ji ya bi kar tînequestion_chain
,assumptions_chain
, ûfact_checker_chain
wekî danûstendinên ku bi karanîna daneyên ku ji hêla zincîreyên berê ve hatî hilberandin bersivek ji pirsa bikarhêner re çêbikin. Şablon ji bo vê zincîrê daxwaz dike ku bikarhêner bi karanîna rastiyên ku hatine afirandin bersivê bide pirsa yekem. - Ji bo ku li ser bingeha agahdariya ku ji hêla zincîreyên berê ve hatî hilberandin bersiva dawîn li ser lêpirsîna bikarhêner peyda bike, em van zincîreyan di zincîra giştî de yek dikin. Piştî ku zincîran qediyan, em bikar tînin
st.success()
da ku bikarhêner çareseriyê nîşan bide.
Xelasî
Em dikarin bi tenê tevgerên modela zimanên cihêreng bi zincîre bikin da ku bi karanîna boriyên tevlihevtir biafirînin SimpleSequentialChain
module LangChain. Ji bo cûrbecûr serîlêdanên NLP, tevî chatbots, pergalên pirs-û-bersiv, û amûrên wergerandina zimanî, ev dibe ku pir alîkar be.
Zelaliya LangChain di kapasîteya wê ya razberkirinê de tê dîtin, ku bikarhêner bikar tîne ku ji bilî taybetmendiyên modela zimanî li ser pirsgirêka heyî hûr bibe.
LangChain bi pêşkêşkirina modelên pêş-perwerdekirî û hilbijarkek şablonan, pêvajoya afirandina modelên zimanên sofîstîke hêsantir dike.
Ew vebijarkê dide we ku hûn modelên zimanî bi karanîna daneyên xwe baş rast bikin, bi vî rengî merivkirina modelên zimên hêsan dike. Ev yek rê dide pêşdebirina modelên birêkûpêktir, yên domain-taybet ên ku, ji bo karekî diyarkirî, ji modelên perwerdekirî derdixin.
Ew SimpleSequentialChain
modul û taybetmendiyên din ên LangChain wê ji bo pêşdebirin û bicîhkirina pergalên NLP-ya sofîstîke amûrek bi bandor dike.
Leave a Reply