LangChain yra pažangiausias ir tvirtas įrankis, sukurtas panaudoti didelių kalbų modelių (LLM) galią.
Šie LLM turi puikių galimybių ir gali efektyviai susidoroti su įvairiomis užduotimis. Tačiau svarbu pažymėti, kad jų stiprybė slypi bendrame pobūdyje, o ne nuodugnioje srities žinioje. Jo populiarumas sparčiai išaugo nuo GPT-4 įvedimo.
Nors LLM puikiai atlieka įvairias užduotis, jie gali susidurti su apribojimais, kai reikia pateikti konkrečius atsakymus arba spręsti užduotis, kurioms reikalingos gilios srities žinios. Pavyzdžiui, apsvarstykite galimybę naudoti LLM, kad atsakytumėte į klausimus arba atliktumėte užduotis tokiose specializuotose srityse kaip medicina ar teisė.
Nors LLM tikrai gali atsakyti į bendrus užklausas apie šias sritis, jai gali būti sunku pasiūlyti išsamesnius ar niuansesnius atsakymus, kuriems reikia specialių žinių ar patirties.
Taip yra todėl, kad LLM mokomi naudoti didžiulius tekstinių duomenų kiekius iš įvairių šaltinių, todėl jie gali mokytis modelių, suprasti kontekstą ir generuoti nuoseklius atsakymus. Tačiau jų mokymas paprastai neapima konkrečios srities ar specializuotų žinių įgijimo tokiu pačiu mastu, kaip tų sričių ekspertai.
Todėl, nors „LangChain“ kartu su LLM gali būti neįkainojamas įrankis įvairioms užduotims atlikti, svarbu pripažinti, kad tam tikrose situacijose vis tiek gali prireikti gilios srities patirties. Žmonių ekspertai, turintys specialių žinių, gali suteikti reikiamo gylio, niuansų supratimo ir konkrečių konteksto įžvalgų, kurios gali būti ne tik LLM galimybės.
Rekomenduojame peržiūrėti „LangChain“ dokumentus arba GitHub saugyklą, kad būtų galima nuodugniau suprasti tipinius jos naudojimo atvejus. Primygtinai rekomenduojama gauti didesnį šio paketo vaizdą.
Kaip tai veikia?
Norėdami suprasti „LangChain“ paskirtį ir darbą, panagrinėkime praktinį pavyzdį. Žinome, kad GPT-4 turi įspūdingų bendrųjų žinių ir gali pateikti patikimus atsakymus į įvairius klausimus.
Tačiau ką daryti, jei norime konkrečios informacijos iš savo duomenų, pvz., asmens dokumento, knygos, PDF failo ar patentuotos duomenų bazės?
LangChain leidžia mums sujungti a didelis kalbos modelis kaip GPT-4 mūsų pačių duomenų šaltiniams. Tai apima ne tik teksto fragmento įklijavimą į pokalbio sąsają. Vietoj to galime nurodyti visą duomenų bazę, užpildytą mūsų pačių duomenimis.
Kai tik gausime norimą informaciją, „LangChain“ gali padėti mums atlikti konkrečius veiksmus. Pavyzdžiui, galime nurodyti jai išsiųsti el. laišką su tam tikra informacija.
Norėdami tai pasiekti, naudojame „LangChain“ metodą. Pirmiausia paimame norimą dokumentą kalbos modelis nurodyti ir padalyti į mažesnius gabalus. Tada šie gabaliukai saugomi kaip įterpimai, kurie yra vektoriniai teksto atvaizdai vektorinėje duomenų bazėje.
Naudodami šią sąranką galime sukurti kalbos modelio programas, kurios atitinka standartinį konvejerį: vartotojas užduoda pradinį klausimą, kuris vėliau siunčiamas kalbos modeliui. Klausimo vektorinis vaizdavimas naudojamas atlikti panašumo paiešką vektorių duomenų bazėje, nuskaitant atitinkamas informacijos dalis.
Tada šios dalys grąžinamos į kalbos modelį, leidžiantį pateikti atsakymą arba atlikti norimą veiksmą.
„LangChain“ palengvina duomenų žinančių taikomųjų programų kūrimą, nes vektorių saugykloje galime nurodyti savo duomenis, ir autentiškas, nes jos gali imtis veiksmų, ne tik atsakyti į klausimus. T
jis atveria daugybę praktinių panaudojimo atvejų, ypač teikiant asmeninę pagalbą, kai didelės kalbos modelis gali atlikti tokias užduotis kaip skrydžių užsakymas, pinigų pervedimas ar pagalba su mokesčiais susijusiais klausimais.
Be to, naujų dalykų studijavimas ir mokymasis yra reikšmingas, nes kalbos modelis gali nurodyti visą programą ir pagreitinti mokymosi procesą. Tikimasi, kad ši pažanga labai paveiks kodavimą, duomenų analizę ir duomenų mokslą.
Viena iš įdomiausių perspektyvų yra didelių kalbų modelių prijungimas prie esamų įmonės duomenų, tokių kaip klientų informacija ar rinkodaros duomenys. Ši integracija su pažangiomis API, tokiomis kaip „Meta“ API arba „Google“ API, žada eksponentinę duomenų analizės ir duomenų mokslo pažangą.
Kaip sukurti tinklalapį (demonstracinė versija)
Šiuo metu „Langchain“ galima įsigyti kaip „Python“ ir „JavaScript“ paketus.
Galime sukurti demonstracinę žiniatinklio programą naudodami „Streamlit“, „LangChain“ ir „OpenAI GPT-3“ modelį, kad įgyvendintume „LangChain“ koncepciją.
Tačiau pirmiausia turime įdiegti keletą priklausomybių, įskaitant Streamlit, LangChain ir OpenAI.
Būtinos sąlygos
Srautas: Populiarus Python paketas, skirtas kurti su duomenų mokslu susijusias žiniatinklio programas
OpenAI: Reikia prieigos prie OpenAI GPT-3 kalbos modelio.
Norėdami įdiegti šias priklausomybes, naudokite šias komandas cmd:
pip install streamlit
pip install langchain
pip install openai
Importuoti paketus
Pradedame importuodami reikiamus paketus, tokius kaip OpenAI, LangChain ir Streamlit. Mūsų kalbų modelių grandinės yra apibrėžtos ir vykdomos naudojant tris „LangChain“ klases: LLMChain, SimpleSequentialChain ir PromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Pagrindinė sąranka
Tada mūsų projekto struktūrinis pagrindas buvo sukurtas naudojant Streamlit sintaksę. Programai suteikėme pavadinimą „Kas TRUE: naudojant paprastą nuoseklią grandinę“ ir įtraukėme nuorodą į „GitHub“ saugyklą, kuri buvo programos įkvėpimo šaltinis.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Front-End valdikliai
Mes nustatėme programą naudodami keletą svarbios informacijos, naudodami paprastą Streamlit sintaksę:
# 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")
Norėdami pridėti priekinių valdiklių
Be to, turime pateikti įvesties valdiklį, kad vartotojai galėtų įvesti bet kokius klausimus.
# 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?",
)
Viskas padaryta! Grandinės yra ir veikia!
Kartu dirbame su įvairiomis operacijų grandinėmis SimpleSequentialChain
atsakyti į vartotojo užklausą. Grandinės atliekamos tokia seka, kai vartotojas pasirenka "Tell me about it"
mygtukas:
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
: kuris yra pirmasis žingsnis mūsų konvejeryje, gauna vartotojo klausimą kaip įvestį ir išvestį. Vartotojo užklausa naudojama kaip grandinės šablonas.- Remiantis teiginiu, susietu su klausimu,
assumptions_chain
sugeneruoja ženklinį prielaidų sąrašą, naudodamas išvestį išquestion_chain
kaip įvestis. TheLLMChain
irOpenAI
Teiginiui sudaryti buvo naudojamas LangChain modelis. Vartotojui pavesta sudaryti prielaidų, kurios buvo padarytos norint sudaryti teiginį naudojant šios grandinės šabloną, sąrašą. - Remiantis išėjimais iš
question_chain
irassumptions_chain
,fact_checker_chain
sugeneruoja tvirtinimų sąrašą ženklelių pavidalu. Pretenzijos pateikiamos naudojantOpenAI
modelis irLLMChain
iš LangChain. Vartotojui pavesta nustatyti, ar kiekvienas teiginys yra tikslus, ar neteisingas, ir pagrįsti tuos, kurie yra teisingi. - Šios
answer_chain
naudoja išvestis išquestion_chain
,assumptions_chain
irfact_checker_chain
kaip įvestis, kad būtų sukurtas atsakymas į vartotojo klausimą naudojant ankstesnių grandinių duomenis. Šios grandinės šablonas reikalauja, kad vartotojas atsakytų į pirmąją užklausą naudodamas sukurtus faktus. - Siekdami pateikti galutinį atsakymą į vartotojo užklausą, pagrįstą ankstesnių grandinių pateikta informacija, integruojame šias grandines į bendrą grandinę. Užbaigus grandines, naudojame
st.success()
parodyti vartotojui sprendimą.
Išvada
Galime tiesiog sujungti skirtingus kalbos modelio veiksmus, kad sukurtume sudėtingesnius vamzdynus naudodami SimpleSequentialChain
LangChain modulis. Tai gali būti labai naudinga įvairioms NLP programoms, įskaitant pokalbių robotus, klausimų ir atsakymų sistemas ir kalbos vertimo įrankius.
LangChain spindesys slypi jo gebėjime abstrahuoti, o tai leidžia vartotojui sutelkti dėmesį į esamą problemą, o ne į kalbos modeliavimo specifiką.
„LangChain“ palengvina sudėtingų kalbos modelių kūrimo procesą, nes siūlo iš anksto paruoštus modelius ir šablonų pasirinkimą.
Tai suteikia galimybę tiksliai sureguliuoti kalbų modelius naudojant jų pačių duomenis, todėl lengva tinkinti kalbų modelius. Tai leidžia sukurti tikslesnius, konkrečiai domenui būdingus modelius, kurie tam tikram darbui pranoksta mokomus modelius.
Šios SimpleSequentialChain
modulis ir kitos LangChain funkcijos daro jį veiksmingu įrankiu greitai kuriant ir diegiant sudėtingas NLP sistemas.
Palikti atsakymą