LangChain on tipptasemel ja vastupidav tööriist, mis on välja töötatud suurte keelemudelite (LLM) võimsuse ärakasutamiseks.
Nendel LLM-idel on märkimisväärsed võimalused ja nad saavad tõhusalt toime tulla paljude ülesannetega. Siiski on oluline märkida, et nende tugevus seisneb pigem nende üldises olemuses kui põhjalikes valdkonnateadmistes. Selle populaarsus on pärast GPT-4 kasutuselevõttu kiiresti kasvanud.
Kuigi LLM-id saavad suurepäraselt hakkama erinevate ülesannetega, võivad nad konkreetsete vastuste andmisel või sügavaid valdkonnateadmisi nõudvate ülesannete lahendamisel seista piirangutega. Kaaluge näiteks LLM-i kasutamist, et vastata küsimustele või täita ülesandeid erivaldkondades, nagu meditsiin või õigus.
Kuigi LLM suudab kindlasti vastata üldistele päringutele nende valdkondade kohta, võib tal olla raske pakkuda üksikasjalikumaid või nüansirikkamaid vastuseid, mis nõuavad eriteadmisi või -teadmisi.
Selle põhjuseks on asjaolu, et LLM-id on koolitatud suurel hulgal erinevatest allikatest pärit tekstiandmetega, mis võimaldab neil õppida mustreid, mõista konteksti ja luua ühtseid vastuseid. Kuid nende koolitus ei hõlma tavaliselt valdkonnaspetsiifilisi või eriteadmiste omandamist samal määral kui nende valdkondade inimeksperdid.
Seega, kuigi LangChain koos LLM-idega võib olla hindamatu tööriist paljude ülesannete jaoks, on oluline mõista, et teatud olukordades võib siiski vaja minna sügavaid valdkonnateadmisi. Spetsiaalsete teadmistega inimeksperdid suudavad pakkuda vajalikku sügavust, nüansirikkaid arusaamu ja kontekstispetsiifilisi teadmisi, mis võivad olla väljaspool LLM-ide võimalusi.
Soovitame vaadata LangChaini dokumente või GitHub hoidla selle tüüpiliste kasutusjuhtude põhjalikumaks mõistmiseks. Sellest komplektist on tungivalt soovitatav saada suurem pilt.
Kuidas see töötab?
LangChaini eesmärgi ja töö mõistmiseks vaatleme praktilist näidet. Oleme teadlikud, et GPT-4-l on muljetavaldavad üldteadmised ja see võib anda usaldusväärseid vastuseid paljudele küsimustele.
Mis saab aga siis, kui soovime konkreetset teavet oma andmetest, nagu isiklik dokument, raamat, PDF-fail või patenteeritud andmebaas?
LangChain võimaldab meil ühendada a suur keelemudel nagu GPT-4 meie enda andmeallikatele. See läheb kaugemale lihtsalt tekstijupi kleepimisest vestlusliidesesse. Selle asemel saame viidata tervele andmebaasile, mis on täidetud meie enda andmetega.
Kui oleme soovitud teabe kätte saanud, saab LangChain aidata meid konkreetsete toimingute tegemisel. Näiteks saame anda talle käsu saata teatud üksikasju sisaldav meil.
Selle saavutamiseks järgime torujuhtme lähenemisviisi, kasutades LangChaini. Esiteks võtame dokumendi, mida tahame keelemudel viidata ja jagada see väiksemateks tükkideks. Seejärel salvestatakse need tükid manusteks, mis on teksti vektorkujutised vektorandmebaasis.
Selle seadistuse abil saame luua keelemudeli rakendusi, mis järgivad standardset konveieri: kasutaja esitab esialgse küsimuse, mis saadetakse seejärel keelemudelile. Küsimuse vektoresitlust kasutatakse vektorandmebaasis sarnasuse otsimiseks, hankides asjakohased teabetükid.
Need tükid suunatakse seejärel tagasi keelemudelisse, mis võimaldab sellel anda vastuse või teha soovitud toimingu.
LangChain hõlbustab selliste rakenduste arendamist, mis on andmeteadlikud, kuna saame viidata oma andmetele vektorihoidlas, ja autentsed, kuna need võivad lisaks küsimustele vastata. T
see avab palju praktilisi kasutusjuhtumeid, eriti isikliku abistamise puhul, kus suur keelemudel saab hakkama selliste ülesannetega nagu lendude broneerimine, raha ülekandmine või abistamine maksudega seotud küsimustes.
Lisaks on mõju uute ainete õppimisele ja õppimisele märkimisväärne, kuna keelemudel võib viidata tervele ainekavale ja kiirendada õppeprotsessi. Eeldatavasti mõjutavad need edusammud suuresti ka kodeerimist, andmeanalüüsi ja andmeteadust.
Üks põnevamaid väljavaateid on suurte keelemudelite ühendamine olemasolevate ettevõtteandmetega, nagu klienditeave või turundusandmed. See integratsioon täiustatud API-dega, nagu Meta API või Google'i API, lubab andmeanalüütikas ja andmeteaduses plahvatuslikku edu.
Veebilehe loomine (demo)
Praegu on Langchain saadaval Pythoni ja JavaScripti pakettidena.
LangChaini kontseptsiooni rakendamiseks saame luua näidisveebirakenduse, kasutades Streamliti, LangChaini ja OpenAI GPT-3 mudelit.
Kuid kõigepealt peame installima mõned sõltuvused, sealhulgas Streamlit, LangChain ja OpenAI.
Eeltingimused
Vooluvalgus: Populaarne Pythoni pakett andmeteadusega seotud veebirakenduste loomiseks
OpenAI: Vaja on juurdepääsu OpenAI GPT-3 keelemudelile.
Nende sõltuvuste installimiseks kasutage cmd-s järgmisi käske:
pip install streamlit
pip install langchain
pip install openai
Impordi paketid
Alustuseks impordime vajalikud paketid, nagu OpenAI, LangChain ja Streamlit. Meie keelemudelite ahelad on määratletud ja käivitatud kolme LangChaini klassi abil: LLMChain, SimpleSequentialChain ja PromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Basic Setup
Seejärel pandi meie projekti struktuurne alus Streamliti süntaksi abil. Andsime rakendusele pealkirja "Mis on tõsi: lihtsa järjestikuse ahela kasutamine" ja lisasime allahindluslingi GitHubi hoidlale, mis oli rakenduse inspiratsiooniks.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Esiotsa vidinad
Seadistasime rakenduse vähese asjakohase teabega, kasutades lihtsat Streamlit süntaksit:
# 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")
Esiotsa vidinate lisamiseks
Lisaks peame pakkuma sisestusvidinat, mis võimaldab kasutajatel küsimusi sisestada.
# 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?",
)
Kõik tehtud! Ketid on püsti ja töökorras!
Töötame koos erinevate tegevusahelatega SimpleSequentialChain
kasutaja päringule vastamiseks. Ketid viiakse läbi järgmises järjestuses, kui kasutaja valib "Tell me about it"
nuppu:
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
: mis on meie konveieri esimene samm, saab kasutaja küsimuse sisendi ja väljundina. Kasutaja päring toimib keti mallina.- Küsimusega seotud avalduse põhjal on
assumptions_chain
loob eelduste täppideloendi, kasutades väljundi väljunditquestion_chain
sisendiks. TheLLMChain
jaOpenAI
Avalduse koostamiseks kasutati LangChaini mudelit. Kasutajal on ülesandeks koostada loend eeldustest, mis tehti selle ahela malli abil avalduse koostamiseks. - Põhineb väljunditel
question_chain
jaassumptions_chain
,fact_checker_chain
genereerib väidete loendi täppide kujul. Nõuded on koostatud kasutadesOpenAI
mudel jaLLMChain
LangChainist. Kasutajal on ülesandeks kindlaks teha, kas iga väide on õige või vale, ja põhjendada neid. - .
answer_chain
kasutab väljundiquestion_chain
,assumptions_chain
jafact_checker_chain
sisenditena, et luua vastus kasutaja küsimusele, kasutades varasemate kettide toodetud andmeid. Selle ahela mall nõuab, et kasutaja vastaks esimesele päringule, kasutades loodud fakte. - Varasemate kettide toodetud teabe põhjal lõpliku vastuse andmiseks kasutaja päringule integreerime need ketid üldisesse ahelasse. Pärast kettide valmimist kasutame
st.success()
et näidata kasutajale lahendust.
Järeldus
Saame lihtsalt aheldada erinevaid keelemudeli toiminguid, et luua keerukamaid torujuhtmeid kasutades SimpleSequentialChain
LangChaini moodul. Paljude NLP-rakenduste jaoks, sealhulgas vestlusrobotid, küsimuste-vastuste süsteemid ja keeletõlketööriistad, võib sellest palju abi olla.
LangChaini sära peitub selle abstraktsioonivõimes, mis võimaldab kasutajal keskenduda pigem aktuaalsele probleemile kui keele modelleerimise spetsiifikale.
LangChain muudab keerukate keelemudelite loomise protsessi kasutajasõbralikumaks, pakkudes eelkoolitatud mudeleid ja valikut malle.
See annab teile võimaluse keelemudeleid nende enda andmete abil peenhäälestada, muutes keelemudelite kohandamise lihtsaks. See võimaldab välja töötada täpsemaid, domeenispetsiifilisi mudeleid, mis antud töö puhul ületavad koolitatud mudeleid.
. SimpleSequentialChain
moodul ja muud LangChaini funktsioonid muudavad selle tõhusaks tööriistaks keerukate NLP-süsteemide kiireks arendamiseks ja juurutamiseks.
Jäta vastus