LangChain-ը գերժամանակակից և ամուր գործիք է, որը մշակվել է Լեզուների մեծ մոդելների (LLMs) հզորությունն օգտագործելու համար:
Այս LLM-ներն ունեն ուշագրավ հնարավորություններ և կարող են արդյունավետորեն լուծել առաջադրանքների լայն շրջանակ: Այնուամենայնիվ, կարևոր է նշել, որ նրանց ուժը կայանում է նրանց ընդհանուր բնույթի մեջ, այլ ոչ թե տիրույթի խորը փորձաքննության մեջ: Նրա ժողովրդականությունը արագորեն աճել է GPT-4-ի ներդրումից հետո:
Թեև LLM-ները գերազանցում են տարբեր առաջադրանքները, նրանք կարող են բախվել սահմանափակումների, երբ խոսքը վերաբերում է կոնկրետ պատասխաններ տրամադրելու կամ խնդիրների լուծմանը, որոնք պահանջում են տիրույթի խորը գիտելիքներ: Մտածեք, օրինակ, LLM-ի օգտագործումը՝ հարցերին պատասխանելու կամ առաջադրանքներ կատարելու համար մասնագիտացված ոլորտներում, ինչպիսիք են բժշկությունը կամ իրավունքը:
Թեև LLM-ն, անշուշտ, կարող է պատասխանել այս ոլորտների վերաբերյալ ընդհանուր հարցումներին, այն կարող է դժվարությամբ առաջարկել ավելի մանրամասն կամ նրբերանգ պատասխաններ, որոնք պահանջում են մասնագիտացված գիտելիքներ կամ փորձաքննություն:
Դա պայմանավորված է նրանով, որ LLM-ները վերապատրաստվում են տարբեր աղբյուրներից ստացված հսկայական քանակությամբ տեքստային տվյալների վրա, ինչը նրանց հնարավորություն է տալիս սովորել օրինաչափություններ, հասկանալ համատեքստը և առաջացնել համահունչ պատասխաններ: Այնուամենայնիվ, նրանց ուսուցումը սովորաբար չի ներառում տիրույթին հատուկ կամ մասնագիտացված գիտելիքների ձեռքբերում նույն չափով, որքան այդ ոլորտների մարդկային փորձագետները:
Հետևաբար, մինչ LangChain-ը, LLM-ների հետ համատեղ, կարող է անգնահատելի գործիք լինել առաջադրանքների լայն շրջանակի համար, կարևոր է գիտակցել, որ որոշակի իրավիճակներում դեռևս անհրաժեշտ է խորը տիրույթի փորձաքննություն: Մասնագիտացված գիտելիքներով մարդկային փորձագետները կարող են տրամադրել անհրաժեշտ խորություն, նրբերանգ ըմբռնում և համատեքստին հատուկ պատկերացումներ, որոնք կարող են լինել միայն LLM-ների հնարավորություններից դուրս:
Խորհուրդ կտանք նայել LangChain-ի փաստաթղթերը կամ GitHub պահեստ՝ իր բնորոշ օգտագործման դեպքերի ավելի մանրակրկիտ ըմբռնման համար: Խստորեն խորհուրդ է տրվում ավելի մեծ պատկերացում կազմել այս փաթեթի մասին:
Ինչպես է դա աշխատում?
LangChain-ի նպատակն ու աշխատանքը հասկանալու համար դիտարկենք գործնական օրինակ։ Մենք տեղյակ ենք, որ GPT-4-ն ունի տպավորիչ ընդհանուր գիտելիքներ և կարող է հուսալի պատասխաններ տալ հարցերի լայն շրջանակին:
Այնուամենայնիվ, ի՞նչ անել, եթե մենք ուզում ենք կոնկրետ տեղեկատվություն մեր սեփական տվյալներից, ինչպիսիք են անձնական փաստաթուղթը, գիրքը, PDF ֆայլը կամ սեփականության տվյալների բազան:
LangChain-ը մեզ թույլ է տալիս միացնել ա մեծ լեզվի մոդել ինչպես GPT-4-ը մեր սեփական տվյալների աղբյուրներին: Այն դուրս է գալիս պարզապես տեքստի մի հատված չաթի ինտերֆեյսում տեղադրելուց: Փոխարենը, մենք կարող ենք հղում կատարել մի ամբողջ տվյալների բազայի, որը լցված է մեր սեփական տվյալներով:
Երբ մենք ստանում ենք ցանկալի տեղեկատվությունը, LangChain-ը կարող է մեզ օգնել կոնկրետ գործողություններ ձեռնարկելիս: Օրինակ, մենք կարող ենք հրահանգել նրան ուղարկել որոշակի մանրամասներ պարունակող էլ.
Դրան հասնելու համար մենք հետևում ենք խողովակաշարային մոտեցումին՝ օգտագործելով LangChain: Նախ վերցնում ենք այն փաստաթուղթը, որը ցանկանում ենք լեզվի մոդել հղում կատարել և բաժանել այն ավելի փոքր կտորների: Այդ կտորներն այնուհետև պահվում են որպես ներդիրներ, որոնք են Տեքստի վեկտորային ներկայացումներ՝ վեկտորային տվյալների բազայում.
Այս կարգավորումով մենք կարող ենք ստեղծել լեզվի մոդելային հավելվածներ, որոնք հետևում են ստանդարտ խողովակաշարին. օգտվողը տալիս է նախնական հարց, որն այնուհետև ուղարկվում է լեզվի մոդելին: Հարցի վեկտորային ներկայացումն օգտագործվում է վեկտորային տվյալների բազայում նմանության որոնում կատարելու համար՝ գտնելով տեղեկատվության համապատասխան կտորները:
Այս կտորները այնուհետև վերադարձվում են լեզվի մոդելին՝ հնարավորություն տալով նրան տալ պատասխան կամ կատարել ցանկալի գործողություն:
LangChain-ը հեշտացնում է այնպիսի հավելվածների մշակումը, որոնք տեղյակ են տվյալներին, քանի որ մենք կարող ենք վկայակոչել մեր սեփական տվյալները վեկտորային խանութում և վավերական, քանի որ նրանք կարող են գործողություններ ձեռնարկել՝ բացի հարցերին պատասխանելուց: Տ
նա բացում է բազմաթիվ գործնական կիրառման դեպքեր, հատկապես անձնական աջակցության դեպքում, որտեղ մեծ լեզվական մոդելը կարող է կարգավորել այնպիսի խնդիրներ, ինչպիսիք են թռիչքների ամրագրումը, գումար փոխանցելը կամ հարկերի հետ կապված հարցերում օգնությունը:
Բացի այդ, նոր առարկաներ ուսումնասիրելու և սովորելու հետևանքները նշանակալի են, քանի որ լեզվական մոդելը կարող է հղում կատարել մի ամբողջ ծրագրին և արագացնել ուսուցման գործընթացը: Ակնկալվում է, որ կոդավորումը, տվյալների վերլուծությունը և տվյալների գիտությունը նույնպես մեծ ազդեցություն կունենան այս առաջընթացներից:
Ամենահետաքրքիր հեռանկարներից մեկը խոշոր լեզուների մոդելների միացումն է գոյություն ունեցող ընկերության տվյալներին, ինչպիսիք են հաճախորդների տեղեկատվությունը կամ մարքեթինգային տվյալները: Այս ինտեգրումը առաջադեմ API-ների հետ, ինչպիսիք են Meta-ի API-ն կամ Google-ի API-ն, խոստանում է էքսպոնենտալ առաջընթաց տվյալների վերլուծության և տվյալների գիտության ոլորտում:
Ինչպես կառուցել վեբ էջ (դեմո)
Ներկայումս Langchain-ը հասանելի է որպես Python և JavaScript փաթեթներ:
Մենք կարող ենք ստեղծել ցուցադրական վեբ հավելված՝ օգտագործելով Streamlit, LangChain և OpenAI GPT-3 մոդելը՝ LangChain հայեցակարգն իրականացնելու համար:
Բայց նախ, մենք պետք է տեղադրենք մի քանի կախվածություն, ներառյալ Streamlit-ը, LangChain-ը և OpenAI-ը:
Նախապայմանները
Streamlit: Հայտնի Python փաթեթ՝ տվյալների գիտության հետ կապված վեբ հավելվածներ ստեղծելու համար
OpenAI: Անհրաժեշտ է OpenAI-ի GPT-3 լեզվի մոդելի հասանելիություն:
Այս կախվածությունները տեղադրելու համար օգտագործեք հետևյալ հրամանները cmd-ում.
pip install streamlit
pip install langchain
pip install openai
Ներմուծման փաթեթներ
Մենք սկսում ենք ներմուծելով անհրաժեշտ փաթեթները, ինչպիսիք են OpenAI-ը, LangChain-ը և Streamlit-ը: Մեր լեզվի մոդելային շղթաները սահմանվում և գործարկվում են LangChain-ի երեք դասերի միջոցով՝ LLMChain, SimpleSequentialChain և PromptTemplate:
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Հիմնական տեղադրում
Այնուհետև մեր նախագծի կառուցվածքային հիմքը դրվեց Streamlit շարահյուսության միջոցով: Մենք հավելվածին տվել ենք «Ինչն է ճշմարիտ. Օգտագործելով պարզ հաջորդական շղթա» վերնագիրը և ներառել ենք GitHub պահեստի նշման հղումը, որը ծառայել է որպես հավելվածի ոգեշնչում:
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Front-End վիդջեթներ
Մենք ստեղծեցինք հավելվածը մի քանի համապատասխան տեղեկություններով՝ օգտագործելով պարզ 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")
Առջևի վիջեթներ ավելացնելու համար
Ավելին, մենք պետք է տրամադրենք մուտքագրման վիդջեթ, որը թույլ կտա մեր օգտվողներին մուտքագրել ցանկացած հարց:
# 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?",
)
Ամեն ինչ արված է! Շղթաները գործի են դրվել:
Մենք օգտագործում ենք տարբեր գործառնությունների շղթաներ միասին SimpleSequentialChain
օգտատիրոջ հարցմանը պատասխանելու համար։ Շղթաներն իրականացվում են հետևյալ հաջորդականությամբ, երբ օգտագործողը ընտրում է "Tell me about it"
կոճակը:
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
որը մեր խողովակաշարի առաջին քայլն է, ստանում է օգտատիրոջ հարցը որպես մուտքային և ելք: Օգտագործողի հարցումը ծառայում է որպես շղթայի ձևանմուշ:- Հարցին առնչվող հայտարարության հիման վրա
assumptions_chain
ստեղծում է ենթադրությունների կետային ցուցակ՝ օգտագործելով ելքըquestion_chain
որպես մուտքագրում: ԱյնLLMChain
ևOpenAI
Հայտարարությունը կառուցելու համար օգտագործվել է LangChain-ի մոդելը: Օգտագործողին հանձնարարված է ստեղծել այն ենթադրությունների ցանկը, որոնք արվել են այս շղթայի ձևանմուշով հայտարարություն ստեղծելու համար: - Ելնելով ստացված արդյունքներից
question_chain
ևassumptions_chain
Է,fact_checker_chain
առաջացնում է պնդումների ցանկ՝ կետային կետերի տեսքով: Հայցերը կազմվում են օգտագործելովOpenAI
մոդելը ևLLMChain
LangChain-ից: Օգտագործողին հանձնարարված է որոշել, թե արդյոք յուրաքանչյուր պնդում ճշգրիտ է կամ սխալ, և հիմնավորել նրանց, որոնք են: - The
answer_chain
օգտագործում է ելքերըquestion_chain
,assumptions_chain
, եւfact_checker_chain
որպես մուտքագրումներ՝ օգտագործողի հարցին պատասխան ստեղծելու համար՝ օգտագործելով ավելի վաղ շղթաների կողմից արտադրված տվյալները: Այս շղթայի ձևանմուշը պահանջում է, որ օգտագործողը պատասխանի առաջին հարցմանը` օգտագործելով ստեղծված փաստերը: - Օգտագործողի հարցմանը վերջնական պատասխան տալու համար՝ հիմնված ավելի վաղ շղթաների կողմից ստացված տեղեկատվության վրա, մենք ինտեգրում ենք այդ շղթաները ընդհանուր շղթայի մեջ: Շղթաների ավարտից հետո մենք օգտագործում ենք
st.success()
օգտագործողին լուծումը ցույց տալու համար:
Եզրափակում
Մենք կարող ենք պարզապես շղթայել տարբեր լեզուների մոդելային գործողություններ՝ օգտագործելով ավելի բարդ խողովակաշարեր SimpleSequentialChain
LangChain-ի մոդուլը: NLP հավելվածների լայն տեսականի, ներառյալ չաթ-բոտերը, հարց ու պատասխանի համակարգերը և լեզվի թարգմանության գործիքները, սա կարող է բավականին օգտակար լինել:
LangChain-ի փայլը հայտնաբերվում է նրա վերացականության մեջ, ինչը թույլ է տալիս օգտագործողին կենտրոնանալ ընթացիկ խնդրի վրա, այլ ոչ թե լեզվի մոդելավորման առանձնահատկությունների վրա:
LangChain-ն ավելի հարմար է դարձնում լեզվի բարդ մոդելների ստեղծման գործընթացը՝ առաջարկելով նախապես պատրաստված մոդելներ և կաղապարների ընտրություն:
Այն հնարավորություն է տալիս կարգավորել լեզվի մոդելները՝ օգտագործելով իրենց սեփական տվյալները, ինչը հեշտացնում է լեզվի մոդելների հարմարեցումը: Սա հնարավորություն է տալիս մշակել ավելի ճշգրիտ, տիրույթին հատուկ մոդելներ, որոնք տվյալ աշխատանքի համար գերազանցում են վերապատրաստված մոդելներին:
The SimpleSequentialChain
մոդուլը և LangChain-ի այլ առանձնահատկությունները այն դարձնում են արդյունավետ գործիք բարդ NLP համակարգերի արագ զարգացման և տեղակայման համար:
Թողնել գրառում