Published on
Einführung in LangChain für große Sprachmodelle
Große Sprachmodelle (LLMs) haben das Gebiet der natürlichen Sprachverarbeitung revolutioniert und ermöglichen die Erstellung leistungsstarker Anwendungen wie Chatbots, Frage-Antwort-Systeme und Textgenerierungstools. Das Erstellen dieser Anwendungen von Grund auf kann jedoch herausfordernd und zeitaufwendig sein. Hier kommt LangChain ins Spiel - eine Python-Bibliothek, die die Entwicklung von Anwendungen, die von LLMs unterstützt werden, erleichtert.
In diesem Artikel werden wir uns mit LangChain beschäftigen und untersuchen, wie es zur Erstellung von LLM-betriebenen Anwendungen verwendet werden kann. Wir werden Installation, Schlüsselkonzepte abdecken und Codebeispiele bereitstellen, um Ihnen den Einstieg zu erleichtern.
Was ist LangChain?
LangChain ist eine Open-Source-Bibliothek, die eine standardisierte Schnittstelle zum Arbeiten mit LLMs bietet. Sie abstrahiert viele der Komplexitäten bei der direkten Interaktion mit LLMs und ermöglicht es Entwicklern, sich auf den Aufbau ihrer Anwendungen zu konzentrieren.
Einige wichtige Funktionen von LangChain sind:
- Unterstützung mehrerer LLM-Anbieter wie OpenAI, Cohere, Hugging Face, usw.
- Modulare Komponenten wie Prompts, Chains, Agents und Memory
- Hilfsprogramme zum Arbeiten mit Dokumenten, Embeddings und Vektorspeichern
- Integration mit anderen Tools und Frameworks
Indem Sie LangChain nutzen, können Entwickler schnell Prototypen und LLM-betriebene Anwendungen bereitstellen, ohne sich um die Details der LLM-APIs auf niedriger Ebene kümmern zu müssen.
Installation
Um mit LangChain zu beginnen, müssen Sie es mit pip installieren. Es wird empfohlen, zuerst eine virtuelle Umgebung zu erstellen:
python -m venv langchain-env
source langchain-env/bin/activate
pip install langchain
Sie müssen auch die Pakete für den LLM-Anbieter installieren, den Sie verwenden möchten. Zum Beispiel, um die Modelle von OpenAI zu verwenden:
pip install openai
Stellen Sie sicher, dass Sie einen API-Schlüssel für den verwendeten Anbieter haben. Sie können ihn als Umgebungsvariable setzen:
export OPENAI_API_KEY=your_api_key_here
Schlüsselkonzepte
Prompts
Prompts sind die Anweisungen oder der Kontext, den Sie dem LLM zur Steuerung seiner Ausgabe geben. LangChain bietet eine PromptTemplate
-Klasse, um das Erstellen und Verwenden von Prompts zu erleichtern.
Hier ist ein Beispiel für das Erstellen einer Prompt-Vorlage:
from langchain import PromptTemplate
template = """
Sie sind ein Assistent, der Benutzern beim Schreiben von professionellen E-Mails hilft.
Angesichts des folgenden Kontextes:
{context}
Schreiben Sie eine professionelle E-Mail-Antwort. Unterschreiben Sie die E-Mail als "John".
"""
prompt = PromptTemplate(
input_variables=["context"],
template=template,
)
Sie können die Prompt dann verwenden, indem Sie die Eingabevariablen übergeben:
context = "Ich muss meinem Chef mitteilen, dass ich nächste Woche Urlaub mache."
print(prompt.format(context=context))
Dies gibt die vervollständigte Prompt mit dem bereitgestellten Kontext aus.
LLMs
LangChain bietet eine standardisierte Schnittstelle für die Interaktion mit verschiedenen LLM-Anbietern über die LLM
-Klasse.
Hier ist ein Beispiel für die Verwendung des Modells text-davinci-003
von OpenAI:
from langchain.llms import OpenAI
llm = OpenAI(model_name="text-davinci-003")
result = llm("Was ist die Hauptstadt von Frankreich?")
print(result)
Dies gibt die Antwort des Modells auf die Frage aus.
Chains
Chains ermöglichen es Ihnen, mehrere Komponenten wie Prompts und LLMs zu kombinieren, um komplexere Anwendungen zu erstellen. LangChain bietet verschiedene integrierte Chains sowie die Möglichkeit, benutzerdefinierte Chains zu erstellen.
Hier ist ein Beispiel für eine einfache sequentielle Chain, die eine Prompt entgegennimmt, sie an ein LLM übergibt und dann die Ausgabe des LLM an eine zweite Prompt übergibt:
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
first_prompt = PromptTemplate(
input_variables=["product"],
template="Wie lautet ein guter Name für ein Unternehmen, das {product} herstellt?",
)
second_prompt = PromptTemplate(
input_variables=["company_name"],
template="Schreiben Sie einen Slogan für das folgende Unternehmen: {company_name}",
)
chain = LLMChain(llm=llm, prompt=first_prompt)
second_chain = LLMChain(llm=llm, prompt=second_prompt)
result = chain.run("bunte Socken")
print(f"Firmenname: {result}")
result = second_chain.run(result)
print(f"Slogan: {result}")
Dies erzeugt einen Firmennamen basierend auf dem Produkt "bunte Socken" und generiert dann einen Slogan für diesen Firmennamen.
Agents
Agents sind Systeme, die LLMs verwenden, um dynamisch basierend auf der Eingabe des Benutzers zu bestimmen, welche Aktionen ausgeführt werden sollen. Sie können Tools verwenden, um mit der Außenwelt zu interagieren und Entscheidungen darüber zu treffen, was als Nächstes zu tun ist.
Hier ist ein Beispiel für einen einfachen Agenten, der ein Suchtool und ein Taschenrechner-Tool verwendet:
from langchain.agents import initialize_agent, Tool
from langchain.tools import BaseTool
from langchain.llms import OpenAI
def search_api(query):
return "Suchergebnisse für {query} würden hier zurückgegeben werden"
def calculator(expression):
return eval(expression)
search_tool = Tool(
name="Suche",
func=search_api,
description="Nützlich zum Suchen von Informationen im Internet."
)
calculator_tool = Tool(
name="Taschenrechner",
func=calculator,
description="Nützlich zum Durchführen von mathematischen Berechnungen."
)
tools = [search_tool, calculator_tool]
llm = OpenAI(temperature=0)
agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True)
result = agent.run("Was ist die Bevölkerung von Kanada geteilt durch die Bevölkerung der Vereinigten Staaten?")
print(result)
Dieser Agent sucht zuerst nach den Bevölkerungszahlen von Kanada und den USA, extrahiert die Zahlen aus den Suchergebnissen und verwendet dann den Taschenrechner, um sie zu dividieren.
Fazit
LangChain ist eine leistungsstarke Bibliothek, die es einfacher macht, Anwendungen zu entwickeln, die von LLMs (Language Model Models) unterstützt werden. Indem sie eine standardisierte Schnittstelle und modulare Komponenten bereitstellt, ermöglicht sie es Entwicklern, sich darauf zu konzentrieren, ihre Anwendungen zu erstellen, anstatt sich um die Details der LLM-APIs kümmern zu müssen.
In diesem Artikel haben wir die Grundlagen von LangChain behandelt, einschließlich der Installation, wichtiger Konzepte wie Prompts, LLMs, Chains und Agents, und Codebeispiele bereitgestellt, um Ihnen den Einstieg zu erleichtern.
Um mehr über LangChain zu erfahren, schauen Sie sich die offizielle Dokumentation unter https://langchain.readthedocs.io/ (opens in a new tab) an. Sie können auch das Verzeichnis "examples" im GitHub-Repository erkunden, um fortgeschrittenere Anwendungsfälle und Ideen zu finden.
Da LLMs weiterentwickelt werden, werden Tools wie LangChain eine immer wichtigere Rolle dabei spielen, sie für eine Vielzahl von Anwendungen zugänglich und einfach zu bedienen zu machen. Durch die Nutzung von LangChain können Sie leistungsstarke sprachenbasierte Anwendungen erstellen und an vorderster Front dieser spannenden Branche sein.