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 эсвэл Google-ийн API зэрэг дэвшилтэт API-уудтай нэгдэх нь өгөгдлийн аналитик болон өгөгдлийн шинжлэх ухаанд экспоненциал ахиц дэвшлийг амлаж байна.
Вэб хуудас хэрхэн бүтээх вэ (Демо)
Одоогоор 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-ийн 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 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
: энэ нь бидний дамжуулах хоолойн эхний алхам бөгөөд хэрэглэгчийн асуултыг оролт, гаралт хэлбэрээр хүлээн авдаг. Хэрэглэгчийн асуулга нь сүлжээний загвар болж үйлчилдэг.- Асуулттай холбоотой мэдэгдэлд үндэслэн, the
assumptions_chain
-аас гарсан гаралтыг ашиглан таамаглалын цэгийн жагсаалтыг үүсгэдэгquestion_chain
оролт болгон. TheLLMChain
болон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 системийг хурдан хөгжүүлэх, ашиглах үр дүнтэй хэрэгсэл болгодог.
хариу үлдээх