LangChain - бул Large Language Models (LLMs) күчүн колдонуу үчүн иштелип чыккан заманбап жана бекем курал.
Бул LLMs укмуштуудай мүмкүнчүлүктөргө ээ жана натыйжалуу милдеттердин кеңири спектрин чече алат. Бирок, алардын күчү терең домендик экспертизадан көрө, алардын жалпы табиятында экенин белгилей кетүү маанилүү. Анын популярдуулугу GPT-4 киргизилгенден бери тездик менен өстү.
LLM ар кандай тапшырмаларды аткарууда мыкты болгону менен, алар конкреттүү жоопторду берүүгө же терең домендик билимди талап кылган милдеттерди чечүүгө келгенде чектөөлөргө дуушар болушу мүмкүн. Мисалы, суроолорго жооп берүү же медицина же мыйзам сыяктуу адистештирилген тармактарда тапшырмаларды аткаруу үчүн LLMди колдонууну карап көрөлү.
LLM, албетте, бул тармактар боюнча жалпы суроолорго жооп бере алат, ал эми атайын билимди же экспертизаны талап кылган кененирээк же нюанстуу жоопторду сунушташы мүмкүн.
Себеби, LLMлер ар түрдүү булактардан алынган чоң көлөмдөгү текст маалыматтарына үйрөтүлүп, аларга үлгүлөрдү үйрөнүүгө, контекстти түшүнүүгө жана ырааттуу жоопторду түзүүгө мүмкүндүк берет. Бирок, алардын тренинги, адатта, бул тармактардагы адам эксперттери менен бирдей деңгээлде доменге тиешелүү же атайын билимдерди алууну камтыбайт.
Ошондуктан, LangChain, LLM менен бирге, милдеттердин кеңири спектри үчүн баа жеткис инструмент боло алат, ал эми терең домендик экспертиза белгилүү бир жагдайларда дагы деле зарыл болушу мүмкүн экенин моюнга алуу маанилүү. Атайын билими бар адам эксперттери керектүү тереңдикти, нюанстарды түшүнүүнү жана контекстке тиешелүү түшүнүктөрдү камсыздай алат, бул бир гана LLMдин мүмкүнчүлүктөрүнөн тышкары болушу мүмкүн.
Биз LangChain документтерин карап чыгууну сунуштайбыз же GitHub анын типтүү колдонуу учурларын кылдат түшүнүү үчүн репозиторий. Бул таңгактын чоңураак сүрөтүн алуу сунушталат.
Бул кантип иштейт?
LangChain максатын жана ишин түшүнүү үчүн, практикалык мисал карап көрөлү. Биз GPT-4 таасирдүү жалпы билимге ээ экенин жана суроолордун кеңири спектрине ишенимдүү жооп бере аларын билебиз.
Бирок, жеке документ, китеп, PDF файлы же менчик маалымат базасы сыяктуу өзүбүздүн маалыматтардан конкреттүү маалыматты кааласакчы?
LangChain бизге туташтырууга мүмкүндүк берет чоң тил модели GPT-4 сыяктуу өзүбүздүн маалымат булактарыбызга. Бул жөн гана тексттин үзүндүсүн чат интерфейсине чаптоо менен чектелбейт. Анын ордуна, биз өзүбүздүн маалыматтарыбыз менен толтурулган толук маалымат базасына шилтеме кыла алабыз.
Биз керектүү маалыматты алгандан кийин, LangChain бизге конкреттүү чараларды көрүүгө жардам берет. Мисалы, биз ага белгилүү бир деталдарды камтыган электрондук кат жөнөтүүнү буйруй алабыз.
Буга жетишүү үчүн, биз LangChain аркылуу куур ыкмасын карманабыз. Биринчиден, биз каалаган документти алабыз тил модели шилтеме берүү жана аны майда бөлүктөргө бөлүү. Бул бөлүкчөлөр андан кийин кыстармалар катары сакталат, алар Вектордук маалымат базасында тексттин вектордук көрүнүштөрү.
Бул орнотуу менен биз стандарттык конвейерди ээрчиген тил моделинин тиркемелерин кура алабыз: колдонуучу баштапкы суроону берет, андан кийин тил моделине жөнөтүлөт. Суроонун вектордук көрүнүшү Вектордук маалыматтар базасында окшоштуктарды издөө үчүн колдонулат, маалыматтын тиешелүү бөлүктөрүн алуу.
Андан кийин бул бөлүктөр тил моделине кайтарылып берилет, бул ага жооп берүүгө же каалаган аракетти жасоого мүмкүндүк берет.
LangChain маалыматтардан кабардар болгон тиркемелерди иштеп чыгууга көмөктөшөт, анткени биз вектордук дүкөндө өзүбүздүн маалыматтарыбызга шилтеме жасай алабыз жана алар суроолорго жооп берүүдөн тышкары иш-аракеттерди жасай алышат. Т
анын көптөгөн практикалык колдонуу учурларын ачат, айрыкча жеке жардамда, мында чоң тил модели каттамдарды брондоо, акча которуу же салыкка байланыштуу маселелерди чечүүгө жардам берет.
Кошумчалай кетсек, жаңы предметтерди окуп-үйрөнүү үчүн мааниси зор, анткени тил модели бүтүндөй программага шилтеме жасап, окуу процессин тездетет. Коддоо, маалыматтарды талдоо жана маалымат илими да бул жетишкендиктерден чоң таасир этет деп күтүлүүдө.
Эң кызыктуу перспективалардын бири чоң тил моделдерин кардарлардын маалыматы же маркетинг маалыматтары сыяктуу учурдагы компания маалыматтарына туташтыруу болуп саналат. Бул Meta's API же Google'дун API сыяктуу өркүндөтүлгөн API'лери менен интеграция маалымат аналитикасында жана маалымат илиминде экспоненциалдуу прогрессти убада кылат.
Веб-баракчаны кантип куруу керек (демо)
Учурда Langchain Python жана JavaScript пакеттери катары жеткиликтүү.
LangChain концепциясын ишке ашыруу үчүн Streamlit, LangChain жана OpenAI GPT-3 моделин колдонуу менен демонстрациялык Web App түзө алабыз.
Бирок, биринчиден, биз Streamlit, LangChain жана OpenAI сыяктуу бир нече көз карандылыкты орнотушубуз керек.
Алдын-ала шарттар
Streamlight: Маалымат илимине байланыштуу веб тиркемелерди түзүү үчүн популярдуу Python пакети
OpenAI: OpenAIдин GPT-3 тил моделине кирүү керек.
Бул көз карандылыкты орнотуу үчүн, cmd ичинде төмөнкү буйруктарды колдонуңуз:
pip install streamlit
pip install langchain
pip install openai
Пакеттерди импорттоо
Биз OpenAI, LangChain жана Streamlit сыяктуу керектүү пакеттерди импорттоодон баштайбыз. Биздин тил моделинин чынжырчалары LangChainдин үч классынын жардамы менен аныкталат жана аткарылат: LLMCain, 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
: биздин конвейердеги биринчи кадам, колдонуучунун суроосун киргизүү жана чыгаруу катары кабыл алат. Колдонуучунун суроосу чынжырдын үлгүсү катары кызмат кылат.- деген суроого байланышкан билдирүүгө таянып,
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 системаларын тез иштеп чыгуу жана жайылтуу үчүн эффективдүү куралга айлантат.
Таштап Жооп