LangChain යනු විශාල භාෂා ආකෘතිවල (LLMs) බලය උපයෝගී කර ගැනීම සඳහා සංවර්ධනය කරන ලද අති නවීන සහ ශක්තිමත් මෙවලමකි.
මෙම LLMs සතුව කැපී පෙනෙන හැකියාවන් ඇති අතර කාර්යක්ෂමව පුළුල් පරාසයක කාර්යයන් සමඟ කටයුතු කළ හැකිය. කෙසේ වෙතත්, ඔවුන්ගේ ශක්තිය ගැඹුරු වසම් ප්රවීණත්වයට වඩා ඔවුන්ගේ සාමාන්ය ස්වභාවය තුළ පවතින බව සැලකිල්ලට ගැනීම වැදගත්ය. GPT-4 හඳුන්වාදීමෙන් පසු එහි ජනප්රියත්වය වේගයෙන් වර්ධනය වී ඇත.
LLMs විවිධ කර්තව්යයන් හැසිරවීමේදී විශිෂ්ට වන අතර, විශේෂිත පිළිතුරු සැපයීමේදී හෝ ගැඹුරු වසම් දැනුමක් අවශ්ය කාර්යයන් විසඳීමේදී ඔවුන් සීමාවන්ට මුහුණ දිය හැකිය. නිදසුනක් වශයෙන්, ප්රශ්නවලට පිළිතුරු දීමට හෝ වෛද්ය විද්යාව හෝ නීතිය වැනි විශේෂිත ක්ෂේත්ර තුළ කාර්යයන් ඉටු කිරීමට LLM භාවිතා කිරීම සලකා බලන්න.
LLM හට මෙම ක්ෂේත්ර පිළිබඳ සාමාන්ය විමසීම්වලට නිසැකවම ප්රතිචාර දැක්විය හැකි අතර, විශේෂිත දැනුමක් හෝ ප්රවීණත්වයක් අවශ්ය වන වඩාත් සවිස්තරාත්මක හෝ සූක්ෂ්ම පිළිතුරු ලබා දීමට එය අරගල කළ හැකිය.
මෙයට හේතුව LLMs විවිධ ප්රභවයන්ගෙන් විශාල පෙළ දත්ත ප්රමාණයක් පිළිබඳව පුහුණු කර ඇති අතර, ඔවුන්ට රටා ඉගෙන ගැනීමට, සන්දර්භය තේරුම් ගැනීමට සහ සුසංයෝගී ප්රතිචාර උත්පාදනය කිරීමට හැකි වේ. කෙසේ වෙතත්, ඔවුන්ගේ පුහුණුව සාමාන්යයෙන් එම ක්ෂේත්රවල මානව ප්රවීණයන් මෙන් වසම්-විශේෂිත හෝ විශේෂිත දැනුම ලබා ගැනීම ඇතුළත් නොවේ.
එබැවින්, LangChain, LLMs සමඟ ඒකාබද්ධව, පුළුල් පරාසයක කාර්යයන් සඳහා අගනා මෙවලමක් විය හැකි අතර, ඇතැම් තත්වයන් තුළ ගැඹුරු වසම් විශේෂඥතාව තවමත් අවශ්ය විය හැකි බව හඳුනා ගැනීම වැදගත් වේ. විශේෂිත දැනුමක් ඇති මානව විශේෂඥයින්ට අවශ්ය ගැඹුර, සූක්ෂ්ම අවබෝධය සහ සන්දර්භය-විශේෂිත තීක්ෂ්ණ බුද්ධිය LLMs හි පමණක් හැකියාවන්ට ඔබ්බෙන් විය හැකිය.
අපි LangChain හි ලේඛන හෝ බැලීමට උපදෙස් දෙන්නෙමු GitHub එහි සාමාන්ය භාවිත අවස්ථා පිළිබඳ වඩාත් ගැඹුරු අවබෝධයක් සඳහා ගබඩාව. මෙම මිටියේ විශාල පින්තූරයක් ලබා ගැනීමට දැඩි ලෙස උපදෙස් දෙනු ලැබේ.
එය ක්රියාත්මක වන්නේ කෙසේද?
LangChain හි අරමුණ සහ කාර්යය තේරුම් ගැනීමට, අපි ප්රායෝගික උදාහරණයක් සලකා බලමු. GPT-4 හට විශ්මයජනක සාමාන්ය දැනුමක් ඇති බවත්, පුළුල් පරාසයක ප්රශ්න සඳහා විශ්වාසදායක පිළිතුරු සැපයිය හැකි බවත් අපි දනිමු.
කෙසේ වෙතත්, පුද්ගලික ලේඛනයක්, පොතක්, PDF ගොනුවක් හෝ හිමිකාර දත්ත සමුදායක් වැනි අපගේම දත්ත වලින් අපට නිශ්චිත තොරතුරු අවශ්ය නම් කුමක් කළ යුතුද?
LangChain අපට සම්බන්ධ වීමට ඉඩ සලසයි විශාල භාෂා ආකෘතිය GPT-4 වගේ අපේම දත්ත මූලාශ්ර වලට. එය හුදෙක් කතාබස් අතුරුමුහුණතකට පෙළ කැබැල්ලක් ඇලවීමෙන් ඔබ්බට යයි. ඒ වෙනුවට, අපට අපගේම දත්ත වලින් පුරවා ඇති සම්පූර්ණ දත්ත සමුදායක් යොමු කළ හැකිය.
අපි අපේක්ෂිත තොරතුරු ලබා ගත් පසු, නිශ්චිත ක්රියාමාර්ග ගැනීමට LangChain අපට සහාය විය හැක. උදාහරණයක් ලෙස, අපට යම් විස්තර සහිත විද්යුත් තැපෑලක් යැවීමට උපදෙස් දිය හැක.
මෙය සාක්ෂාත් කර ගැනීම සඳහා, අපි LangChain භාවිතයෙන් නල මාර්ග ප්රවේශයක් අනුගමනය කරමු. පළමුව, අපි අපට අවශ්ය ලේඛනය ගනිමු භාෂා ආකෘතිය යොමු කිරීමට සහ එය කුඩා කොටස් වලට බෙදීමට. මෙම කුට්ටි පසුව තැන්පත් කිරීම් ලෙස ගබඩා කර ඇත, එනම් දෛශික දත්ත සමුදායක් තුළ, පෙළෙහි දෛශික නිරූපණය.
මෙම සැකසුම සමඟින්, අපට සම්මත නල මාර්ගයක් අනුගමනය කරන භාෂා ආකෘති යෙදුම් ගොඩනගා ගත හැක: පරිශීලකයෙකු මූලික ප්රශ්නයක් අසන අතර එය භාෂා ආකෘතියට යවනු ලැබේ. ප්රශ්නයේ දෛශික නිරූපණය දෛශික දත්ත සමුදායේ සමානතා සෙවීමක් සිදු කිරීමට, අදාළ තොරතුරු කොටස් ලබා ගැනීමට භාවිතා කරයි.
මෙම කොටස් පසුව භාෂා ආකෘතියට නැවත ලබා දෙනු ලැබේ, එයට පිළිතුරක් සැපයීමට හෝ අපේක්ෂිත ක්රියාමාර්ග ගැනීමට හැකි වේ.
LangChain දත්ත-දැනුවත් යෙදුම් සංවර්ධනය කිරීමට පහසුකම් සපයයි, මන්ද අපට අපගේ දත්ත දෛශික ගබඩාවක සඳහන් කළ හැකි අතර සත්ය, ප්රශ්නවලට පිළිතුරු දීමට ඔබ්බට ක්රියා කළ හැකි බැවිනි. ටී
විශාල භාෂා ආකෘතියකට ගුවන් ගමන් වෙන්කරවා ගැනීම, මුදල් මාරු කිරීම හෝ බදු සම්බන්ධ කාරණාවලට සහාය වීම වැනි කාර්යයන් හැසිරවිය හැකි ප්රායෝගික භාවිත අවස්ථා රාශියක් ඔහු විසින් විවෘත කරයි.
අමතර වශයෙන්, භාෂා ආකෘතියකට සම්පූර්ණ විෂය මාලාවක් යොමු කර ඉගෙනුම් ක්රියාවලිය වේගවත් කළ හැකි බැවින්, නව විෂයයන් හැදෑරීමට සහ ඉගෙනීමට ඇති බලපෑම් සැලකිය යුතු ය. කේතීකරණය, දත්ත විශ්ලේෂණය සහ දත්ත විද්යාව ද මෙම ප්රගතියට බෙහෙවින් බලපානු ඇතැයි අපේක්ෂා කෙරේ.
වඩාත් උද්යෝගිමත් අපේක්ෂාවන්ගෙන් එකක් වන්නේ පාරිභෝගික තොරතුරු හෝ අලෙවිකරණ දත්ත වැනි පවතින සමාගම් දත්තවලට විශාල භාෂා ආකෘති සම්බන්ධ කිරීමයි. Meta's API හෝ Google's API වැනි උසස් API සමඟ මෙම ඒකාබද්ධ කිරීම දත්ත විශ්ලේෂණ සහ දත්ත විද්යාවේ ඝාතීය ප්රගතියක් පොරොන්දු වේ.
වෙබ් පිටුවක් ගොඩනගන්නේ කෙසේද (Demo)
දැනට, Langchain Python සහ JavaScript පැකේජ ලෙස පවතී.
LangChain සංකල්පය ක්රියාත්මක කිරීම සඳහා Streamlit, LangChain, සහ OpenAI GPT-3 මාදිලිය භාවිතා කරමින් අපට නිරූපණ වෙබ් යෙදුමක් නිර්මාණය කළ හැක.
නමුත් පළමුව, අපි Streamlit, LangChain සහ OpenAI ඇතුළු පරායත්තතා කිහිපයක් ස්ථාපනය කළ යුතුය.
පූර්ව අවශ්යතා
ප්රවාහය: දත්ත විද්යාව සම්බන්ධ වෙබ් යෙදුම් නිර්මාණය කිරීම සඳහා ජනප්රිය Python පැකේජයක්
OpenAI: OpenAI හි GPT-3 භාෂා ආකෘතියට ප්රවේශය අවශ්ය වේ.
මෙම පරායත්තතා ස්ථාපනය කිරීමට, cmd හි පහත විධාන භාවිතා කරන්න:
pip install streamlit
pip install langchain
pip install openai
පැකේජ ආනයනය කරන්න
අපි OpenAI, LangChain, සහ Streamlit වැනි අවශ්ය පැකේජ ආයාත කිරීමෙන් ආරම්භ කරමු. අපගේ භාෂා ආකෘති දාමයන් LangChain වෙතින් පන්ති තුනක් භාවිතයෙන් නිර්වචනය කර ක්රියාත්මක වේ: LLMCchain, SimpleSequentialChain, සහ PromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
මූලික සැකසුම
අපගේ ව්යාපෘතියේ ව්යුහාත්මක පදනම පසුව Streamlit syntax භාවිතයෙන් සකස් කරන ලදී. අපි යෙදුමට “සත්ය කුමක්ද: සරල අනුක්රමික දාමයක් භාවිතා කිරීම” යන මාතෘකාව ලබා දුන් අතර යෙදුමේ ආශ්වාදය ලෙස ක්රියා කළ GitHub ගබඩාවට සලකුණු සබැඳියක් ඇතුළත් කළෙමු.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Front-End Widgets
අපි සරල 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 වෙතින්. එක් එක් හිමිකම් පෑම නිවැරදිද වැරදිද යන්න නිර්ණය කිරීම සහ ඒවා සඳහා සාධාරණීකරණය කිරීම පරිශීලකයාට පැවරී ඇත. - එම
answer_chain
වෙතින් නිමැවුම් භාවිතා කරයිquestion_chain
,assumptions_chain
, සහfact_checker_chain
පෙර දාමයන් විසින් නිපදවන ලද දත්ත භාවිතා කරමින් පරිශීලකයාගේ ප්රශ්නයට ප්රතිචාරයක් නිර්මාණය කිරීමට යෙදවුම් ලෙස. මෙම දාමයේ අච්චුව පරිශීලකයා විසින් නිර්මාණය කරන ලද කරුණු භාවිතයෙන් පළමු විමසුමට ප්රතිචාර දක්වන ලෙස ඉල්ලා සිටී. - පෙර දාමයන් විසින් නිපදවන ලද තොරතුරු මත පදනම්ව පරිශීලකයාගේ විමසුමට අවසාන ප්රතිචාරය සැපයීම සඳහා, අපි මෙම දාම සමස්ත දාමයට අනුකලනය කරමු. දම්වැල් සම්පූර්ණ කිරීමෙන් පසුව, අපි භාවිතා කරමු
st.success()
පරිශීලකයාට විසඳුම පෙන්වීමට.
නිගමනය
භාවිතා කිරීමෙන් වඩාත් සංකීර්ණ නල මාර්ග නිර්මාණය කිරීම සඳහා අපට විවිධ භාෂා ආකෘති ක්රියා සරලව සම්බන්ධ කළ හැක SimpleSequentialChain
LangChain මොඩියුලය. චැට්බොට්, ප්රශ්න-පිළිතුරු පද්ධති, සහ භාෂා පරිවර්තන මෙවලම් ඇතුළුව NLP යෙදුම් රාශියක් සඳහා, මෙය බෙහෙවින් ප්රයෝජනවත් විය හැක.
LangChain හි දීප්තිය එහි වියුක්ත කිරීමේ හැකියාව තුළ දක්නට ලැබේ, එමඟින් භාෂා ආකෘතිකරණයේ විශේෂතා වෙනුවට වත්මන් ගැටලුව කෙරෙහි අවධානය යොමු කිරීමට පරිශීලකයාට හැකි වේ.
LangChain විසින් පෙර-පුහුණු ආකෘති සහ සැකිලි තෝරා ගැනීම මඟින් සංකීර්ණ භාෂා ආකෘති නිර්මාණය කිරීමේ ක්රියාවලිය වඩාත් පරිශීලක-හිතකාමී කරයි.
භාෂා ආකෘති අභිරුචිකරණය කිරීම සරල කරමින්, ඔවුන්ගේම දත්ත භාවිතයෙන් භාෂා ආකෘති මනාව සකස් කිරීමට එය ඔබට විකල්පය ලබා දෙයි. මෙමගින් දී ඇති කාර්යයක් සඳහා, පුහුණු කරන ලද ආකෘති අභිබවා යන වඩාත් නිරවද්ය, වසම්-විශේෂිත ආකෘති සංවර්ධනය කිරීමට හැකියාව ලැබේ.
එම SimpleSequentialChain
මොඩියුලය සහ LangChain හි අනෙකුත් විශේෂාංග එය නවීන NLP පද්ධති ඉක්මනින් සංවර්ධනය කිරීම සහ යෙදවීම සඳහා ඵලදායී මෙවලමක් බවට පත් කරයි.
ඔබමයි