LangChain គឺជាឧបករណ៍ទំនើប និងរឹងមាំដែលត្រូវបានបង្កើតឡើងដើម្បីប្រើប្រាស់ថាមពលនៃគំរូភាសាធំ (LLMs)។
LLMs ទាំងនេះមានសមត្ថភាពគួរឱ្យកត់សម្គាល់ ហើយអាចដោះស្រាយកិច្ចការជាច្រើនយ៉ាងមានប្រសិទ្ធភាព។ ទោះជាយ៉ាងណាក៏ដោយ វាជារឿងសំខាន់ក្នុងការកត់សម្គាល់ថា កម្លាំងរបស់ពួកគេស្ថិតនៅក្នុងលក្ខណៈទូទៅរបស់ពួកគេ ជាជាងជំនាញដែនស៊ីជម្រៅ។ ប្រជាប្រិយភាពរបស់វាបានកើនឡើងយ៉ាងឆាប់រហ័សចាប់តាំងពីការណែនាំ GPT-4 ។
ខណៈពេលដែល LLMs ពូកែក្នុងការដោះស្រាយកិច្ចការផ្សេងៗ ពួកគេអាចប្រឈមនឹងការកំណត់នៅពេលនិយាយអំពីការផ្តល់ចម្លើយជាក់លាក់ ឬដោះស្រាយកិច្ចការដែលទាមទារចំណេះដឹងជ្រៅជ្រះ។ ជាឧទាហរណ៍ សូមពិចារណា ការប្រើប្រាស់ LLM ដើម្បីឆ្លើយសំណួរ ឬអនុវត្តការងារក្នុងវិស័យឯកទេស ដូចជាឱសថ ឬច្បាប់ជាដើម។
ខណៈពេលដែល LLM ពិតជាអាចឆ្លើយតបទៅនឹងការសាកសួរទូទៅអំពីវិស័យទាំងនេះ វាអាចនឹងពិបាកក្នុងការផ្តល់ចម្លើយលម្អិត ឬច្បាស់លាស់បន្ថែមទៀត ដែលទាមទារចំណេះដឹង ឬជំនាញឯកទេស។
នេះគឺដោយសារតែ LLMs ត្រូវបានបណ្តុះបណ្តាលលើចំនួនដ៏ច្រើននៃទិន្នន័យអត្ថបទពីប្រភពផ្សេងៗគ្នា ដែលអាចឱ្យពួកគេរៀនលំនាំ យល់ពីបរិបទ និងបង្កើតការឆ្លើយតបយ៉ាងស៊ីសង្វាក់គ្នា។ ទោះជាយ៉ាងណាក៏ដោយ ការបណ្តុះបណ្តាលរបស់ពួកគេជាធម្មតាមិនពាក់ព័ន្ធនឹងការទទួលបានចំណេះដឹងជាក់លាក់ ឬឯកទេសក្នុងកម្រិតដូចគ្នាទៅនឹងអ្នកជំនាញផ្នែកមនុស្សនៅក្នុងវិស័យទាំងនោះនោះទេ។
ដូច្នេះ ខណៈពេលដែល LangChain រួមជាមួយនឹង LLMs អាចជាឧបករណ៍ដែលមិនអាចកាត់ថ្លៃបានសម្រាប់កិច្ចការជាច្រើន វាជាការសំខាន់ក្នុងការទទួលស្គាល់ថាជំនាញដែនជ្រៅអាចនៅតែចាំបាច់ក្នុងស្ថានភាពមួយចំនួន។ អ្នកជំនាញផ្នែកមនុស្សដែលមានចំណេះដឹងពិសេសអាចផ្តល់នូវជម្រៅចាំបាច់ ការយល់ដឹងច្បាស់លាស់ និងការយល់ដឹងអំពីបរិបទជាក់លាក់ដែលអាចលើសពីសមត្ថភាពរបស់ LLMs តែម្នាក់ឯង។
យើងសូមណែនាំឱ្យមើលឯកសាររបស់ LangChain ឬ GitHub ឃ្លាំងសម្រាប់ការយល់ដឹងកាន់តែស៊ីជម្រៅអំពីករណីប្រើប្រាស់ធម្មតារបស់វា។ វាត្រូវបានណែនាំយ៉ាងខ្លាំងដើម្បីទទួលបានរូបភាពធំជាងនៃកញ្ចប់នេះ។
តើវាដំណើរការយ៉ាងដូចម្តេច?
ដើម្បីយល់ពីគោលបំណង និងការងាររបស់ LangChain សូមពិចារណាឧទាហរណ៍ជាក់ស្តែង។ យើងដឹងថា GPT-4 មានចំណេះដឹងទូទៅគួរឱ្យចាប់អារម្មណ៍ និងអាចផ្តល់ចម្លើយដែលអាចទុកចិត្តបានចំពោះសំណួរជាច្រើន។
ទោះជាយ៉ាងណាក៏ដោយ ចុះបើយើងចង់បានព័ត៌មានជាក់លាក់ពីទិន្នន័យផ្ទាល់ខ្លួនរបស់យើង ដូចជាឯកសារផ្ទាល់ខ្លួន សៀវភៅ ឯកសារ PDF ឬមូលដ្ឋានទិន្នន័យកម្មសិទ្ធិ?
LangChain អនុញ្ញាតឱ្យយើងភ្ជាប់ a គំរូភាសាធំ ដូចជា GPT-4 ទៅប្រភពទិន្នន័យផ្ទាល់ខ្លួនរបស់យើង។ វាហួសពីការបិទភ្ជាប់អត្ថបទខ្លីៗទៅក្នុងចំណុចប្រទាក់ជជែក។ ផ្ទុយទៅវិញ យើងអាចយោងមូលដ្ឋានទិន្នន័យទាំងមូលដែលពោរពេញទៅដោយទិន្នន័យផ្ទាល់ខ្លួនរបស់យើង។
នៅពេលដែលយើងទទួលបានព័ត៌មានដែលចង់បាន LangChain អាចជួយយើងក្នុងការធ្វើសកម្មភាពជាក់លាក់។ ជាឧទាហរណ៍ យើងអាចណែនាំវាឱ្យផ្ញើអ៊ីមែលដែលមានព័ត៌មានលម្អិតជាក់លាក់។
ដើម្បីសម្រេចបាននូវចំណុចនេះ យើងអនុវត្តតាមវិធីសាស្រ្តបំពង់បង្ហូរប្រេងដោយប្រើ LangChain ។ ដំបូងយើងយកឯកសារដែលយើងចង់បាន គំរូភាសា ដើម្បីយោង និងបែងចែកវាទៅជាកំណាត់តូចៗ។ បន្ទាប់មកកំណាត់ទាំងនេះត្រូវបានរក្សាទុកជាការបង្កប់ តំណាងវ៉ិចទ័រនៃអត្ថបទនៅក្នុងមូលដ្ឋានទិន្នន័យវ៉ិចទ័រ.
ជាមួយនឹងការដំឡើងនេះ យើងអាចបង្កើតកម្មវិធីគំរូភាសាដែលធ្វើតាមស្តង់ដារស្តង់ដារ៖ អ្នកប្រើប្រាស់សួរសំណួរដំបូង ហើយបន្ទាប់មកផ្ញើទៅកាន់គំរូភាសា។ តំណាងវ៉ិចទ័ររបស់សំណួរត្រូវបានប្រើដើម្បីធ្វើការស្វែងរកភាពស្រដៀងគ្នានៅក្នុងមូលដ្ឋានទិន្នន័យវ៉ិចទ័រ ដោយទាញយកព័ត៌មានដែលពាក់ព័ន្ធ។
បន្ទាប់មកកំណាត់ទាំងនេះត្រូវបានបញ្ជូនត្រឡប់ទៅគំរូភាសា ដែលអាចឱ្យវាផ្តល់ចម្លើយ ឬធ្វើសកម្មភាពដែលចង់បាន។
LangChain ជួយសម្រួលដល់ការអភិវឌ្ឍន៍កម្មវិធីដែលដឹងអំពីទិន្នន័យ ដូចដែលយើងអាចយោងទិន្នន័យផ្ទាល់ខ្លួនរបស់យើងនៅក្នុងហាងវ៉ិចទ័រ និងពិតប្រាកដ ដោយសារពួកគេអាចធ្វើសកម្មភាពលើសពីការឆ្លើយសំណួរ។ ធ
គាត់បើកករណីប្រើប្រាស់ជាក់ស្តែងជាច្រើន ជាពិសេសនៅក្នុងជំនួយផ្ទាល់ខ្លួន ដែលគំរូភាសាធំមួយអាចដោះស្រាយកិច្ចការនានាដូចជា ការកក់ជើងហោះហើរ ផ្ទេរប្រាក់ ឬជំនួយលើបញ្ហាទាក់ទងនឹងពន្ធ។
លើសពីនេះ ផលប៉ះពាល់សម្រាប់ការសិក្សា និងការរៀនមុខវិជ្ជាថ្មីគឺមានសារៈសំខាន់ ដោយសារគំរូភាសាអាចយោងទៅលើកម្មវិធីសិក្សាទាំងមូល និងពន្លឿនដំណើរការសិក្សា។ ការសរសេរកូដ ការវិភាគទិន្នន័យ និងវិទ្យាសាស្ត្រទិន្នន័យក៏ត្រូវបានគេរំពឹងថានឹងទទួលឥទ្ធិពលយ៉ាងខ្លាំងពីការរីកចម្រើនទាំងនេះ។
ការរំពឹងទុកដ៏គួរឱ្យរំភើបបំផុតមួយគឺការភ្ជាប់គំរូភាសាធំៗទៅនឹងទិន្នន័យរបស់ក្រុមហ៊ុនដែលមានស្រាប់ ដូចជាព័ត៌មានអតិថិជន ឬទិន្នន័យទីផ្សារ។ ការធ្វើសមាហរណកម្មនេះជាមួយ APIs កម្រិតខ្ពស់ដូចជា Meta's API ឬ API របស់ Google សន្យាថានឹងមានការរីកចម្រើនក្នុងការវិភាគទិន្នន័យ និងវិទ្យាសាស្ត្រទិន្នន័យ។
របៀបបង្កើតគេហទំព័រ (សាកល្បង)
បច្ចុប្បន្ន Langchain មានជាកញ្ចប់ Python និង JavaScript ។
យើងអាចបង្កើតកម្មវិធីបណ្ដាញបង្ហាញដោយប្រើ Streamlit, LangChain និងគំរូ OpenAI GPT-3 ដើម្បីអនុវត្តគោលគំនិត LangChain។
ប៉ុន្តែជាដំបូង យើងត្រូវដំឡើងភាពអាស្រ័យមួយចំនួន រួមមាន Streamlit, LangChain និង OpenAI។
តម្រូវការជាមុន
ស្ទ្រីម៖ កញ្ចប់ Python ដ៏ពេញនិយមសម្រាប់បង្កើតកម្មវិធីគេហទំព័រទាក់ទងនឹងវិទ្យាសាស្ត្រទិន្នន័យ
OpenAI៖ ការចូលប្រើគំរូភាសា GPT-3 របស់ OpenAI គឺចាំបាច់។
ដើម្បីដំឡើងភាពអាស្រ័យទាំងនេះ សូមប្រើពាក្យបញ្ជាខាងក្រោមក្នុង 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
ធាតុក្រាហ្វិកផ្នែកខាងមុខ
យើងរៀបចំកម្មវិធីជាមួយនឹងព័ត៌មានពាក់ព័ន្ធមួយចំនួន ដោយប្រើវាក្យសម្ព័ន្ធ 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 ជាច្រើន រួមទាំង chatbots ប្រព័ន្ធសំណួរ និងចម្លើយ និងឧបករណ៍បកប្រែភាសា វាអាចមានប្រយោជន៍ណាស់។
ភាពវៃឆ្លាតរបស់ LangChain ត្រូវបានរកឃើញនៅក្នុងសមត្ថភាពរបស់វាក្នុងការអរូបី ដែលអាចឱ្យអ្នកប្រើប្រាស់ផ្តោតទៅលើបញ្ហាបច្ចុប្បន្នជាជាងភាពជាក់លាក់នៃគំរូភាសា។
LangChain ធ្វើឱ្យដំណើរការនៃការបង្កើតគំរូភាសាទំនើបកាន់តែងាយស្រួលប្រើដោយផ្តល់ជូននូវគំរូដែលបានបណ្តុះបណ្តាលជាមុន និងជម្រើសនៃគំរូ។
វាផ្តល់ឱ្យអ្នកនូវជម្រើសក្នុងការកែសម្រួលគំរូភាសាដោយប្រើទិន្នន័យផ្ទាល់ខ្លួនរបស់ពួកគេ ដោយធ្វើឱ្យវាសាមញ្ញក្នុងការកំណត់គំរូភាសាតាមបំណង។ នេះអនុញ្ញាតឱ្យមានការអភិវឌ្ឍន៍នៃគំរូដែនជាក់លាក់ដែលច្បាស់លាស់ជាងមុន ដែលសម្រាប់ការងារដែលបានផ្តល់ឱ្យនោះ ដំណើរការលើសពីម៉ូដែលដែលបានបណ្តុះបណ្តាល។
នេះ SimpleSequentialChain
ម៉ូឌុល និងលក្ខណៈពិសេសផ្សេងទៀតរបស់ LangChain ធ្វើឱ្យវាក្លាយជាឧបករណ៍ដ៏មានប្រសិទ្ធភាពមួយសម្រាប់ការអភិវឌ្ឍ និងប្រើប្រាស់ប្រព័ន្ធ NLP ដ៏ទំនើបបានយ៉ាងឆាប់រហ័ស។
សូមផ្ដល់យោបល់