LangChain ist ein hochmodernes und robustes Tool, das entwickelt wurde, um die Leistungsfähigkeit von Large Language Models (LLMs) zu nutzen.
Diese LLMs verfügen über bemerkenswerte Fähigkeiten und können ein breites Spektrum an Aufgaben effizient bewältigen. Es ist jedoch wichtig zu beachten, dass ihre Stärke eher in ihrem allgemeinen Charakter als in tiefgehender Fachkenntnis liegt. Seine Popularität hat seit der Einführung von GPT-4 rapide zugenommen.
Während LLMs bei der Bewältigung verschiedener Aufgaben hervorragende Leistungen erbringen, stoßen sie möglicherweise auf Einschränkungen, wenn es darum geht, spezifische Antworten zu geben oder Aufgaben zu bewältigen, die fundierte Fachkenntnisse erfordern. Erwägen Sie beispielsweise die Nutzung eines LLM zur Beantwortung von Fragen oder zur Ausführung von Aufgaben in Spezialgebieten wie Medizin oder Recht.
Während das LLM sicherlich auf allgemeine Anfragen zu diesen Bereichen antworten kann, kann es schwierig sein, detailliertere oder differenziertere Antworten zu geben, die spezielles Wissen oder Fachwissen erfordern.
Dies liegt daran, dass LLMs auf riesigen Mengen an Textdaten aus verschiedenen Quellen trainiert werden, was es ihnen ermöglicht, Muster zu lernen, Zusammenhänge zu verstehen und kohärente Antworten zu generieren. Ihre Ausbildung umfasst jedoch in der Regel nicht den Erwerb domänenspezifischer oder spezialisierter Kenntnisse im gleichen Umfang wie bei menschlichen Experten auf diesen Gebieten.
Obwohl LangChain in Verbindung mit LLMs ein unschätzbares Werkzeug für ein breites Aufgabenspektrum sein kann, ist es wichtig zu erkennen, dass in bestimmten Situationen dennoch umfassende Fachkenntnisse erforderlich sein können. Menschliche Experten mit Spezialwissen können die erforderliche Tiefe, das differenzierte Verständnis und die kontextspezifischen Erkenntnisse liefern, die möglicherweise über die Möglichkeiten von LLMs allein hinausgehen.
Wir empfehlen Ihnen, sich die Dokumente von LangChain anzusehen oder GitHub Repository für ein tieferes Verständnis seiner typischen Anwendungsfälle. Es wird dringend empfohlen, sich einen größeren Überblick über dieses Paket zu verschaffen.
Wie funktioniert es?
Um den Zweck und die Arbeit von LangChain zu verstehen, betrachten wir ein praktisches Beispiel. Wir sind uns bewusst, dass GPT-4 über ein beeindruckendes Allgemeinwissen verfügt und zuverlässige Antworten auf eine Vielzahl von Fragen liefern kann.
Was aber, wenn wir bestimmte Informationen aus unseren eigenen Daten benötigen, beispielsweise aus einem persönlichen Dokument, einem Buch, einer PDF-Datei oder einer proprietären Datenbank?
Mit LangChain können wir a verbinden großes Sprachmodell wie GPT-4 zu unseren eigenen Datenquellen. Es geht über das einfache Einfügen eines Textausschnitts in eine Chat-Oberfläche hinaus. Stattdessen können wir auf eine ganze Datenbank verweisen, die mit unseren eigenen Daten gefüllt ist.
Sobald wir die gewünschten Informationen erhalten, kann LangChain uns dabei unterstützen, konkrete Maßnahmen zu ergreifen. Wir können es beispielsweise anweisen, eine E-Mail mit bestimmten Details zu versenden.
Um dies zu erreichen, verfolgen wir einen Pipeline-Ansatz mit LangChain. Zuerst nehmen wir das gewünschte Dokument Sprachmodell um es zu referenzieren und in kleinere Teile aufzuteilen. Diese Chunks werden dann als Einbettungen gespeichert Vektordarstellungen des Textes in einer Vektordatenbank.
Mit diesem Setup können wir Sprachmodellanwendungen erstellen, die einer Standardpipeline folgen: Ein Benutzer stellt eine erste Frage, die dann an das Sprachmodell gesendet wird. Die Vektordarstellung der Frage wird verwendet, um eine Ähnlichkeitssuche in der Vektordatenbank durchzuführen und die relevanten Informationsblöcke abzurufen.
Diese Blöcke werden dann an das Sprachmodell zurückgemeldet, sodass dieses eine Antwort liefern oder die gewünschte Aktion ausführen kann.
LangChain erleichtert die Entwicklung datenbewusster Anwendungen, da wir auf unsere eigenen Daten in einem Vektorspeicher verweisen können, und authentisch, da sie über die Beantwortung von Fragen hinausgehende Aktionen ausführen können. T
Dies eröffnet eine Vielzahl praktischer Anwendungsfälle, insbesondere in der persönlichen Assistenz, wo ein großes Sprachmodell Aufgaben wie die Buchung von Flügen, Geldüberweisungen oder die Unterstützung bei Steuerangelegenheiten übernehmen kann.
Darüber hinaus sind die Auswirkungen auf das Studium und das Erlernen neuer Fächer erheblich, da ein Sprachmodell auf einen gesamten Lehrplan verweisen und den Lernprozess beschleunigen kann. Es wird erwartet, dass auch Codierung, Datenanalyse und Datenwissenschaft stark von diesen Fortschritten beeinflusst werden.
Eine der spannendsten Perspektiven ist die Verknüpfung großer Sprachmodelle mit vorhandenen Unternehmensdaten, etwa Kundeninformationen oder Marketingdaten. Diese Integration mit fortschrittlichen APIs wie der API von Meta oder der API von Google verspricht exponentielle Fortschritte in der Datenanalyse und Datenwissenschaft.
So erstellen Sie eine Webseite (Demo)
Derzeit ist Langchain als Python- und JavaScript-Pakete verfügbar.
Wir können eine Demonstrations-Web-App erstellen, die Streamlit, LangChain und das OpenAI GPT-3-Modell verwendet, um das LangChain-Konzept zu implementieren.
Aber zuerst müssen wir einige Abhängigkeiten installieren, darunter Streamlit, LangChain und OpenAI.
Die Anforderungen:
Streamlit: Ein beliebtes Python-Paket zum Erstellen datenwissenschaftlicher Webanwendungen
OpenAI: Zugriff auf das GPT-3-Sprachmodell von OpenAI ist erforderlich.
Um diese Abhängigkeiten zu installieren, verwenden Sie die folgenden Befehle in cmd:
pip install streamlit
pip install langchain
pip install openai
Pakete importieren
Wir beginnen mit dem Import der erforderlichen Pakete wie OpenAI, LangChain und Streamlit. Unsere Sprachmodellketten werden mithilfe von drei Klassen von LangChain definiert und ausgeführt: LLMChain, SimpleSequentialChain und PromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Basic Setup
Die strukturelle Basis unseres Projekts wurde dann mithilfe der Streamlit-Syntax erstellt. Wir gaben der App den Titel „What's TRUE: Using Simple Sequential Chain“ und fügten einen Markdown-Link zum GitHub-Repository hinzu, der als Inspiration für die App diente.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Front-End-Widgets
Wir richten die App mit wenigen relevanten Informationen ein und verwenden dabei die einfache 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")
So fügen Sie Frontend-Widgets hinzu
Darüber hinaus müssen wir ein Eingabe-Widget bereitstellen, damit unsere Benutzer Fragen eingeben können.
# 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 erledigt! Die Ketten laufen!
Wir beschäftigen verschiedene Betriebsketten zusammen mit SimpleSequentialChain
um auf die Anfrage des Benutzers zu antworten. Die Ketten werden in der folgenden Reihenfolge ausgeführt, wenn der Benutzer die auswählt "Tell me about it"
Button:
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
: Dies ist der erste Schritt in unserer Pipeline und empfängt die Frage des Benutzers als Eingabe und Ausgabe. Die Anfrage des Benutzers dient als Vorlage für die Kette.- Basierend auf einer mit der Frage verknüpften Aussage, die
assumptions_chain
generiert anhand der Ausgabe von eine Stichpunktliste mit Annahmenquestion_chain
als Eingabe. DerLLMChain
undOpenAI
Für die Erstellung der Anweisung wurde ein Modell von LangChain verwendet. Der Benutzer hat die Aufgabe, eine Liste der Annahmen zu erstellen, die getroffen wurden, um die Anweisung unter Verwendung der Vorlage für diese Kette zu erstellen. - Basierend auf den Ergebnissen der
question_chain
undassumptions_chain
, derfact_checker_chain
generiert eine Liste von Behauptungen in Form von Aufzählungspunkten. Die Ansprüche werden mit der erstelltOpenAI
Modell undLLMChain
von LangChain. Der Benutzer hat die Aufgabe, festzustellen, ob jede Behauptung richtig oder falsch ist, und diese zu begründen. - Das
answer_chain
verwendet die Ausgaben vonquestion_chain
,assumptions_chain
undfact_checker_chain
als Eingaben, um mithilfe der von den früheren Ketten erzeugten Daten eine Antwort auf die Frage des Benutzers zu erstellen. Die Vorlage für diese Kette verlangt, dass der Benutzer auf die erste Anfrage mit den erstellten Fakten antwortet. - Um die ultimative Antwort auf die Anfrage des Benutzers auf der Grundlage der von den früheren Ketten erzeugten Informationen bereitzustellen, integrieren wir diese Ketten in die Gesamtkette. Nachdem die Ketten fertig sind, verwenden wir
st.success()
um dem Benutzer die Lösung zu zeigen.
Zusammenfassung
Wir können einfach verschiedene Aktionen des Sprachmodells miteinander verketten, um mithilfe von kompliziertere Pipelines zu erstellen SimpleSequentialChain
Modul von LangChain. Für eine Vielzahl von NLP-Anwendungen, darunter Chatbots, Frage-und-Antwort-Systeme und Sprachübersetzungstools, kann dies sehr hilfreich sein.
Die Brillanz von LangChain liegt in seiner Fähigkeit zur Abstraktion, die es dem Benutzer ermöglicht, sich auf das aktuelle Problem zu konzentrieren und nicht auf die Besonderheiten der Sprachmodellierung.
LangChain macht den Prozess der Erstellung anspruchsvoller Sprachmodelle benutzerfreundlicher, indem es vorab trainierte Modelle und eine Auswahl an Vorlagen anbietet.
Es bietet Ihnen die Möglichkeit, die Sprachmodelle anhand ihrer eigenen Daten zu optimieren und so die Sprachmodelle einfacher anzupassen. Dies ermöglicht die Entwicklung präziserer, domänenspezifischer Modelle, die für eine bestimmte Aufgabe die trainierten Modelle übertreffen.
Das SimpleSequentialChain
Das Modul und andere Funktionen von LangChain machen es zu einem effektiven Werkzeug für die schnelle Entwicklung und Bereitstellung anspruchsvoller NLP-Systeme.
Hinterlassen Sie uns einen Kommentar