LangChain on huippuluokan ja vankka työkalu, joka on kehitetty hyödyntämään suurten kielimallien (LLM) tehoa.
Näillä LLM:illä on merkittäviä kykyjä ja ne voivat hoitaa tehokkaasti monenlaisia tehtäviä. On kuitenkin tärkeää huomata, että niiden vahvuus piilee niiden yleisessä luonteessa pikemminkin kuin syvällisessä toimialan asiantuntemuksessa. Sen suosio on kasvanut nopeasti GPT-4:n käyttöönoton jälkeen.
Vaikka LLM:t ovat erinomaisia eri tehtävien käsittelyssä, he saattavat kohdata rajoituksia, kun on kyse erityisten vastausten antamisesta tai tehtävistä, jotka vaativat syvällistä aluetuntemusta. Harkitse esimerkiksi LLM:n käyttämistä kysymyksiin vastaamiseen tai tehtävien suorittamiseen erikoisaloilla, kuten lääketiede tai laki.
Vaikka LLM voi varmasti vastata yleisiin näitä aloja koskeviin tiedusteluihin, sillä voi olla vaikeuksia tarjota yksityiskohtaisempia tai vivahteikkaampia vastauksia, jotka edellyttävät erikoisosaamista tai asiantuntemusta.
Tämä johtuu siitä, että LLM:t ovat koulutettuja käyttämään valtavia määriä tekstidataa eri lähteistä, minkä ansiosta he voivat oppia malleja, ymmärtää kontekstia ja tuottaa johdonmukaisia vastauksia. Heidän koulutuksensa ei kuitenkaan yleensä sisällä alakohtaista tai erikoistuneen tiedon hankkimista samassa määrin kuin näiden alojen inhimilliset asiantuntijat.
Vaikka LangChain yhdessä LLM:iden kanssa voi olla korvaamaton työkalu monenlaisiin tehtäviin, on tärkeää ymmärtää, että syvällinen toimialueen asiantuntemus saattaa silti olla tarpeen tietyissä tilanteissa. Ihmisasiantuntijat, joilla on erikoisosaamista, voivat tarjota tarvittavan syvyyden, vivahteikkaan ymmärryksen ja kontekstikohtaisia oivalluksia, jotka saattavat olla LLM:n kykyjen ulkopuolella.
Suosittelemme katsomaan LangChainin asiakirjoja tai GitHub arkistoon, jotta voit ymmärtää sen tyypillisiä käyttötapauksia perusteellisemmin. On erittäin suositeltavaa saada suurempi kuva tästä paketista.
Kuinka se toimii?
Ymmärtääksemme LangChainin tarkoituksen ja työn, harkitsemme käytännön esimerkkiä. Tiedämme, että GPT-4:llä on vaikuttava yleistieto ja se voi tarjota luotettavia vastauksia monenlaisiin kysymyksiin.
Mutta entä jos haluamme erityisiä tietoja omista tiedoistamme, kuten henkilökohtaisesta asiakirjasta, kirjasta, PDF-tiedostosta tai omasta tietokannasta?
LangChainin avulla voimme yhdistää a suuri kielimalli kuten GPT-4 omiin tietolähteihimme. Se menee pidemmälle kuin pelkkä tekstikatkelman liittäminen chat-käyttöliittymään. Sen sijaan voimme viitata koko tietokantaan, joka on täytetty omilla tiedoillamme.
Kun olemme saaneet halutut tiedot, LangChain voi auttaa meitä tiettyjen toimien toteuttamisessa. Voimme esimerkiksi ohjeistaa sen lähettämään sähköpostin, joka sisältää tietyt tiedot.
Tämän saavuttamiseksi noudatamme LangChainia käyttävää putkilinjaa. Ensin otamme haluamasi asiakirjan kielimalli viitata ja jakaa se pienempiin osiin. Nämä palaset tallennetaan sitten upotuksina, jotka ovat Tekstin vektoriesitys vektoritietokannassa.
Tällä asetuksella voimme rakentaa kielimallisovelluksia, jotka noudattavat standardiliukulinjaa: käyttäjä kysyy ensimmäisen kysymyksen, joka lähetetään sitten kielimallille. Kysymyksen vektoriesitystä käytetään samankaltaisuushaun suorittamiseen vektoritietokannassa ja haettaessa asiaankuuluvat tietopalat.
Nämä palaset syötetään sitten takaisin kielimalliin, jolloin se voi antaa vastauksen tai suorittaa halutun toiminnon.
LangChain helpottaa datatietoisten sovellusten kehittämistä, koska voimme viitata omaan tietoomme vektorivarastossa, ja aitoja, koska ne voivat toimia muutakin kuin kysymyksiin vastaamista. T
hän avaa lukuisia käytännön käyttötapoja erityisesti henkilökohtaisessa avussa, jossa laajalla kielimallilla voidaan hoitaa tehtäviä, kuten lentojen varaus, rahansiirto tai auttaminen verotusasioissa.
Lisäksi vaikutukset uusien aineiden opiskeluun ja oppimiseen ovat merkittäviä, sillä kielimalli voi viitata koko oppimäärään ja nopeuttaa oppimisprosessia. Näiden edistysten odotetaan myös vaikuttavan suuresti koodaukseen, data-analyysiin ja datatieteeseen.
Yksi jännittävimmistä mahdollisuuksista on suurten kielimallien yhdistäminen olemassa oleviin yritystietoihin, kuten asiakastietoihin tai markkinointitietoihin. Tämä integraatio edistyneiden sovellusliittymien, kuten Metan API:n tai Googlen API:n, kanssa lupaa eksponentiaalista edistystä data-analytiikan ja datatieteen alalla.
Verkkosivun rakentaminen (demo)
Tällä hetkellä Langchain on saatavana Python- ja JavaScript-paketteina.
Voimme luoda demonstraatioverkkosovelluksen käyttämällä Streamlit-, LangChain- ja OpenAI GPT-3 -mallia LangChain-konseptin toteuttamiseksi.
Mutta ensin meidän on asennettava muutama riippuvuus, mukaan lukien Streamlit, LangChain ja OpenAI.
Edellytykset
Virtaviivainen: Suosittu Python-paketti datatieteeseen liittyvien verkkosovellusten luomiseen
OpenAI: Tarvitaan pääsy OpenAI:n GPT-3-kielimalliin.
Asenna nämä riippuvuudet käyttämällä seuraavia komentoja cmd:ssä:
pip install streamlit
pip install langchain
pip install openai
Tuo paketteja
Aloitamme tuomalla tarvittavat paketit, kuten OpenAI, LangChain ja Streamlit. Kielimalliketjumme määritellään ja suoritetaan käyttämällä kolmea LangChainin luokkaa: LLMChain, SimpleSequentialChain ja PromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Perusasetukset
Projektimme rakenteellinen perusta asetettiin sitten käyttämällä Streamlit-syntaksia. Annoimme sovellukselle otsikon "What's TRUE: Using Simple Sequential Chain" ja lisäsimme linkin GitHub-tietovarastoon, joka toimi sovelluksen inspiraationa.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Käyttöliittymän widgetit
Asensimme sovelluksen muutamalla asiaankuuluvalla tiedolla käyttämällä yksinkertaista Streamlit-syntaksia:
# 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")
Käyttöliittymän widgetien lisääminen
Lisäksi meidän on tarjottava syöttöwidget, jotta käyttäjämme voivat kirjoittaa kysymyksiä.
# 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?",
)
Valmista! Ketjut ovat pystyssä!
Työllistämme yhdessä erilaisia toimintaketjuja SimpleSequentialChain
vastataksesi käyttäjän kyselyyn. Ketjut suoritetaan seuraavassa järjestyksessä, kun käyttäjä valitsee "Tell me about it"
painike:
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
: joka on ensimmäinen vaihe prosessissamme, vastaanottaa käyttäjän kysymyksen syötteenä ja tulosteena. Käyttäjän kysely toimii ketjun mallina.- Kysymykseen liittyvän lausunnon perusteella
assumptions_chain
luo luettelomerkkiluettelon oletuksista käyttämällä tulostettaquestion_chain
syötteenä. TheLLMChain
jaOpenAI
Lausekkeen rakentamiseen käytettiin LangChainin mallia. Käyttäjän tehtävänä on luoda luettelo oletuksista, jotka tehtiin lausunnon tuottamiseksi tämän ketjun mallin avulla. - Perustuu ulostuloihin
question_chain
jaassumptions_chain
, Thefact_checker_chain
luo luettelon väitteistä luettelomerkkien muodossa. Väitteet on tuotettu käyttämälläOpenAI
malli jaLLMChain
LangChainista. Käyttäjän tehtävänä on määrittää, ovatko väitteet paikkansapitäviä vai virheellisiä, ja perustella väitteet. - -
answer_chain
käyttää lähtöjäquestion_chain
,assumptions_chain
jafact_checker_chain
syötteinä, joilla luodaan vastaus käyttäjän kysymykseen käyttämällä aikaisempien ketjujen tuottamaa tietoa. Tämän ketjun malli pyytää käyttäjää vastaamaan ensimmäiseen kyselyyn käyttämällä luotuja tietoja. - Voidaksemme tarjota perimmäisen vastauksen käyttäjän tiedusteluihin aikaisempien ketjujen tuottamien tietojen perusteella integroimme nämä ketjut osaksi kokonaisuutta. Kun ketjut on valmis, käytämme
st.success()
näyttää käyttäjälle ratkaisun.
Yhteenveto
Voimme yksinkertaisesti ketjuttaa yhteen erilaisia kielimallitoimintoja luodaksemme monimutkaisempia putkistoja käyttämällä SimpleSequentialChain
LangChainin moduuli. Tämä voi olla hyödyllistä monille erilaisille NLP-sovelluksille, kuten chatboteille, kysymys-vastausjärjestelmille ja kielenkäännöstyökaluille.
LangChainin loisto löytyy sen abstraktiokyvystä, jonka ansiosta käyttäjä voi keskittyä ajankohtaiseen aiheeseen kielen mallinnuksen erityispiirteiden sijaan.
LangChain tekee kehittyneiden kielimallien luomisesta käyttäjäystävällisempää tarjoamalla valmiiksi koulutettuja malleja ja valikoiman malleja.
Se antaa sinulle mahdollisuuden hienosäätää kielimalleja niiden omilla tiedoillaan, mikä tekee kielimallien mukauttamisesta helppoa. Tämä mahdollistaa tarkempien, toimialuekohtaisten mallien kehittämisen, jotka tietyssä työssä ylittävät koulutetut mallit.
- SimpleSequentialChain
moduuli ja muut LangChainin ominaisuudet tekevät siitä tehokkaan työkalun kehittyneiden NLP-järjestelmien nopeaan kehittämiseen ja käyttöönottoon.
Jätä vastaus