LangChain je špičkový a robustný nástroj vyvinutý na využitie sily veľkých jazykových modelov (LLM).
Tieto LLM majú pozoruhodné schopnosti a dokážu efektívne riešiť širokú škálu úloh. Je však dôležité poznamenať, že ich sila spočíva skôr vo všeobecnej povahe než v hĺbkovej odbornosti. Jeho popularita sa od uvedenia GPT-4 rýchlo zvýšila.
Zatiaľ čo LLM vynikajú pri zvládaní rôznych úloh, môžu čeliť obmedzeniam, pokiaľ ide o poskytovanie špecifických odpovedí alebo riešenie úloh, ktoré si vyžadujú hlboké znalosti domény. Zvážte napríklad využitie LLM na zodpovedanie otázok alebo vykonávanie úloh v špecializovaných oblastiach, ako je medicína alebo právo.
Aj keď LLM môže určite odpovedať na všeobecné otázky týkajúce sa týchto oblastí, môže mať problém ponúknuť podrobnejšie alebo podrobnejšie odpovede, ktoré si vyžadujú špecializované znalosti alebo odborné znalosti.
Je to preto, že LLM sú vyškolení na obrovských množstvách textových údajov z rôznych zdrojov, čo im umožňuje učiť sa vzorce, chápať kontext a generovať koherentné odpovede. Ich odborná príprava však zvyčajne nezahŕňa získavanie špecifických alebo špecializovaných znalostí v takom rozsahu ako odborníci v týchto oblastiach.
Preto, zatiaľ čo LangChain v spojení s LLM môže byť neoceniteľným nástrojom pre širokú škálu úloh, je dôležité si uvedomiť, že v určitých situáciách môžu byť stále potrebné hlboké odborné znalosti. Ľudskí experti so špecializovanými znalosťami môžu poskytnúť potrebnú hĺbku, jemné porozumenie a kontextovo špecifické poznatky, ktoré môžu presahovať schopnosti samotných LLM.
Odporúčame pozrieť si dokumenty LangChain alebo GitHub úložisko pre dôkladnejšie pochopenie jeho typických prípadov použitia. Dôrazne sa odporúča získať väčší obraz o tomto balíku.
Ako to funguje?
Aby sme pochopili účel a prácu LangChain, pouvažujme o praktickom príklade. Sme si vedomí toho, že GPT-4 má pôsobivé všeobecné znalosti a môže poskytnúť spoľahlivé odpovede na širokú škálu otázok.
Čo ak však chceme konkrétne informácie z našich vlastných údajov, ako je osobný dokument, kniha, súbor PDF alebo vlastná databáza?
LangChain nám umožňuje pripojiť a veľký jazykový model ako GPT-4 k našim vlastným zdrojom údajov. Ide nad rámec jednoduchého vloženia úryvku textu do rozhrania rozhovoru. Namiesto toho môžeme odkazovať na celú databázu naplnenú našimi vlastnými údajmi.
Keď získame požadované informácie, LangChain nám môže pomôcť pri vykonávaní konkrétnych opatrení. Môžeme mu napríklad dať pokyn, aby poslal e-mail s určitými podrobnosťami.
Aby sme to dosiahli, používame postupný prístup pomocou LangChain. Najprv si vezmeme dokument, ktorý chceme jazykový model odkazovať a rozdeliť ho na menšie časti. Tieto kúsky sú potom uložené ako vloženia, ktoré sú vektorové reprezentácie textu vo vektorovej databáze.
S týmto nastavením môžeme vytvárať aplikácie jazykového modelu, ktoré sa riadia štandardným potrubím: používateľ položí úvodnú otázku, ktorá sa potom odošle do jazykového modelu. Vektorová reprezentácia otázky sa používa na vykonanie podobnostného vyhľadávania vo vektorovej databáze, čím sa získajú relevantné časti informácií.
Tieto časti sa potom vrátia späť do jazykového modelu, čo mu umožňuje poskytnúť odpoveď alebo vykonať požadovanú akciu.
LangChain uľahčuje vývoj aplikácií, ktoré berú do úvahy údaje, pretože môžeme odkazovať na naše vlastné údaje vo vektorovom obchode, a sú autentické, pretože môžu vykonávať akcie nad rámec odpovedí na otázky. T
otvára množstvo praktických prípadov použitia, najmä v osobnej asistencii, kde veľký jazykový model zvládne úlohy, ako je rezervácia letov, prevod peňazí alebo asistencia pri daňových záležitostiach.
Okrem toho sú dôležité dôsledky pre štúdium a učenie sa nových predmetov, pretože jazykový model môže odkazovať na celý sylabus a urýchliť proces učenia. Očakáva sa, že kódovanie, analýza údajov a veda o údajoch budú výrazne ovplyvnené týmito pokrokmi.
Jednou z najzaujímavejších vyhliadok je prepojenie veľkých jazykových modelov s existujúcimi firemnými údajmi, ako sú informácie o zákazníkoch alebo marketingové údaje. Táto integrácia s pokročilými rozhraniami API, ako je Meta's API alebo Google's API, sľubuje exponenciálny pokrok v analýze údajov a vede o údajoch.
Ako vytvoriť webovú stránku (demo)
V súčasnosti je Langchain dostupný ako balíky Python a JavaScript.
Môžeme vytvoriť demonštračnú webovú aplikáciu využívajúcu Streamlit, LangChain a model OpenAI GPT-3 na implementáciu konceptu LangChain.
Najprv však musíme nainštalovať niekoľko závislostí vrátane Streamlit, LangChain a OpenAI.
predpoklady
Streamlit: Populárny balík Python na vytváranie webových aplikácií súvisiacich s vedou o údajoch
OpenAI: Vyžaduje sa prístup k jazykovému modelu GPT-3 OpenAI.
Ak chcete nainštalovať tieto závislosti, použite nasledujúce príkazy v cmd:
pip install streamlit
pip install langchain
pip install openai
Importovať balíčky
Začneme importovaním požadovaných balíkov, ako sú OpenAI, LangChain a Streamlit. Naše reťazce jazykových modelov sú definované a spustené pomocou troch tried z LangChain: LLMCain, SimpleSequentialChain a PromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Základné nastavenie
Štrukturálny základ nášho projektu bol potom zostavený pomocou syntaxe Streamlit. Aplikácii sme dali názov „What's TRUE: Using Simple Sequential Chain“ a pridali sme odkaz na zníženie na úložisko GitHub, ktorý slúžil ako inšpirácia pre aplikáciu.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Predné widgety
Aplikáciu sme nastavili s niekoľkými relevantnými informáciami pomocou jednoduchej syntaxe 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")
Ak chcete pridať predné widgety
Ďalej musíme poskytnúť vstupný widget, ktorý umožní našim používateľom zadávať akékoľvek otázky.
# 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?",
)
Všetko hotové! Reťaze sú v prevádzke!
Spolu využívame rôzne reťazce operácií SimpleSequentialChain
odpovedať na otázku používateľa. Reťaze sa vykonávajú v nasledujúcom poradí, keď používateľ zvolí "Tell me about it"
Tlačidlo:
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
: čo je prvý krok v našom potrubí, dostáva otázku používateľa ako vstup a výstup. Dotaz používateľa slúži ako šablóna reťazca.- Na základe vyhlásenia spojeného s otázkou,
assumptions_chain
generuje odrážkový zoznam predpokladov pomocou výstupu zquestion_chain
ako vstup. TheLLMChain
aOpenAI
Na zostavenie výroku bol použitý model od LangChain. Používateľ má za úlohu vytvoriť zoznam predpokladov, ktoré boli urobené s cieľom vytvoriť vyhlásenie pomocou šablóny pre tento reťazec. - Na základe výstupov z
question_chain
aassumptions_chain
safact_checker_chain
vygeneruje zoznam tvrdení vo forme odrážok. Nároky sa vyrábajú pomocouOpenAI
model aLLMChain
od LangChain. Používateľ má za úlohu určiť, či je každé tvrdenie presné alebo nesprávne, a poskytnúť zdôvodnenie tých, ktoré sú. -
answer_chain
používa výstupy zquestion_chain
,assumptions_chain
afact_checker_chain
ako vstupy na vytvorenie odpovede na otázku používateľa pomocou údajov vytvorených predchádzajúcimi reťazcami. Šablóna pre tento reťazec vyžaduje, aby používateľ odpovedal na prvý dotaz pomocou faktov, ktoré boli vytvorené. - Aby sme poskytli konečnú odpoveď na otázku používateľa založenú na informáciách vytvorených predchádzajúcimi reťazcami, integrujeme tieto reťazce do celkového reťazca. Po dokončení reťazí používame
st.success()
ukázať používateľovi riešenie.
záver
Môžeme jednoducho spojiť akcie rôznych jazykových modelov, aby sme vytvorili komplikovanejšie potrubia pomocou SimpleSequentialChain
modul LangChain. Pre širokú škálu aplikácií NLP, vrátane chatbotov, systémov otázok a odpovedí a nástrojov na preklad jazykov, to môže byť celkom užitočné.
Brilantnosť LangChain spočíva v jeho schopnosti abstrahovať, čo používateľovi umožňuje sústrediť sa skôr na aktuálnu problematiku než na špecifiká jazykového modelovania.
LangChain robí proces vytvárania sofistikovaných jazykových modelov užívateľsky príjemnejším tým, že ponúka vopred vyškolené modely a výber šablón.
Poskytuje vám možnosť doladiť jazykové modely pomocou ich vlastných údajov, čo uľahčuje prispôsobenie jazykových modelov. To umožňuje vývoj presnejších, doménovo špecifických modelov, ktoré pre danú prácu prevyšujú trénované modely.
SimpleSequentialChain
modul a ďalšie funkcie LangChain z neho robia efektívny nástroj na rýchly vývoj a nasadenie sofistikovaných NLP systémov.
Nechaj odpoveď