LangChain ትልቅ የቋንቋ ሞዴሎች (LLMs) ኃይልን ለመጠቀም የተፈጠረ መቁረጫ እና ጠንካራ መሳሪያ ነው።
እነዚህ ኤል.ኤም.ኤም.ኤስ አስደናቂ ችሎታዎች አሏቸው እና ሰፋ ያሉ ሥራዎችን በብቃት መወጣት ይችላሉ። ነገር ግን፣ ጥንካሬያቸው ከጥልቅ የጎራ እውቀት ይልቅ በአጠቃላይ ተፈጥሮአቸው ላይ መሆኑን ልብ ማለት ያስፈልጋል። ከ GPT-4 መግቢያ ጀምሮ ታዋቂነቱ በፍጥነት አድጓል።
LLMs የተለያዩ ስራዎችን በማስተናገድ የላቀ ቢሆንም፣ የተወሰኑ መልሶችን ለመስጠት ወይም ጥልቅ የጎራ እውቀት የሚጠይቁ ተግባራትን ለመፍታት ውስንነቶች ሊያጋጥሟቸው ይችላሉ። ለምሳሌ ጥያቄዎችን ለመመለስ ወይም እንደ መድሃኒት ወይም ህግ ባሉ ልዩ መስኮች ውስጥ ስራዎችን ለመስራት LLMን መጠቀም ያስቡበት።
ስለእነዚህ መስኮች አጠቃላይ ጥያቄዎች ኤል ኤም ኤል በእርግጠኝነት ምላሽ መስጠት ቢችልም፣ ልዩ እውቀትን ወይም እውቀትን የሚሹ የበለጠ ዝርዝር ወይም መለስተኛ መልሶችን ለመስጠት ሊታገል ይችላል።
ይህ የሆነበት ምክንያት ኤል.ኤል.ኤም.ኤስ ከተለያዩ ምንጮች በተገኘ እጅግ በጣም ብዙ የጽሑፍ መረጃ የሰለጠኑ፣ ቅጦችን እንዲማሩ፣ አውድ እንዲረዱ እና ወጥ ምላሾችን እንዲያመነጩ ያስችላቸዋል። ነገር ግን፣ የእነርሱ ሥልጠና በተለምዶ ጎራ-ተኮር ወይም ልዩ እውቀትን ማግኘትን በእነዚያ መስኮች ካሉት የሰው ልጆች ኤክስፐርቶች ጋር ተመሳሳይ አይደለም።
ስለዚህ፣ LangChain፣ ከኤል.ኤም.ኤል.ኤም ጋር በመተባበር ለብዙ ተግባራት በዋጋ ሊተመን የማይችል መሳሪያ ሊሆን ቢችልም፣ በአንዳንድ ሁኔታዎች ጥልቅ የጎራ እውቀት አሁንም አስፈላጊ ሊሆን እንደሚችል መገንዘብ ጠቃሚ ነው። ልዩ እውቀት ያላቸው የሰው ልጆች ከኤል.ኤም.ኤም.ኤስ አቅም በላይ ሊሆኑ የሚችሉትን አስፈላጊውን ጥልቀት፣ የተዛባ ግንዛቤ እና አውድ-ተኮር ግንዛቤዎችን ሊሰጡ ይችላሉ።
የLangChainን ሰነዶች ወይም ለማየት እንመክራለን የፊልሙ ስለ ተለመደው የአጠቃቀም ጉዳዮች የበለጠ ጥልቅ ግንዛቤ ለማግኘት ማከማቻ። የዚህን ጥቅል ትልቅ ምስል ለማግኘት በጥብቅ ይመከራል.
እንዴት ነው የሚሰራው?
የ LangChainን ዓላማ እና ስራ ለመረዳት፣ ተግባራዊ ምሳሌን እንመልከት። GPT-4 አስደናቂ አጠቃላይ እውቀት እንዳለው እና ለብዙ ጥያቄዎች አስተማማኝ መልስ እንደሚሰጥ እናውቃለን።
ነገር ግን፣ እንደ የግል ሰነድ፣ መጽሐፍ፣ ፒዲኤፍ ፋይል ወይም የባለቤትነት ዳታቤዝ ያሉ ከራሳችን ውሂብ የተወሰኑ መረጃዎችን ብንፈልግስ?
LangChain ሀን እንድናገናኝ ያስችለናል። ትልቅ የቋንቋ ሞዴል እንደ GPT-4 ለራሳችን የመረጃ ምንጮች። ወደ የውይይት በይነገጽ ቅንጣቢ ጽሑፍን በቀላሉ ከመለጠፍ ያለፈ ነው። ይልቁንም፣ በራሳችን ውሂብ የተሞላውን አጠቃላይ የውሂብ ጎታ ማጣቀስ እንችላለን።
አንዴ የተፈለገውን መረጃ ካገኘን, LangChain የተወሰኑ እርምጃዎችን እንድንወስድ ሊረዳን ይችላል. ለምሳሌ የተወሰኑ ዝርዝሮችን የያዘ ኢሜል እንዲልክ ልንነግረው እንችላለን።
ይህንን ለማግኘት, LangChain ን በመጠቀም የቧንቧ መስመርን እንከተላለን. በመጀመሪያ እኛ የምንፈልገውን ሰነድ እንወስዳለን የቋንቋ ሞዴል ለማጣቀስ እና ወደ ትናንሽ ቁርጥራጮች ይከፋፍሉት. እነዚህ ቁርጥራጮች እንደ መክተቻዎች ይቀመጣሉ, እነሱም ናቸው የጽሑፉ የቬክተር ውክልናዎች፣ በቬክተር ዳታቤዝ ውስጥ.
በዚህ ማዋቀር፣ መደበኛ የቧንቧ መስመርን የሚከተሉ የቋንቋ ሞዴል አፕሊኬሽኖችን መገንባት እንችላለን፡ ተጠቃሚው የመጀመሪያ ጥያቄ ይጠይቃል፣ ከዚያም ወደ ቋንቋው ሞዴል ይላካል። የጥያቄው የቬክተር ውክልና በቬክተር ዳታቤዝ ውስጥ ተመሳሳይነት ፍለጋን ለማካሄድ ይጠቅማል፣ ተዛማጅ መረጃዎችን በማንሳት።
እነዚህ ቁርጥራጮች ወደ ቋንቋው ሞዴል ይመለሳሉ, ይህም መልስ እንዲሰጥ ወይም የተፈለገውን እርምጃ እንዲወስድ ያስችለዋል.
የራሳችንን መረጃ በቬክተር ማከማቻ ውስጥ መጥቀስ ስለምንችል እና ትክክለኛ ጥያቄዎችን ከመመለስ ባለፈ እርምጃ ስለሚወስዱ LangChain መረጃን የሚያውቁ አፕሊኬሽኖች እንዲፈጠሩ ያመቻቻል። ቲ
የእሱ ብዙ የተግባር አጠቃቀም ጉዳዮችን ይከፍታል፣ በተለይም በግላዊ እርዳታ፣ ትልቅ የቋንቋ ሞዴል በረራዎችን ማስያዝ፣ ገንዘብ ማስተላለፍ ወይም ከግብር ጋር በተያያዙ ጉዳዮች ላይ መርዳት ያሉ ተግባሮችን ማከናወን ይችላል።
በተጨማሪም፣ የቋንቋ ሞዴል ሙሉውን ሥርዓተ ትምህርት በመጥቀስ የመማር ሂደቱን ሊያፋጥን ስለሚችል አዳዲስ ትምህርቶችን በማጥናትና በመማር ላይ ያለው አንድምታ ጉልህ ነው። ኮድ ማድረግ፣ የመረጃ ትንተና እና ዳታ ሳይንስ በነዚህ እድገቶች ከፍተኛ ተጽዕኖ እንደሚኖራቸው ይጠበቃል።
በጣም ከሚያስደስት ተስፋዎች አንዱ ትልቅ የቋንቋ ሞዴሎችን እንደ የደንበኛ መረጃ ወይም የግብይት ውሂብ ካሉ የኩባንያ ውሂብ ጋር ማገናኘት ነው። ይህ እንደ ሜታ ኤፒአይ ወይም የጉግል ኤፒአይ ካሉ የላቁ ኤፒአይዎች ጋር በመረጃ ትንተና እና በዳታ ሳይንስ ውስጥ ሰፊ እድገትን እንደሚሰጥ ቃል ገብቷል።
ድረ-ገጽ (ማሳያ) እንዴት እንደሚገነባ
በአሁኑ ጊዜ Langchain እንደ Python እና JavaScript ጥቅሎች ይገኛል።
የLangChain ጽንሰ-ሀሳብን ለመተግበር Streamlit፣ LangChain እና OpenAI GPT-3 ሞዴልን በመጠቀም ማሳያ የድር መተግበሪያ መፍጠር እንችላለን።
በመጀመሪያ ግን Streamlit፣ LangChain እና OpenAI ን ጨምሮ ጥቂት ጥገኞችን መጫን አለብን።
ቅድመ-ሁኔታዎች
የበራ ከዳታ ሳይንስ ጋር የተገናኙ የድር መተግበሪያዎችን ለመፍጠር ታዋቂ የፓይዘን ጥቅል
ክፍት AI፡ የOpenAI's GPT-3 ቋንቋ ሞዴል መዳረሻ ያስፈልጋል።
እነዚህን ጥገኞች ለመጫን የሚከተሉትን ትዕዛዞች በ cmd ውስጥ ይጠቀሙ።
pip install streamlit
pip install langchain
pip install openai
ፓኬጆችን አስመጣ
እንደ OpenAI፣ LangChain እና Streamlit ያሉ አስፈላጊዎቹን ፓኬጆች በማስመጣት እንጀምራለን። የእኛ የቋንቋ ሞዴል ሰንሰለቶች የሚገለጹት እና የሚፈጸሙት ከላንግቻይን ሶስት ክፍሎችን በመጠቀም ነው፡ LLMChain፣ 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
የፊት-ፍጻሜ መግብሮች
ቀላል የዥረት አገባብ በመጠቀም መተግበሪያውን በጥቂት ተዛማጅ መረጃዎች አዘጋጅተናል፡-
# 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 ቀድሞ የሰለጠኑ ሞዴሎችን እና የአብነት ምርጫዎችን በማቅረብ የተራቀቁ የቋንቋ ሞዴሎችን የመፍጠር ሂደቱን የበለጠ ለተጠቃሚ ምቹ ያደርገዋል።
የቋንቋ ሞዴሎችን ማበጀት ቀላል በማድረግ የራሳቸውን ውሂብ ተጠቅመው የቋንቋ ሞዴሎችን ለማስተካከል አማራጭ ይሰጥዎታል። ይህ ለአንድ የተወሰነ ሥራ የሰለጠኑ ሞዴሎችን የሚበልጡ ትክክለኛ ፣ ጎራ-ተኮር ሞዴሎችን ማዘጋጀት ያስችላል።
የ SimpleSequentialChain
ሞጁል እና ሌሎች የ LangChain ባህሪያት የተራቀቁ NLP ስርዓቶችን በፍጥነት ለማዳበር እና ለማሰማራት ውጤታማ መሳሪያ ያደርጉታል።
መልስ ይስጡ