Inhaltsverzeechnes[Verstoppen][Show]
LangChain ass e modernt a robust Tool entwéckelt fir d'Kraaft vu Large Language Models (LLMs) ze notzen.
Dës LLMs besëtzen bemierkenswäert Fäegkeeten a kënnen effizient eng breet Palette vun Aufgaben unhuelen. Wéi och ëmmer, et ass wichteg ze bemierken datt hir Stäerkt an hirer allgemenger Natur läit anstatt an enger detailléierter Domain Expertise. Seng Popularitéit ass séier gewuess zënter der Aféierung vum GPT-4.
Wärend LLMs exceléieren beim Ëmgank mat verschiddenen Aufgaben, kënne se Aschränkungen stellen wann et drëm geet spezifesch Äntwerten ze liwweren oder Aufgaben unzegoen déi déif Domainwëssen erfuerderen. Betruecht zum Beispill en LLM ze benotzen fir Froen ze beäntweren oder Aufgaben a spezialiséierte Beräicher wéi Medizin oder Gesetz auszeféieren.
Wärend den LLM sécherlech op allgemeng Ufroen iwwer dës Felder reagéiere kann, kann et kämpfen fir méi detailléiert oder nuancéiert Äntwerten ze bidden déi spezialiséiert Wëssen oder Expertise erfuerderen.
Dëst ass well LLMs op enorm Quantitéiten un Textdaten aus diversen Quellen trainéiert ginn, wat hinnen erlaabt Mustere ze léieren, Kontext ze verstoen a kohärent Äntwerten ze generéieren. Wéi och ëmmer, hir Ausbildung beinhalt net typesch Domain-spezifesch oder spezialiséiert Wëssensacquisitioun am selwechte Mooss wéi mënschlech Experten an dëse Beräicher.
Dofir, wärend LangChain, a Verbindung mat LLMs, e wäertvollt Tool fir eng breet Palette vun Aufgaben ka sinn, ass et wichteg ze erkennen datt déif Domain Expertise nach ëmmer a bestëmmte Situatiounen néideg sinn. Mënschlech Experten mat spezialiséiertem Wëssen kënnen déi néideg Déift, nuancéiert Verständnis, a kontextspezifesch Abléck ubidden, déi iwwer d'Fäegkeete vu LLMs eleng kënne sinn.
Mir géifen roden d'Dokumenter vum LangChain ze kucken oder GitHub Repository fir e méi grëndlecht Verständnis vu sengen typesche Benotzungsfäll. Et gëtt staark ugeroden e méi grousst Bild vun dësem Bündel ze kréien.
Wéi funktionnéiert et?
Fir den Zweck an d'Aarbecht vu LangChain ze verstoen, loosst eis e praktescht Beispill betruechten. Mir si bewosst datt GPT-4 beandrockend allgemeng Wëssen huet an zouverlässeg Äntwerten op eng breet Palette vu Froen ubidden kann.
Wéi och ëmmer, wa mir spezifesch Informatioun aus eisen eegenen Donnéeën wëllen, wéi e perséinlecht Dokument, Buch, PDF-Datei oder propriétaire Datebank?
LangChain erlaabt eis eng Verbindung grousse Sproochmodell wéi GPT-4 op eis eegen Datequellen. Et geet doriwwer eraus einfach e Stéck Text an eng Chat-Interface ze pechen. Amplaz kënne mir eng ganz Datebank mat eisen eegenen Donnéeën referenzéieren.
Wann mir déi gewënscht Informatioun kréien, kann LangChain eis hëllefen spezifesch Aktiounen ze huelen. Zum Beispill kënne mir et instruéieren eng E-Mail mat bestëmmten Detailer ze schécken.
Fir dëst z'erreechen, verfollege mir eng Pipeline Approche mat LangChain. Éischt, mir huelen d'Dokument mir wëllen de Sproochmodell fir ze referenzéieren an et a méi kleng Stécker opzedeelen. Dës Stécker ginn dann als Embeddings gelagert, déi sinn Vector Representatioune vum Text, an enger Vector Datebank.
Mat dësem Setup kënne mir Sproochmodellapplikatioune bauen déi eng Standard Pipeline folgen: e Benotzer stellt eng initial Fro, déi dann un de Sproochemodell geschéckt gëtt. D'Vektorvertriedung vun der Fro gëtt benotzt fir eng Ähnlechkeetssich an der Vector Datebank auszeféieren, déi entspriechend Stécker vun Informatioun zréckzéien.
Dës Stécker ginn dann an de Sproochemodell zréckgezunn, wat et erlaabt eng Äntwert ze ginn oder déi gewënscht Handlung ze huelen.
LangChain erliichtert d'Entwécklung vun Applikatiounen déi Daten bewosst sinn, well mir kënnen eis eegen Donnéeën an engem Vektorgeschäft referenzéieren, an authentesch, well se Handlungen iwwer d'Fro beäntweren kënnen. T
seng mécht eng Villzuel vu praktesche Benotzungsfäll op, besonnesch a perséinlecher Assistenz, wou e grousse Sproochemodell Aufgabe wéi Flich buchen, Suen iwwerweisen oder mat steierlechen Themen hëllefen kann.
Zousätzlech sinn d'Implikatioune fir nei Fächer ze studéieren an ze léieren bedeitend, well e Sproochemodell e ganze Léierplang kann referenzéieren an de Léierprozess beschleunegen. Kodéierung, Datenanalyse an Datewëssenschaft ginn och erwaart staark vun dëse Fortschrëtter beaflosst ze ginn.
Ee vun de spannendste Perspektiven ass d'Verbindung vu grousse Sproochmodeller mat existéierende Firmendaten, wéi Clientinformatioun oder Marketingdaten. Dës Integratioun mat fortgeschratt APIen wéi Meta's API oder Google's API versprécht exponentielle Fortschrëtter an der Datenanalytik an Datewëssenschaft.
Wéi bauen ech eng Websäit (Demo)
De Moment ass Langchain als Python a JavaScript Packagen verfügbar.
Mir kënnen eng Demonstratioun Web App erstellen mat Streamlit, LangChain, an den OpenAI GPT-3 Modell fir de LangChain Konzept ëmzesetzen.
Awer als éischt musse mir e puer Ofhängegkeeten installéieren, dorënner Streamlit, LangChain, an OpenAI.
Pre-Requisite
Streamlit: E populäre Python Package fir Datenwëssenschaftsbezunnen Webapplikatiounen ze kreéieren
OpenAI: Zougang zum OpenAI säi GPT-3 Sproochemodell ass néideg.
Fir dës Ofhängegkeeten z'installéieren, benotzt déi folgend Kommandoen am cmd:
pip install streamlit
pip install langchain
pip install openai
Import Packagen
Mir fänken un andeems Dir déi erfuerderlech Packagen importéiert, wéi OpenAI, LangChain, a Streamlit. Eis Sproochmodellketten ginn definéiert an ausgefouert mat dräi Klassen vu LangChain: LLMChain, SimpleSequentialChain, a PromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Basis - Setup
Déi strukturell Basis vun eisem Projet gouf dunn mat Streamlit Syntax opgestallt. Mir hunn der App den Titel "What's TRUE: Using Simple Sequential Chain" ginn an e Markdown Link zum GitHub Repository abegraff deen als Inspiratioun vun der App gedéngt huet.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Front-End Widgets
Mir setzen d'App mat wéineg relevant Informatioun op, mat einfacher Streamlit Syntax:
# 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")
Fir Front-End Widgets ze addéieren
Weider musse mir en Input Widget ubidden fir datt eise Benotzer all Froen aginn.
# 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?",
)
Alles fäerdeg! D'Ketten sinn op a lafen!
Mir beschäftegt verschidde Ketten vun Operatiounen zesumme mat SimpleSequentialChain
fir op d'Ufro vum Benotzer z'äntwerten. D'Ketten sinn an der folgender Rei duerchgefouert wann de Benotzer wielt der "Tell me about it"
Knäppchen:
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
: wat den éischte Schrëtt an eiser Pipeline ass, kritt d'Fro vum Benotzer als Input an Output. Dem Benotzer seng Ufro déngt als Schabloun vun der Kette.- Opgrond vun enger Ausso, déi mat der Fro verbonnen ass, huet de
assumptions_chain
generéiert eng Kugel-Punkt Lëscht vun Viraussetzungen mat der Ausgang vun derquestion_chain
als Input. DéiLLMChain
anOpenAI
Modell vu LangChain gouf benotzt fir d'Ausso ze konstruéieren. De Benotzer ass opgefuerdert eng Lëscht vun den Viraussetzungen ze kreéieren déi gemaach goufen fir d'Ausso mat der Schabloun fir dës Kette ze produzéieren. - Baséiert op den Ausgänge vun der
question_chain
anassumptions_chain
, déifact_checker_chain
generéiert eng Lëscht vun Behaaptungen a Form vu Kugelpunkten. D'Fuerderunge gi produzéiert mat derOpenAI
Modell anLLMChain
aus LangChain. De Benotzer ass opgefuerdert ze bestëmmen ob all Fuerderung korrekt oder falsch ass a Berechtegung fir déi déi sinn. - d'
answer_chain
benotzt d'Ausgänge vun derquestion_chain
,assumptions_chain
, anfact_checker_chain
als Input fir eng Äntwert op d'Fro vum Benotzer ze kreéieren andeems d'Daten vun de fréiere Ketten produzéiert goufen. D'Schabloun fir dës Kette freet datt de Benotzer op déi éischt Ufro reagéiert mat de Fakten déi erstallt goufen. - Fir déi ultimativ Äntwert op d'Ufro vum Benotzer ze bidden baséiert op der Informatioun déi vun de fréiere Ketten produzéiert gëtt, integréiere mir dës Ketten an d'Gesamtkette. Nodeems d'Ketten fäerdeg sinn, benotze mir
st.success()
fir de Benotzer d'Léisung ze weisen.
Konklusioun
Mir kënnen einfach verschidde Sproochmodellaktiounen zesummen ketten fir méi komplizéiert Pipelines ze kreéieren andeems Dir de SimpleSequentialChain
Modul vun LangChain. Fir eng breet Varietéit vun NLP Uwendungen, dorënner Chatbots, Fro-an-Äntwert Systemer, a Sprooch Iwwersetzungsinstrumenter, kann dëst ganz hëllefräich sinn.
D'Brillanz vu LangChain gëtt a senger Kapazitéit fonnt fir ze abstrakt, wat de Benotzer erméiglecht sech op déi aktuell Ausgab ze konzentréieren anstatt d'Spezifizitéiten vun der Sproochmodelléierung.
LangChain mécht de Prozess fir raffinéiert Sproochmodeller méi userfrëndlech ze kreéieren andeems se pre-trainéiert Modeller an eng Auswiel u Template ubitt.
Et gëtt Iech d'Méiglechkeet d'Sproochmodeller mat hiren eegenen Donnéeën ze feinjustéieren, sou datt et einfach ass d'Sproochmodeller ze personaliséieren. Dëst erméiglecht d'Entwécklung vu méi präzis, Domain-spezifesch Modeller déi, fir eng bestëmmten Aarbecht, déi ausgebilte Modeller besser maachen.
d' SimpleSequentialChain
Modul an aner Feature vu LangChain maachen et en effektiven Tool fir séier raffinéiert NLP Systemer z'entwéckelen an z'installéieren.
Hannerlooss eng Äntwert