LangChain je špičkový a robustní nástroj vyvinutý pro využití síly velkých jazykových modelů (LLM).
Tyto LLM mají pozoruhodné schopnosti a mohou efektivně řešit širokou škálu úkolů. Je však důležité poznamenat, že jejich síla spočívá spíše v jejich obecné povaze než v hloubkové odbornosti. Jeho popularita rychle rostla od zavedení GPT-4.
Zatímco LLM vynikají ve zvládání různých úkolů, mohou čelit omezením, pokud jde o poskytování konkrétních odpovědí nebo řešení úkolů, které vyžadují hluboké znalosti domény. Zvažte například využití LLM k zodpovězení otázek nebo provádění úkolů ve specializovaných oborech, jako je medicína nebo právo.
I když LLM může jistě reagovat na obecné dotazy týkající se těchto oblastí, může mít potíže s nabízením podrobnějších nebo podrobnějších odpovědí, které vyžadují specializované znalosti nebo odborné znalosti.
Je to proto, že LLM jsou školeni na obrovském množství textových dat z různých zdrojů, což jim umožňuje učit se vzorce, chápat kontext a generovat koherentní odpovědi. Jejich školení však obvykle nezahrnuje získávání specifických nebo specializovaných znalostí ve stejném rozsahu jako lidské experty v těchto oblastech.
Proto, zatímco LangChain ve spojení s LLM může být neocenitelným nástrojem pro širokou škálu úkolů, je důležité si uvědomit, že v určitých situacích může být stále nezbytná hluboká odbornost. Lidští experti se specializovanými znalostmi mohou poskytnout nezbytnou hloubku, jemné porozumění a kontextově specifické poznatky, které mohou být mimo možnosti samotných LLM.
Doporučujeme podívat se na dokumenty LangChain nebo GitHub úložiště pro důkladnější pochopení jeho typických případů použití. Důrazně se doporučuje získat větší obrázek o tomto balíčku.
Jak to funguje?
Abychom pochopili účel a práci LangChain, uvažujme praktický příklad. Jsme si vědomi, že GPT-4 má působivé obecné znalosti a může poskytnout spolehlivé odpovědi na širokou škálu otázek.
Co když však chceme konkrétní informace z našich vlastních dat, jako je osobní dokument, kniha, soubor PDF nebo vlastní databáze?
LangChain nám umožňuje připojit a velký jazykový model jako GPT-4 k našim vlastním zdrojům dat. Jde nad rámec pouhého vložení úryvku textu do rozhraní chatu. Místo toho můžeme odkazovat na celou databázi naplněnou našimi vlastními daty.
Jakmile získáme požadované informace, LangChain nám může pomoci při provádění konkrétních akcí. Můžeme mu například dát pokyn k odeslání e-mailu obsahujícího určité podrobnosti.
Abychom toho dosáhli, postupujeme podle postupu s využitím LangChain. Nejprve si vezmeme dokument, který chceme jazykový model odkazovat a rozdělit jej na menší části. Tyto kousky jsou pak uloženy jako vložení, které jsou vektorové reprezentace textu ve vektorové databázi.
S tímto nastavením můžeme vytvářet aplikace jazykového modelu, které se řídí standardním kanálem: uživatel položí úvodní otázku, která je poté odeslána do jazykového modelu. Vektorová reprezentace otázky se používá k provádění podobnostního vyhledávání ve vektorové databázi a získávání relevantních částí informací.
Tyto části jsou pak přiváděny zpět do jazykového modelu, což mu umožňuje poskytnout odpověď nebo provést požadovanou akci.
LangChain usnadňuje vývoj aplikací, které jsou data-aware, protože můžeme odkazovat na naše vlastní data ve vektorovém úložišti, a autentické, protože mohou provádět akce nad rámec odpovědí na otázky. T
otevírá mnoho praktických případů použití, zejména v osobní asistenci, kde velký jazykový model zvládne úkoly, jako je rezervace letenek, převod peněz nebo pomoc s daňovými záležitostmi.
Kromě toho jsou významné důsledky pro studium a učení se nových předmětů, protože jazykový model může odkazovat na celý sylabus a urychlit proces učení. Očekává se, že kódování, analýza dat a věda o datech budou těmito pokroky výrazně ovlivněny.
Jednou z nejzajímavějších vyhlídek je propojení velkých jazykových modelů se stávajícími firemními daty, jako jsou informace o zákaznících nebo marketingová data. Tato integrace s pokročilými API, jako je Meta's API nebo Google's API, slibuje exponenciální pokrok v analýze dat a vědě o datech.
Jak vytvořit webovou stránku (demo)
V současné době je Langchain dostupný jako balíčky Python a JavaScript.
Můžeme vytvořit demonstrační webovou aplikaci využívající Streamlit, LangChain a model OpenAI GPT-3 k implementaci konceptu LangChain.
Nejprve však musíme nainstalovat několik závislostí, včetně Streamlit, LangChain a OpenAI.
Předpoklady
Streamlit: Populární balíček Pythonu pro vytváření webových aplikací souvisejících s datovou vědou
OpenAI: Je vyžadován přístup k jazykovému modelu GPT-3 OpenAI.
Chcete-li nainstalovat tyto závislosti, použijte následující příkazy v cmd:
pip install streamlit
pip install langchain
pip install openai
Importujte balíčky
Začneme importem požadovaných balíčků, jako jsou OpenAI, LangChain a Streamlit. Naše řetězce jazykových modelů jsou definovány a spouštěny pomocí tří tříd 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í nastavení
Strukturální základ našeho projektu byl poté vytvořen pomocí syntaxe Streamlit. Aplikaci jsme dali název „What's TRUE: Using Simple Sequential Chain“ a přidali odkaz na snížení ceny na úložiště GitHub, který sloužil jako inspirace aplikace.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Přední widgety
Aplikaci jsme nastavili s několika relevantními informacemi pomocí jednoduché 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")
Chcete-li přidat front-end widgety
Dále musíme poskytnout vstupní widget, který našim uživatelům umožní zadávat jakékoli dotazy.
# 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še hotovo! Řetězy jsou v provozu!
Zaměstnáváme různé řetězce operací společně s SimpleSequentialChain
reagovat na dotaz uživatele. Řetězy se provádějí v následujícím pořadí, když uživatel vybere "Tell me about it"
Tlačítko:
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
: což je první krok v našem kanálu, přijímá uživatelovu otázku jako vstup a výstup. Dotaz uživatele slouží jako šablona řetězce.- Na základě prohlášení spojeného s otázkou,
assumptions_chain
generuje odrážkový seznam předpokladů pomocí výstupu zquestion_chain
jako vstup. TheLLMChain
aOpenAI
Pro konstrukci příkazu byl použit model z LangChain. Uživatel má za úkol vytvořit seznam předpokladů, které byly učiněny za účelem vytvoření prohlášení pomocí šablony pro tento řetězec. - Na základě výstupů z
question_chain
aassumptions_chain
sefact_checker_chain
generuje seznam tvrzení ve formě odrážek. Nároky jsou vytvářeny pomocíOpenAI
model aLLMChain
od LangChain. Uživatel má za úkol určit, zda je každé tvrzení přesné nebo nesprávné, a poskytnout odůvodnění pro ty, které jsou. - Projekt
answer_chain
používá výstupy zquestion_chain
,assumptions_chain
, afact_checker_chain
jako vstupy pro vytvoření odpovědi na otázku uživatele pomocí dat vytvořených dřívějšími řetězci. Šablona pro tento řetězec vyžaduje, aby uživatel odpověděl na první dotaz pomocí faktů, které byly vytvořeny. - Abychom mohli poskytnout konečnou odpověď na dotaz uživatele na základě informací vytvořených dřívějšími řetězci, integrujeme tyto řetězce do celkového řetězce. Po dokončení řetězů používáme
st.success()
ukázat uživateli řešení.
Proč investovat do čističky vzduchu?
Můžeme jednoduše zřetězit různé akce jazykového modelu, abychom vytvořili složitější potrubí pomocí SimpleSequentialChain
modul LangChain. Pro širokou škálu aplikací NLP, včetně chatbotů, systémů otázek a odpovědí a nástrojů pro překlad jazyků, to může být docela užitečné.
Brilantnost LangChain spočívá v jeho schopnosti abstrahovat, což uživateli umožňuje soustředit se spíše na aktuální problém než na specifika jazykového modelování.
LangChain činí proces vytváření sofistikovaných jazykových modelů uživatelsky přívětivějším tím, že nabízí předem vyškolené modely a výběr šablon.
Poskytuje vám možnost doladit jazykové modely pomocí jejich vlastních dat, což usnadňuje přizpůsobení jazykových modelů. To umožňuje vývoj přesnějších, doménově specifických modelů, které pro danou práci překonávají trénované modely.
Projekt SimpleSequentialChain
modul a další funkce LangChain z něj činí efektivní nástroj pro rychlý vývoj a nasazení sofistikovaných NLP systémů.
Napsat komentář