LangChain, Böyük Dil Modellərinin (LLM) gücündən istifadə etmək üçün hazırlanmış qabaqcıl və möhkəm bir vasitədir.
Bu LLM-lər diqqətəlayiq imkanlara malikdir və çoxlu tapşırıqların öhdəsindən səmərəli şəkildə gələ bilər. Bununla belə, qeyd etmək vacibdir ki, onların gücü dərin domen təcrübəsindən daha çox ümumi təbiətindədir. GPT-4 tətbiqindən sonra onun populyarlığı sürətlə artdı.
LLM-lər müxtəlif tapşırıqların öhdəsindən gəlməkdə üstün olsalar da, xüsusi cavablar vermək və ya dərin domen biliyi tələb edən tapşırıqların həllinə gəldikdə məhdudiyyətlərlə üzləşə bilərlər. Məsələn, suallara cavab vermək və ya tibb və ya hüquq kimi ixtisaslaşdırılmış sahələrdə tapşırıqları yerinə yetirmək üçün LLM-dən istifadə etməyi düşünün.
LLM, şübhəsiz ki, bu sahələr haqqında ümumi sorğulara cavab verə bilsə də, xüsusi bilik və ya təcrübə tələb edən daha ətraflı və ya nüanslı cavablar təklif etməkdə çətinlik çəkə bilər.
Bunun səbəbi, LLM-lərin müxtəlif mənbələrdən gələn böyük həcmdə mətn məlumatı üzərində təlim keçmələri, onlara nümunələri öyrənməyə, kontekstini başa düşməyə və ardıcıl cavablar yaratmağa imkan verir. Bununla belə, onların təlimi adətən bu sahələr üzrə insan ekspertləri ilə eyni dərəcədə domenə xas və ya xüsusi biliklərin əldə edilməsini əhatə etmir.
Buna görə də, LangChain, LLM-lərlə birlikdə geniş tapşırıqlar üçün əvəzolunmaz bir vasitə ola bilsə də, müəyyən vəziyyətlərdə dərin domen təcrübəsinin hələ də lazım ola biləcəyini qəbul etmək vacibdir. İxtisaslaşdırılmış biliyə malik insan ekspertləri yalnız LLM-lərin imkanlarından kənarda ola biləcək lazımi dərinliyi, nüanslı anlayışı və kontekstlə bağlı fikirləri təmin edə bilər.
LangChain-in sənədlərinə baxmağı məsləhət görürük və ya Github onun tipik istifadə hallarını daha ətraflı başa düşmək üçün depo. Bu paketin daha böyük şəklini əldə etmək tövsiyə olunur.
Bu necə işləyir?
LangChain-in məqsədini və işini başa düşmək üçün praktiki bir nümunəni nəzərdən keçirək. Biz bilirik ki, GPT-4 təsirli ümumi biliyə malikdir və çoxlu suallara etibarlı cavablar verə bilər.
Bununla belə, şəxsi sənəd, kitab, PDF faylı və ya mülkiyyət verilənlər bazası kimi öz məlumatlarımızdan xüsusi məlumat istəsək nə olar?
LangChain bizə qoşulmağa imkan verir böyük dil modeli GPT-4 kimi öz məlumat mənbələrimizə. Bu, sadəcə bir mətn parçasının söhbət interfeysinə yapışdırılmasından kənara çıxır. Bunun əvəzinə biz öz məlumatlarımızla doldurulmuş bütün verilənlər bazasına istinad edə bilərik.
İstədiyiniz məlumatı əldə etdikdən sonra LangChain bizə konkret tədbirlər görməkdə kömək edə bilər. Məsələn, biz ona müəyyən təfərrüatları ehtiva edən e-poçt göndərməyi göstəriş verə bilərik.
Buna nail olmaq üçün biz LangChain istifadə edərək boru kəməri yanaşmasına əməl edirik. Əvvəlcə istədiyimiz sənədi götürürük dil modeli istinad etmək və daha kiçik parçalara bölmək. Bu parçalar daha sonra əlavələr kimi saxlanılır Vektor verilənlər bazasında mətnin vektor təsvirləri.
Bu quraşdırma ilə biz standart boru xəttini izləyən dil modeli tətbiqləri qura bilərik: istifadəçi ilkin sual verir, sonra isə dil modelinə göndərilir. Sualın vektor təsviri Vektor verilənlər bazasında oxşarlıq axtarışını həyata keçirmək üçün istifadə olunur, müvafiq məlumat hissələrini əldə edir.
Bu parçalar sonra dil modelinə qaytarılır, ona cavab vermək və ya istədiyiniz hərəkəti etmək imkanı verir.
LangChain verilənlərdən xəbərdar olan proqramların inkişafını asanlaşdırır, çünki biz vektor mağazasında öz məlumatlarımıza istinad edə bilərik və suallara cavab verməkdən əlavə tədbirlər görə biləcəyimiz üçün orijinaldır. T
onun çoxlu praktiki istifadə halları açır, xüsusən də şəxsi yardımda, burada böyük dilli model uçuşları sifariş etmək, pul köçürmək və ya vergi ilə bağlı məsələlərdə köməklik göstərmək kimi vəzifələri həll edə bilər.
Bundan əlavə, yeni fənlərin öyrənilməsi və öyrənilməsi üçün təsirlər əhəmiyyətlidir, çünki dil modeli bütün proqrama istinad edə və öyrənmə prosesini sürətləndirə bilər. Kodlaşdırma, məlumat təhlili və məlumat elminin də bu irəliləyişlərdən böyük təsir alacağı gözlənilir.
Ən maraqlı perspektivlərdən biri böyük dil modellərinin müştəri məlumatları və ya marketinq məlumatları kimi mövcud şirkət məlumatlarına qoşulmasıdır. Meta API və ya Google API kimi qabaqcıl API-lərlə bu inteqrasiya məlumat analitikasında və məlumat elmində eksponensial irəliləyiş vəd edir.
Veb səhifəni necə qurmaq olar (Demo)
Hal-hazırda Langchain Python və JavaScript Paketləri kimi mövcuddur.
LangChain konsepsiyasını həyata keçirmək üçün Streamlit, LangChain və OpenAI GPT-3 modelindən istifadə edərək nümayiş Veb Proqramı yarada bilərik.
Ancaq əvvəlcə Streamlit, LangChain və OpenAI daxil olmaqla bir neçə asılılıq quraşdırmalıyıq.
Ön şərtlər
Streamlit: Məlumat elmi ilə əlaqəli veb proqramlar yaratmaq üçün məşhur Python paketi
OpenAI: OpenAI-nin GPT-3 dil modelinə giriş tələb olunur.
Bu asılılıqları quraşdırmaq üçün cmd-də aşağıdakı əmrlərdən istifadə edin:
pip install streamlit
pip install langchain
pip install openai
Paketləri idxal edin
OpenAI, LangChain və Streamlit kimi tələb olunan paketləri idxal etməklə başlayırıq. Dil modeli zəncirlərimiz LangChain-dən üç sinifdən istifadə etməklə müəyyən edilir və icra edilir: LLMCain, SimpleSequentialChain və PromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Basic Setup
Layihəmizin struktur əsası daha sonra Streamlit sintaksisindən istifadə etməklə quruldu. Biz proqrama “HƏQİQİ OLAN: Sadə Ardıcıl Zəncirdən İstifadə” başlığını verdik və tətbiqin ilham mənbəyi kimi xidmət edən GitHub repozitoriyasına işarələmə linkini daxil etdik.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Front-End Widgets
Sadə Streamlit sintaksisindən istifadə edərək proqramı bir neçə müvafiq məlumatla quraşdırdıq:
# 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 vidjetləri əlavə etmək üçün
Bundan əlavə, istifadəçilərimizə istənilən sualı daxil etmək imkanı vermək üçün daxiletmə vidceti təqdim etməliyik.
# 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?",
)
Hər şey hazırdır! Zəncirlər işləyir və işləyir!
ilə birlikdə müxtəlif əməliyyat zəncirlərindən istifadə edirik SimpleSequentialChain
istifadəçinin sorğusuna cavab vermək üçün. İstifadəçi seçdiyi zaman zəncirlər aşağıdakı ardıcıllıqla həyata keçirilir "Tell me about it"
düyməsini:
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
: boru kəmərimizdə ilk addım olan istifadəçinin sualını giriş və çıxış kimi qəbul edir. İstifadəçinin sorğusu zəncirin şablonu kimi xidmət edir.- Sualla əlaqəli bəyanata əsasən,
assumptions_chain
çıxışından istifadə edərək fərziyyələrin güllə nöqtəsi siyahısını yaradırquestion_chain
giriş kimi. TheLLMChain
vəOpenAI
Bəyanatın qurulması üçün LangChain-in modeli istifadə edilmişdir. İstifadəçiyə bu zəncir üçün şablondan istifadə edərək bəyanat hazırlamaq üçün edilmiş fərziyyələrin siyahısını yaratmaq tapşırılıb. - Nəticələrə əsasən
question_chain
vəassumptions_chain
Ki,fact_checker_chain
güllə nöqtələri şəklində təsdiqlərin siyahısını yaradır. İddialar istifadə edərək hazırlanırOpenAI
model vəLLMChain
LangChain-dən. İstifadəçiyə hər bir iddianın doğru və ya yanlış olduğunu müəyyən etmək və olanlar üçün əsaslandırma təqdim etmək tapşırılıb. - The
answer_chain
olan çıxışlardan istifadə edirquestion_chain
,assumptions_chain
vəfact_checker_chain
əvvəlki zəncirlər tərəfindən istehsal olunan məlumatlardan istifadə edərək istifadəçinin sualına cavab yaratmaq üçün giriş kimi. Bu zəncir üçün şablon istifadəçinin yaradılmış faktlardan istifadə edərək ilk sorğuya cavab verməsini tələb edir. - Əvvəlki zəncirlər tərəfindən hazırlanmış məlumat əsasında istifadəçi sorğusuna son cavab vermək üçün biz bu zəncirləri ümumi zəncirə inteqrasiya edirik. Zəncirlər tamamlandıqdan sonra istifadə edirik
st.success()
istifadəçiyə həllini göstərmək üçün.
Nəticə
istifadə edərək daha mürəkkəb boru kəmərləri yaratmaq üçün müxtəlif dil model hərəkətlərini sadəcə zəncirləyə bilərik SimpleSequentialChain
LangChain modulu. Çatbotlar, sual-cavab sistemləri və dil tərcümə alətləri də daxil olmaqla, geniş çeşiddə NLP tətbiqləri üçün bu olduqca faydalı ola bilər.
LangChain-in parlaqlığı onun mücərrədlik qabiliyyətindədir ki, bu da istifadəçiyə dil modelləşdirməsinin xüsusiyyətlərinə deyil, cari məsələyə diqqət yetirməyə imkan verir.
LangChain qabaqcadan öyrədilmiş modellər və müxtəlif şablonlar təklif etməklə mürəkkəb dil modellərinin yaradılması prosesini daha istifadəçi dostu edir.
Bu, sizə öz məlumatlarından istifadə edərək dil modellərini dəqiq tənzimləmək imkanı verir və dil modellərini fərdiləşdirməyi asanlaşdırır. Bu, müəyyən bir iş üçün təlim keçmiş modelləri üstələyən daha dəqiq, domenə xas modellərin işlənib hazırlanmasına imkan verir.
The SimpleSequentialChain
modulu və LangChain-in digər xüsusiyyətləri onu mürəkkəb NLP sistemlərini tez bir zamanda inkişaf etdirmək və yerləşdirmək üçün effektiv vasitə halına gətirir.
Cavab yaz