\n\n\n\n Ich sorge dafür, dass die KI-Modelle besser zusammenarbeiten als je zuvor. - AgntBox Ich sorge dafür, dass die KI-Modelle besser zusammenarbeiten als je zuvor. - AgntBox \n

Ich sorge dafür, dass die KI-Modelle besser zusammenarbeiten als je zuvor.

📖 12 min read2,398 wordsUpdated Mar 30, 2026

Hallo zusammen, hier ist Nina von agntbox.com! Ich hoffe, ihr habt alle eine großartige Woche. Heute möchte ich etwas erkunden, das in letzter Zeit viel Platz in meinem Kopf einnimmt: wie man sicherstellt, dass KI-Modelle harmonisch zusammenarbeiten. Genauer gesagt spreche ich von einem Rahmen, der dies viel weniger schmerzhaft macht als zuvor. Ihr wisst, wie das ist: Man arbeitet an einem Projekt, und plötzlich merkt man, dass man ein Sprachmodell für einen Teil, ein Bildverarbeitungsmodell für einen anderen und vielleicht sogar ein maßgeschneidertes Modell für etwas sehr Spezifisches benötigt. Bevor man sich versieht, jongliert man mit APIs, Datenformaten und Authentifizierungs-Token wie ein Zirkuskünstler.

Nun, ich habe viel Zeit mit LangChain verbracht, und ich bin bereit, euch zu zeigen, wie es meinen Arbeitsablauf verändert. Es ist nicht nur eine schicke Bibliothek; es ist eine Denkweise über den Bau von KI-Anwendungen, die wirklich Sinn macht. Und glaubt mir, nachdem ich jahrelang mit maßgeschneiderten Integrationen gekämpft habe, ist es wie ein frischer Luftzug, etwas zu finden, das den Prozess rationalisiert.

Mein Geistesblitz mit LangChain: Von Chaos zu einer verknüpften Logik

Mein erster wirklicher „Ah-ha!“ Moment mit LangChain ereignete sich vor einigen Monaten. Ich versuchte, ein kleines internes Werkzeug für agntbox.com zu bauen – etwas, das eine Benutzeranfrage zu KI-Tools entgegennehmen, in unserer internen Wissensdatenbank (eine Menge unordentlicher Markdown-Dateien, natürlich) suchen, die relevanten Punkte zusammenfassen und dann die Frage des Benutzers mit einem großen Sprachmodell (LLM) beantworten konnte. Klingt einfach, oder?

Theoretisch ja. In der Praxis musste ich Folgendes bewältigen:

  • Das Laden und Aufteilen von Markdown-Dateien.
  • Die Erstellung von Embeddings für diese Teile.
  • Die Einrichtung einer Vektordatenbank, um diese Embeddings zu speichern und abzufragen.
  • Zu verstehen, wie man die Benutzeranfrage an die Vektordatenbank übergibt und relevante Dokumente abruft.
  • Dann diese Dokumente und die ursprüngliche Anfrage zu nehmen, sie einem LLM bereitzustellen und eine kohärente Antwort zu erhalten.
  • Und fangt gar nicht erst an, über Fehlerbehandlung und Wiederholungsversuche zu sprechen.

Es war viel Standardcode, und ehrlich gesagt, hatte ich davor Angst. Jedes Mal, wenn ich an die Technik dachte, sank meine Motivation. Genau in diesem Moment schubste mich ein Freund (danke, Alex!) in Richtung LangChain. Ich hatte den Namen gehört, aber mich nicht wirklich damit beschäftigt.

Was ich fand, ist ein System, das darauf ausgelegt ist, diese verschiedenen Teile in das zu integrieren, was sie „Ketten“ nennen. Es ist wie Lego für KI. Man hat Komponenten, um mit LLMs zu interagieren, Daten zu laden, Embeddings zu erstellen, mit Vektordatenbanken zu interagieren und vieles mehr. Und die Magie passiert wirklich, wenn man sie miteinander verknüpft.

Das Problem, das LangChain löst (für mich zumindest)

Vor LangChain sah ein gängiges Szenario für mich so aus:


# Pseudocode - was ich vorher gemacht habe
def get_answer_old_way(query, documents):
 # Schritt 1: Dokumente manuell laden und verarbeiten
 processed_docs = process_markdown_files(documents)

 # Schritt 2: Embeddings erstellen (mit einer anderen Bibliothek)
 embeddings_model = load_embedding_model("openai")
 doc_embeddings = [embeddings_model.embed_text(doc) for doc in processed_docs]

 # Schritt 3: In einer Vektordatenbank speichern (API einer anderen Bibliothek)
 vector_db_client = VectorDBClient("pinecone_api_key")
 vector_db_client.upsert_vectors(doc_embeddings)

 # Schritt 4: Die Vektordatenbank abfragen
 query_embedding = embeddings_model.embed_text(query)
 relevant_docs = vector_db_client.query(query_embedding, top_k=5)

 # Schritt 5: Den Prompt für das LLM formatieren
 prompt = f"Basierend auf diesen Dokumenten: {relevant_docs}, beantworte: {query}"

 # Schritt 6: Das LLM aufrufen (eine andere Bibliothek/API)
 llm_response = openai_client.complete(prompt)
 return llm_response.text

Seht ihr? Jeder Schritt ist eine eigenständige Herausforderung, die oft unterschiedliche Bibliotheken, verschiedene Datenstrukturen verwendet und eine manuelle Orchestrierung erfordert. Es ist machbar, aber es ist auch fehleranfällig und schwer zu warten. LangChain vereinfacht das, indem es eine einheitliche Schnittstelle und standardisierte Komponenten bietet, die darauf ausgelegt sind, zusammenzuarbeiten.

Packen wir’s an: Ein praktisches Beispiel mit LangChain

Lasst uns zu einer vereinfachten Version des internen Tools übergehen, das ich erwähnt habe. Wir werden LangChain verwenden, um:

  1. Ein Dokument zu laden.
  2. Es in Stücke zu zerlegen.
  3. Embeddings zu erstellen und sie in einer einfachen in-memory Vektordatenbank zu speichern (zur Demonstration).
  4. Die Vektordatenbank abzufragen.
  5. Ein LLM zu nutzen, um eine Frage basierend auf den abgerufenen Informationen zu beantworten.

Für dieses Beispiel werde ich OpenAI für das LLM und die Embeddings verwenden, aber LangChain unterstützt eine Vielzahl von Anbietern. Vergesst nicht, die notwendigen Pakete zu installieren: pip install langchain langchain-openai pypdf. Und setzt eure Umgebungsvariable OPENAI_API_KEY!

Schritt 1: Einrichtung der Umgebung und Laden der Daten

Zuerst müssen wir unser Dokument laden. Ich werde dafür eine einfache Textdatei verwenden, aber stellt euch vor, dass dies auch ein PDF, eine Webseite oder sogar ein Datenbankeintrag sein könnte.


from langchain_community.document_loaders import TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import FAISS
from langchain_openai import ChatOpenAI
from langchain.chains import RetrievalQA
import os

# Definiert euren OpenAI API Schlüssel
# os.environ["OPENAI_API_KEY"] = "YOUR_API_KEY" # Am besten als Umgebungsvariable festlegen

# Erstelle eine fiktive Textdatei für die Demonstration
with open("agentbox_info.txt", "w") as f:
 f.write("""
 agntbox.com ist ein führender Technologieblog, der sich auf KI-Tools und deren praktische Anwendungen konzentriert. 
 Wir veröffentlichen Bewertungen, Vergleiche und gehen tief auf neue KI-Frameworks und SDKs ein. 
 Unsere Mission ist es, Entwicklern und Technikbegeisterten zu helfen, KI in ihren Projekten zu verstehen und umzusetzen.
 Gegründet von Nina Torres im Jahr 2023, ist agntbox.com schnell zu einer unverzichtbaren Ressource für objektive Informationen geworden.
 Kürzlich haben wir Themen wie multimodale KI, verantwortungsbewusste KI-Entwicklung und die Zukunft autonomer Agenten behandelt.
 """)

# Dokument laden
loader = TextLoader("agentbox_info.txt")
documents = loader.load()

# Dokument in kleinere Stücke aufteilen
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
texts = text_splitter.split_documents(documents)

print(f"Anzahl der Dokumentstücke: {len(texts)}")
# print(texts[0].page_content) # Ihr könnt ein Stück inspizieren

Hier verwenden wir TextLoader, um den Inhalt zu laden, und dann RecursiveCharacterTextSplitter, um ihn zu zerlegen. Das ist entscheidend, da LLMs Token-Limits haben und Vektordatenbanken am besten mit kleineren, gezielteren Informationsstücken funktionieren.

Schritt 2: Erstellung der Embeddings und einer Vektordatenbank

Als nächstes verwandeln wir diese Textstücke in numerische Darstellungen (Embeddings) und speichern sie in einer Vektordatenbank. Zur Vereinfachung verwende ich FAISS, eine in-memory Vektordatenbank, aber LangChain integriert sich nahtlos mit vielen verfügbaren Optionen wie Pinecone, Chroma, Weaviate usw.


# Embeddings erstellen
embeddings = OpenAIEmbeddings()

# Eine FAISS Vektordatenbank aus den Dokumentstücken und Embeddings erstellen
db = FAISS.from_documents(texts, embeddings)

print("Vektordatenbank erfolgreich erstellt.")

In nur zwei Zeilen haben wir unseren bearbeiteten Text genommen, Embeddings generiert und eine Vektordatenbank gefüllt. Früher erforderte dies einen mehrstufigen Prozess mit separaten Clients und Datenübertragungen.

Schritt 3: Aufbau einer Retrieval-Augmented Generation (RAG) Kette

Jetzt kommen wir zum spaßigen Teil: die Teile zu einem Ganzen zu verbinden, um eine Frage zu beantworten. Wir werden eine RetrievalQA Kette verwenden, ein gängiges Modell für RAG-Anwendungen.


# Initialisiere das LLM
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0.7)

# Erstelle einen Abrufmechanismus aus unserer FAISS-Vektordatenbank
retriever = db.as_retriever()

# Erstelle die RetrievalQA-Kette
qa_chain = RetrievalQA.from_chain_type(
 llm=llm,
 chain_type="stuff", # "stuff" bedeutet, dass alle abgerufenen Dokumente in einem einzigen Prompt verarbeitet werden
 retriever=retriever,
 return_source_documents=True # Gut für das Debugging und die Transparenz
)

# Stelle eine Frage
query = "Wann wurde agntbox.com gegründet und von wem?"
result = qa_chain.invoke({"query": query})

print("\n--- Frage und Antwort ---")
print(f"Frage: {query}")
print(f"Antwort: {result['result']}")
print("\n--- Quell-Dokumente ---")
for doc in result['source_documents']:
 print(f"- {doc.page_content[:100]}...") # Zeige die ersten 100 Zeichen der Quelle an

In diesem Snippet verwaltet die RetrievalQA-Kette den gesamten Ablauf:

  1. Sie nimmt die query des Nutzers entgegen.
  2. Leitet sie an den retriever weiter (der unsere FAISS-Datenbank abfragt).
  3. Ruft die relevantesten Teile der Dokumente ab.
  4. Erstellt einen Prompt für das llm, der die ursprüngliche Anfrage und die abgerufenen Teile enthält.
  5. Sendet den Prompt an das LLM.
  6. Gibt die Antwort des LLM zurück.

Das sind viele komplexe Interaktionen, die von einer einzigen Kette verwaltet werden! Früher hätte ich benutzerdefinierte Funktionen für jeden dieser Schritte geschrieben. Das ist der Punkt, an dem LangChain für mich wirklich glänzt – es abstrahiert einen Großteil der Infrastruktur und erlaubt mir, mich auf die Logik und die Benutzererfahrung zu konzentrieren.

Über die Grundlagen hinaus: Meine bevorzugten Funktionen von LangChain

Obwohl das obige RAG-Beispiel mächtig ist, bietet LangChain noch viel mehr. Hier sind einige Funktionen, die mir wirklich gefallen haben:

Agents: Werkzeuge für LLMs zur Verfügung stellen

Hier wird es wirklich interessant. Die Agents von LangChain ermöglichen es einem LLM zu entscheiden, welche Werkzeuge verwendet werden sollen, um eine Frage zu beantworten oder eine Aufgabe zu erledigen. Stell dir ein LLM vor, das nicht nur Fragen beantworten kann, sondern auch:

  • Aktuelle Informationen im Internet recherchiert.
  • Python-Code ausführt, um Berechnungen durchzuführen.
  • Eine SQL-Datenbank abfragt.
  • Sogar benutzerdefinierte APIs aufruft, die du erstellt hast!

Es ist, als würde man deinem LLM einen Werkzeuggürtel geben. Ich habe dies genutzt, um einen einfachen “Recherche-Agenten” zu erstellen, der Fakten online suchen kann, wenn unser internes Wissensspeicher die Antwort nicht hat. Es ist ein bisschen magisch zu sehen, wie das LLM entscheidet: “Okay, ich weiß das nicht, ich muss das Suchwerkzeug nutzen.”

Ausführbare Schnittstelle und LCEL (LangChain Expression Language)

Das ist eine neuere und benutzerfreundlichere Art, Ketten zu erstellen. Sie ermöglicht es dir, komplexe Sequenzen von Operationen mit einer einfachen Pipe-Syntax (|) zu komponieren, die den Unix-Pipes ähnlich ist. Es ist unglaublich intuitiv, sobald man sich daran gewöhnt hat, und macht Ketten viel lesbarer und komponierbarer.

Wenn ich zum Beispiel die Eingabe eines Benutzers vor der Übertragung an meine RAG-Kette vorverarbeiten wollte, könnte ich etwas wie Folgendes (vereinfachte Version) tun:


from langchain_core.runnables import RunnablePassthrough
from langchain_core.prompts import ChatPromptTemplate

# ... (vorherige Konfiguration für llm und retriever) ...

# Ein einfacher Prompt zur Umformulierung der Frage
rephrase_prompt = ChatPromptTemplate.from_template("Formuliere die folgende Frage um für bessere Suchergebnisse: {question}")

# Eine Kette zur Umformulierung der Frage
rephrase_chain = {"question": RunnablePassthrough()} | rephrase_prompt | llm 

# Kombiniere die Umformulierung mit unserer RAG-Kette
# Hinweis: Dies ist ein vereinfachtes konzeptionelles Beispiel. Die tatsächliche Integration wäre nuancierter.
# Der `retriever` sollte die umformulierte Frage übernehmen.
# Um die Sache zu vereinfachen, zeigen wir nur, wie `rephrase_chain` Teil eines größeren Ablaufs wäre.

# Lass uns die QA-Kette etwas mit LCEL umgestalten, um mehr Klarheit in der Komposition zu schaffen
from langchain_core.output_parsers import StrOutputParser

qa_prompt = ChatPromptTemplate.from_messages([
 ("system", "Du bist ein AI-Assistent für agntbox.com. Antworte auf die Frage des Nutzers nur basierend auf dem bereitgestellten Kontext."),
 ("user", "Kontext: {context}\nFrage: {question}")
])

# Definiere die RAG-Kette unter Verwendung von LCEL
rag_chain = (
 {"context": retriever, "question": RunnablePassthrough()}
 | qa_prompt
 | llm
 | StrOutputParser()
)

# Teste die RAG-Kette
query_lcel = "Was ist die Mission von agntbox.com?"
answer_lcel = rag_chain.invoke({"question": query_lcel})
print(f"\nAntwort der RAG-Kette LCEL: {answer_lcel}")

# Jetzt stell dir vor, die Umformulierung wäre integriert.
# Dies würde normalerweise einen Agenten oder eine komplexere Kette beinhalten,
# bei der die umformulierte Ausgabe die Eingabe für den retriever wird.
# Zur Demonstration:
rephrased_q_result = rephrase_chain.invoke({"question": "Erzähle mir vom Gründer von agntbox"})
print(f"\nUmformulierte Frage: {rephrased_q_result.content}")

Der LCEL macht den Aufbau solcher Abläufe sehr natürlich und fördert die Modularität, was ein großer Vorteil für die Wartbarkeit ist.

Mein ehrliches Urteil: Die Rolle von LangChain in der AI-Toolbox

Also, ist LangChain eine Alleskönner-Lösung? Nein, das ist nichts. Es gibt immer noch eine Lernkurve, und das Verständnis der zugrunde liegenden Konzepte von LLMs, Embeddings und Vektordatenbanken ist nach wie vor entscheidend. Es wird deine Prompts nicht für dich schreiben, und du musst immer kritisch darüber nachdenken, wie du deine AI-Anwendungen strukturierst.

Was LangChain jedoch wirklich gut macht, ist, eine gemeinsame Sprache und ein Set standardisierter Komponenten bereitzustellen, um komplexe AI-Workflows zu erstellen. Dadurch reduziert sich die Menge an Standardcode, die ich schreiben muss, erheblich, und ich kann viel schneller iterieren. Wenn ich auf ein Hindernis stoße, gibt es in der Regel ein gut dokumentiertes Beispiel oder eine Community-Diskussion, die mir hilft.

Für jeden, der ernsthaft Anwendungen im Bereich AI über einfache API-Aufrufe hinaus erstellen möchte, denke ich, dass LangChain ein unverzichtbares Werkzeug wird. Es hilft dir, von “Ich habe ein LLM aufgerufen” zu “Ich habe einen intelligenten Agenten aufgebaut, der denken und handeln kann” zu wechseln.

Praktische Tipps für dein nächstes AI-Projekt

  • Fange klein an: Versuche nicht, gleich am ersten Tag einen Super-Agenten zu bauen. Beginne mit einer einfachen RAG-Kette wie der, die wir demonstriert haben. Mach dich vertraut mit dem Laden von Daten, Textaufteilungen, der Erstellung von Embeddings und Abfragen.
  • Erkunde die Integrationen: LangChain unterstützt eine Vielzahl von LLMs, Embedding-Modellen, Dokumenten-Ladern und Vektorspeichern. Schau dir ihre Dokumentation an, um herauszufinden, was zu deinem bestehenden Stack oder den Anforderungen deines Projekts passt.
  • Denk in Ketten und Agenten: Anstatt monolithische Skripte zu schreiben, versuche deine AI-Aufgaben in kleinere, miteinander verbundene Schritte zu zerlegen. LangChain fördert dieses modulare Denken.
  • Nutze den LCEL: Obwohl es am Anfang etwas anders erscheinen mag, macht die LangChain Expression Language (LCEL) den Aufbau und das Verständnis komplexer Ketten viel klarer. Investiere Zeit, um sie zu lernen.
  • Werde Teil der Community: Die LangChain-Community ist sehr aktiv. Wenn du feststeckst, gibt es gute Chancen, dass jemand anderes ein ähnliches Problem hatte. Diskussionen auf Discord und GitHub sind hervorragende Ressourcen.
  • Konzentration auf das “Warum”: Vergiss niemals *warum* du mit AI baust. LangChain hilft dir beim *Wie*, aber das *Warum* sollte deine Designentscheidungen leiten. Welches Problem löst du für deine Nutzer?

Das ist alles für diese Woche, Freunde! Ich hoffe, diese tiefgehende Erkundung von LangChain gibt dir einen klareren Einblick, wie es deinen AI-Entwicklungsprozess rationalisieren kann. Wenn du LangChain genutzt hast oder Fragen hast, hinterlasse mir einen Kommentar unten! Ich bin immer neugierig auf deine Erfahrungen.

Bis zum nächsten Mal, bleibe kreativ und baue coole Sachen!

Nina Torres, agntbox.com

Verwandte Artikel

🕒 Published:

🧰
Written by Jake Chen

Software reviewer and AI tool expert. Independently tests and benchmarks AI products. No sponsored reviews — ever.

Learn more →
Browse Topics: AI & Automation | Comparisons | Dev Tools | Infrastructure | Security & Monitoring
Scroll to Top