LangChain - bu katta til modellari (LLM) quvvatidan foydalanish uchun ishlab chiqilgan zamonaviy va mustahkam vosita.
Ushbu LLMlar ajoyib imkoniyatlarga ega va ko'plab vazifalarni samarali hal qila oladi. Ammo shuni ta'kidlash kerakki, ularning kuchi chuqur domen tajribasida emas, balki umumiy tabiatidadir. GPT-4 joriy etilgandan beri uning mashhurligi tez o'sdi.
LLMlar turli vazifalarni bajarishda ustun bo'lsa-da, ular aniq javoblar berish yoki chuqur bilimlarni talab qiladigan vazifalarni hal qilishda cheklovlarga duch kelishi mumkin. Masalan, tibbiyot yoki huquq kabi ixtisoslashgan sohalarda savollarga javob berish yoki vazifalarni bajarish uchun LLM dan foydalanishni ko'rib chiqing.
LLM ushbu sohalar bo'yicha umumiy so'rovlarga albatta javob berishi mumkin bo'lsa-da, u maxsus bilim yoki tajribani talab qiladigan batafsilroq yoki nozik javoblarni taklif qilishda qiynalishi mumkin.
Buning sababi shundaki, LLMlar turli manbalardan olingan katta hajmdagi matn ma'lumotlari bo'yicha o'qitiladi, bu ularga naqshlarni o'rganish, kontekstni tushunish va izchil javoblar yaratish imkonini beradi. Biroq, ularni o'qitish, odatda, ushbu sohalardagi inson mutaxassislari kabi domenga xos yoki maxsus bilimlarni egallashni o'z ichiga olmaydi.
Shu sababli, LangChain LLMlar bilan birgalikda keng ko'lamli vazifalar uchun bebaho vosita bo'lishi mumkin bo'lsa-da, ba'zi holatlarda chuqur domen tajribasi hali ham zarur bo'lishi mumkinligini tan olish muhimdir. Maxsus bilimga ega inson mutaxassislari zarur chuqurlik, nozik tushuncha va kontekstga xos tushunchalarni taqdim etishi mumkin, bu faqat LLMlarning imkoniyatlaridan tashqarida bo'lishi mumkin.
Biz LangChain hujjatlarini ko'rib chiqishni maslahat beramiz yoki GitHub uning odatiy foydalanish holatlarini to'liqroq tushunish uchun ombor. Ushbu to'plamning kattaroq rasmini olish tavsiya etiladi.
Bu qanday ishlaydi?
LangChainning maqsadi va ishini tushunish uchun amaliy misolni ko'rib chiqaylik. Biz bilamizki, GPT-4 ta'sirchan umumiy bilimga ega va ko'plab savollarga ishonchli javoblar bera oladi.
Ammo, agar biz shaxsiy hujjat, kitob, PDF fayl yoki xususiy ma'lumotlar bazasi kabi o'z ma'lumotlarimizdan aniq ma'lumot olishni xohlasak nima bo'ladi?
LangChain bizga ulanish imkonini beradi a katta til modeli o'z ma'lumotlar manbalariga GPT-4 kabi. Bu shunchaki matn parchasini chat interfeysiga joylashtirishdan tashqari. Buning o'rniga, biz o'z ma'lumotlarimiz bilan to'ldirilgan butun ma'lumotlar bazasiga murojaat qilishimiz mumkin.
Biz kerakli ma'lumotni olganimizdan so'ng, LangChain bizga aniq harakatlarni amalga oshirishda yordam berishi mumkin. Misol uchun, biz unga ma'lum ma'lumotlarni o'z ichiga olgan elektron pochta xabarini yuborishni buyurishimiz mumkin.
Bunga erishish uchun biz LangChain-dan foydalangan holda quvur liniyasiga amal qilamiz. Birinchidan, biz kerakli hujjatni olamiz til modeli havola qilish va uni kichikroq bo'laklarga bo'lish. Keyinchalik bu bo'laklar o'rnatish sifatida saqlanadi Vektor ma'lumotlar bazasida matnning vektor tasvirlari.
Ushbu sozlash yordamida biz standart quvur liniyasiga amal qiladigan til modeli ilovalarini yaratishimiz mumkin: foydalanuvchi dastlabki savolni so'raydi, so'ngra u til modeliga yuboriladi. Savolning vektor ko'rinishi Vektor ma'lumotlar bazasida o'xshashlik qidiruvini amalga oshirish uchun, tegishli ma'lumotlar qismlarini olish uchun ishlatiladi.
Keyin bu bo'laklar til modeliga qaytariladi, bu unga javob berish yoki kerakli harakatni amalga oshirish imkonini beradi.
LangChain ma'lumotlardan xabardor bo'lgan ilovalarni ishlab chiqishni osonlashtiradi, chunki biz vektor do'konida o'z ma'lumotlarimizga murojaat qilishimiz mumkin va haqiqiy, chunki ular savollarga javob berishdan tashqari harakatlarni amalga oshirishi mumkin. T
uning ko'plab amaliy holatlarini ochib beradi, ayniqsa shaxsiy yordamda, bu erda katta til modeli parvozlarni bron qilish, pul o'tkazish yoki soliq bilan bog'liq masalalarda yordam berish kabi vazifalarni hal qilishi mumkin.
Bundan tashqari, yangi fanlarni o'rganish va o'rganishga ta'siri juda katta, chunki til modeli butun o'quv dasturiga havola qilishi va o'rganish jarayonini tezlashtirishi mumkin. Kodlash, ma'lumotlarni tahlil qilish va ma'lumotlar faniga ham ushbu yutuqlar katta ta'sir ko'rsatishi kutilmoqda.
Eng qiziqarli istiqbollardan biri bu yirik til modellarini kompaniyaning mavjud ma'lumotlariga, masalan, mijozlar ma'lumotlari yoki marketing ma'lumotlariga ulashdir. Meta API yoki Google API kabi ilg'or API bilan integratsiya ma'lumotlar tahlili va ma'lumotlar fanida eksponensial taraqqiyotni va'da qiladi.
Qanday qilib veb-sahifa yaratish (demo)
Hozirda Langchain Python va JavaScript paketlari sifatida mavjud.
Biz LangChain kontseptsiyasini amalga oshirish uchun Streamlit, LangChain va OpenAI GPT-3 modelidan foydalangan holda namoyish veb-ilovasini yaratishimiz mumkin.
Lekin birinchi navbatda, Streamlit, LangChain va OpenAI kabi bir nechta bog'liqliklarni o'rnatishimiz kerak.
Pre-rekvizitlar
Streamlit: Ma'lumotlar faniga oid veb-ilovalarni yaratish uchun mashhur Python to'plami
OpenAI: OpenAI ning GPT-3 til modeliga kirish kerak.
Ushbu bog'liqliklarni o'rnatish uchun cmd da quyidagi buyruqlardan foydalaning:
pip install streamlit
pip install langchain
pip install openai
Import paketlari
Biz OpenAI, LangChain va Streamlit kabi kerakli paketlarni import qilishdan boshlaymiz. Bizning til modellari zanjirlari LangChain’ning uchta sinfi yordamida aniqlanadi va bajariladi: LLMCain, SimpleSequentialChain va PromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Asosiy O'rnatish
Loyihamizning strukturaviy asosi Streamlit sintaksisi yordamida yaratildi. Biz ilovaga “Nima HAQIQIY: Oddiy ketma-ket zanjirdan foydalanish” sarlavhasini berdik va ilovaning ilhom manbai boʻlgan GitHub omboriga belgilash havolasini kiritdik.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Front-end vidjetlari
Biz dasturni oddiy Streamlit sintaksisidan foydalanib, bir nechta tegishli ma'lumotlar bilan o'rnatdik:
# 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")
Front-end vidjetlarini qo'shish uchun
Bundan tashqari, foydalanuvchilarga har qanday savolni kiritish uchun kirish vidjetini taqdim etishimiz kerak.
# 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?",
)
Hammasi tayyor! Zanjirlar ishga tushdi!
Biz bilan birgalikda turli xil operatsiyalar zanjirlarini ishlatamiz SimpleSequentialChain
foydalanuvchi so'roviga javob berish uchun. Foydalanuvchi tanlaganda zanjirlar quyidagi ketma-ketlikda amalga oshiriladi "Tell me about it"
tugmasi:
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
: bizning quvur liniyasimizdagi birinchi qadam bo'lib, foydalanuvchi savolini kirish va chiqish sifatida qabul qiladi. Foydalanuvchi so'rovi zanjir shabloniga xizmat qiladi.- Savolga bog'langan bayonotga asoslanib,
assumptions_chain
dan olingan ma'lumotlardan foydalangan holda taxminlar ro'yxatini yaratadiquestion_chain
kirish sifatida. TheLLMChain
vaOpenAI
Bayonotni tuzish uchun LangChain modelidan foydalanilgan. Foydalanuvchiga ushbu zanjir uchun shablondan foydalangan holda bayonot yaratish uchun qilingan taxminlar ro'yxatini yaratish vazifasi yuklangan. - dan olingan natijalar asosida
question_chain
vaassumptions_chain
,fact_checker_chain
o'q nuqtalari ko'rinishidagi tasdiqlar ro'yxatini hosil qiladi. Da'volar yordamida ishlab chiqariladiOpenAI
model vaLLMChain
LangChain'dan. Foydalanuvchiga har bir da'voning to'g'ri yoki noto'g'ri ekanligini aniqlash va ularni asoslash vazifasi yuklanadi. - The
answer_chain
dan olingan natijalardan foydalanadiquestion_chain
,assumptions_chain
vafact_checker_chain
oldingi zanjirlar tomonidan ishlab chiqarilgan ma'lumotlardan foydalangan holda foydalanuvchining savoliga javob yaratish uchun kirishlar sifatida. Ushbu zanjir uchun shablon foydalanuvchidan yaratilgan faktlardan foydalangan holda birinchi so'rovga javob berishini so'raydi. - Oldingi zanjirlar tomonidan ishlab chiqarilgan ma'lumotlarga asoslangan foydalanuvchi so'roviga yakuniy javob berish uchun biz ushbu zanjirlarni umumiy zanjirga birlashtiramiz. Zanjirlar tugagandan so'ng, biz foydalanamiz
st.success()
foydalanuvchiga yechimni ko'rsatish uchun.
Xulosa
dan foydalanib, murakkabroq quvurlarni yaratish uchun biz turli xil til modeli harakatlarini oddiygina zanjirlashimiz mumkin SimpleSequentialChain
LangChain moduli. Turli xil NLP ilovalari, jumladan chatbotlar, savol-javob tizimlari va tilni tarjima qilish vositalari uchun bu juda foydali bo'lishi mumkin.
LangChain-ning yorqinligi uning mavhumlik qobiliyatida topiladi, bu foydalanuvchiga tilni modellashtirishning o'ziga xos xususiyatlariga emas, balki dolzarb masalaga e'tibor qaratishga imkon beradi.
LangChain oldindan tayyorlangan modellar va andozalar tanlovini taklif qilish orqali murakkab til modellarini yaratish jarayonini yanada qulayroq qiladi.
Bu sizga o'z ma'lumotlaridan foydalangan holda til modellarini nozik sozlash imkoniyatini beradi, bu esa til modellarini sozlashni osonlashtiradi. Bu ma'lum bir ish uchun o'qitilgan modellardan ustunroq bo'lgan aniqroq, domenga xos modellarni ishlab chiqish imkonini beradi.
The SimpleSequentialChain
moduli va LangChain-ning boshqa xususiyatlari uni murakkab NLP tizimlarini tez ishlab chiqish va joylashtirish uchun samarali vositaga aylantiradi.
Leave a Reply