Startseite / Artikel

LangChain gegen LangGraph: Rollen, Benutzer und wann man welches verwenden sollte

Was LangChain und was LangGraph beinhalten: Ketten im Vergleich zu dauerhaften Graphen, für wen jede Bibliothek eigentlich bestimmt ist, sowie eine Checkliste zur Auswahl einer der Bibliotheken.

Verlag: REACTAPP.TOP4 Min. Lesezeit965 Wörter

Quellen: LangChain and LangGraph Explained: What They Are, Who Uses Them, and How to Build AI Agents with Them

Dieser Leitfaden erstellt erneut einen nutzbaren Ablauf für das Buch „LangChain und LangGraph erklärt: Was sie sind, wer sie verwendet und wie man mit ihnen KI-Agenten erstellt“. Der Fokus liegt auf Verträgen, Überprüfungen sowie Code, den man ohne Rückschluss auf die Absicht in ein Repository einfügen kann. Zur Übersicht sollten vor der Änderung des Codes die Eingaben, der Verantwortliche für den Schritt sowie die Abbruchkriterien definiert werden. Operator sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf versteckte Zustände schließen zu müssen. Halten Sie die Konfiguration außerhalb des Anwendungscode. Umgebungsdateien, Geheimdatenspeicher sowie Feature-Flags sollten an einem Ort gespeichert sein, den Operator überprüfen können, ohne den gesamten Ablauf durchlesen zu müssen.

llm = ChatOpenAI()
if (userAskedForFlights()) {
    callFlightApi();
}
if (resultsAvailable()) {
    summarizeResults();
}
User Question
      ↓
Reason
      ↓
Search Tool
      ↓
Analyze Result
      ↓
Answer
User Request
      |
      +---- Search
      |
      +---- Database
      |
      +---- Human Approval
                |
                v
             Continue
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
    model="gpt-4o"
)
def get_weather(city):
    return weather_api(city)
tools = [get_weather]
Need weather information
weather = get_weather("Bangalore")
{
  "temperature": 34,
  "condition": "Sunny"
}
The current temperature in Bangalore is 34°C and the weather is sunny.
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="gpt-4o"
)
response = llm.invoke(
    "Explain microservices in simple terms."
)
print(response.content)
User Request
      |
      v
Analyze Request
      |
      +---- Search Agent
      |
      +---- Database Agent
      |
      +---- Human Review
      |
      v
Generate Final Response
from langgraph.graph import StateGraph

builder = StateGraph(AgentState)

builder.add_node("search", search_node)
builder.add_node("answer", answer_node)

builder.set_entry_point("search")

builder.add_edge("search", "answer")

graph = builder.compile()
class AgentState(TypedDict):
    question: str
    search_result: str
    answer: str


Example:

{
  "question": "What is LangGraph?",
  "search_result": "",
  "answer": ""
}
def search_node(state):
    ...
builder.add_node("search", search_node)
builder.add_node("answer", answer_node)
builder.add_edge(
    "search",
    "answer"
)
builder.set_entry_point("search")
graph = builder.compile()
              State
                │
                ▼
        ┌─────────────┐
        │   Search    │  ← Node
        └─────────────┘
                │
                │  ← Edge
                ▼
        ┌─────────────┐
        │   Answer    │  ← Node
        └─────────────┘
                │
                ▼
         Updated State

Nachricht von AI Mind

Für „Nachricht von AI Mind“ sollten Sie die Eingaben, den Verantwortlichen für den Schritt sowie die Abbruchkriterien vor dem Ändern des Codes definieren. Die Operator sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf versteckte Zustände schließen zu müssen. Dokumentieren Sie sowohl den erfolgreichen Ablauf als auch den Notfallweg gemeinsam. Wiederholungsversuche, menschliche Überprüfungen sowie die Handhabung von Fehlnachrichten gehören zum Produkt selbst und nicht zu späteren Optimierungen. Binden Sie die Toolschemata streng fest. Weite freitextbasierte Argumente begünstigen Injection-Angriffe und machen Audits kostspielig.

Operative Kontrollliste

Für die Betriebskontrollliste sollten vor dem Ändern des Codes die Eingaben, der Verantwortliche für den Schritt sowie die Beendigungskriterien definiert werden. Die Operator sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf versteckte Zustände schließen zu müssen.

Erhalten Sie neben den funktionalen Ergebnissen auch Aufzeichnungen zu Zeiten und Kosten. Frühzeitige Sichtbarkeit verhindert überraschende Rechnungen, wenn der Ablauf von einer Demo-Umgebung in eine gemeinsam genutzte Umgebung wechselt.

Führen Sie einen Checkpoint nach teuren Modellaufrufen durch, damit ein erneuter Versuch nicht denselben Aufwand nochmals berechnet.

Halten Sie den Graphenzustand einfach und typisiert. Verschachtelte Datenstrukturen verbergen, welcher Knoten welches Feld geschrieben hat, und führen zu Störungen beim Wiederaufnehmen nach Unterbrechungen.

Schreiben Sie ein kurzes Handbuch: Wie werden Schlüssel ausgetauscht, wie wird die Warteschlange geleert und wie wird der letzte Änderung rückgängig gemacht?

Ziehen Sie kleine, testbare Einheiten vor großen Skripten vor. Wenn ein Schritt fehlschlägt, sollte der Fehler auf eine einzige Verantwortung verweisen und nicht auf einen verworrenen Ablaufprozess.

Vor der Einführung des Stacks sollten Versionen eingefroren werden, ein „goldener Transkript“ für den kritischen Pfad erstellt und die Rollback-Schritte bestätigt werden. Geteilte Umgebungen benötigen Geschwindigkeitsbeschränkungen, Überprüfungen der Zuordnung sowie einen klaren Verantwortlichen für die Rotation von Geheimnissen. Man sollte langweilige Zuverlässigkeit vor cleveren, einmaligen Demonstrationen bevorzugen.

Zur Absicherung nach Note 0 sollten Eingaben, der Verantwortliche für den Schritt sowie die Abbruchkriterien bereits vor dem Code-Ändern definiert werden. Die Operator sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf versteckten Zustände schließen zu müssen.

Halten Sie die Konfiguration außerhalb des Anwendungscode. Umgebungsdateien, Geheimnisdatenbanken und Feature-Flags sollten an einem Ort gespeichert werden, den die Operator ohne das Durchlesen des gesamten Systems überprüfen können.

Trennen Sie Planung von Tool-Exekution. Der Planer schlägt vor; der Ausführende führt aus; der Überprüfer prüft die Ergebnisse im Vergleich zum Ziel.

Zur Sicherheitshinweis 1: Definieren Sie die Eingaben, den Verantwortlichen für den Schritt sowie die Abbruchkriterien, bevor Sie Code ändern. Die Operator sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf versteckte Zustände schließen zu müssen.

Wählen Sie kleine, testbare Einheiten statt umfangreicher Skripte. Wenn ein Schritt fehlschlägt, sollte der Fehler auf eine einzige Verantwortung verweisen und nicht auf ein verworrenes Ablaufverfahren.

Begrenzen Sie die Schemata der Tools streng. Weite Freitexteingaben ermöglichen Angriffe durch Dateninjektionen und machen Audits kostspielig.

Zur Sicherheitshinweis 2: Definieren Sie die Eingaben, den Verantwortlichen für den Schritt sowie die Abbruchkriterien, bevor Sie Code ändern. Die Operator sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf versteckte Zustände schließen zu müssen.

Erhalten Sie neben den funktionalen Ergebnissen auch Informationen zu Laufzeiten und Kosten. Frühzeitige Sichtbarkeit verhindert überraschende Rechnungen, wenn der Ablauf von einer Demo in gemeinsame Umgebungen übergeht.

Checkpoint nach teuren Modellaufrufen, damit ein erneuter Versuch nicht denselben Vorgang erneut berechnet.

Zur Stärkung der Sicherheit gemäß Anmerkung 3 sollten Eingaben, Verantwortliche für die Schritte sowie Abbruchkriterien vor dem Codeändern definiert werden. Die Operator sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf versteckte Zustände schließen zu müssen.

Dokumentieren Sie sowohl den erfolgreichen Ablauf als auch den Notfallweg gemeinsam. Wiederholte Versuche, menschliche Überprüfungen sowie die Handhabung fehlerhafter Nachrichten gehören zum Produkt selbst und nicht zu späteren Optimierungen.

Trennen Sie Planung von Tool-Exekution. Der Planer schlägt vor; der Ausführende führt aus; der Überprüfer prüft die Ergebnisse im Vergleich zum Ziel.