Übungen - LangGraph & Advanced Workflows¶
🎯 Lernziele¶
In diesen Übungen werden Sie: - Ihren ersten LangGraph für Risikoklassifizierung erstellen - Ein komplexes Routing-System mit spezialisierten Expertenknoten implementieren - Eine Compliance-Workflow mit mehrstufiger Genehmigung aufbauen - Workflows mit Mermaid-Diagrammen visualisieren
Aufgabe 1: Grundlagen - Einfacher Risk-Classifier¶
Ziel: Erstellen Sie Ihren ersten LangGraph für die Risikoklassifizierung
Starter-Code (Grundgerüst)¶
Beginnen Sie mit diesem Template und implementieren Sie die fehlenden Funktionen:
from typing import TypedDict, Optional
from langgraph.graph import StateGraph, END
# Zustandstyp definieren
class RiskState(TypedDict):
question: str
risk_level: Optional[str]
response: Optional[str]
def classify_risk(state):
# TODO: Implementieren Sie die Klassifizierungslogik
# Hinweis: Analysieren Sie die Frage und bestimmen Sie das Risikolevel
pass
def handle_risk(state):
# TODO: Implementieren Sie die Behandlungslogik
# Hinweis: Basierend auf risk_level eine angemessene Antwort generieren
pass
# Graph aufbauen
graph = StateGraph(RiskState)
graph.add_node("classify", classify_risk)
graph.add_node("handle", handle_risk)
graph.add_edge("classify", "handle")
graph.add_edge("handle", END)
graph.set_entry_point("classify")
app = graph.compile()
Implementierungshinweise¶
- classify_risk() Funktion:
- Analysieren Sie die Eingabefrage nach Schlüsselwörtern
- Klassifizieren Sie als "high", "medium" oder "low" risk
-
Rückgabe:
{"risk_level": "high"} -
handle_risk() Funktion:
- Erstellen Sie unterschiedliche Antworten basierend auf dem Risikolevel
- Rückgabe:
{"response": "Detaillierte Analyse erforderlich"}
Testfälle¶
# Test Ihres Risk-Classifiers
test_cases = [
{"question": "Kreditrisiko bei Immobilienfinanzierung"},
{"question": "Routine Kontobewegung prüfen"},
{"question": "Verdächtiger Geldtransfer erkannt"}
]
for test in test_cases:
result = app.invoke(test)
print(f"Input: {test['question']}")
print(f"Risk Level: {result['risk_level']}")
print(f"Response: {result['response']}\n")
Vollständiger Starter-Code: simple_langgraph_example.py
Aufgabe 2: Routing-Workflow für Finanzrisiken¶
Ziel: Implementierung eines komplexen Routing-Systems mit spezialisierten Expertenknoten
Arbeitsanweisung¶
Nutzen Sie das Jupyter Notebook für die schrittweise Entwicklung: LangGraph Übungen Notebook
Zu implementierende Funktionen¶
- classify_risk_type() - Risikotyp bestimmen (Marktrisiko, Kreditrisiko, etc.)
- financial_expert() - Finanzrisiko-Analyse
- compliance_expert() - Compliance-Prüfung
- route_to_expert() - Dynamisches Routing
Erweiterte StateGraph-Struktur¶
class AdvancedRiskState(TypedDict):
question: str
risk_type: Optional[str]
risk_level: Optional[str]
expert_analysis: Optional[str]
final_recommendation: Optional[str]
def classify_risk_type(state):
# TODO: Bestimmen Sie den Risikotyp
# "market", "credit", "operational", "compliance"
pass
def financial_expert(state):
# TODO: Spezialisierte Finanzrisikoanalyse
pass
def compliance_expert(state):
# TODO: Compliance-spezifische Prüfung
pass
def route_to_expert(state):
# TODO: Routing-Logik implementieren
risk_type = state["risk_type"]
if risk_type == "market":
return "financial_expert"
elif risk_type == "compliance":
return "compliance_expert"
# ... weitere Routing-Regeln
Template: minimal_financial_graph.py
Aufgabe 3: Compliance-Workflow mit mehrstufiger Genehmigung¶
Ziel: Automatisierte Dokumentenprüfung mit Eskalationslogik
Workflow-Beschreibung¶
- Dokumentenanalyse - Automatische Prüfung eingehender Dokumente
- Risk-Assessment - Bewertung des Compliance-Risikos
- Approval-Routing - Weiterleitung basierend auf Risikostufe:
- Low Risk → Automatische Genehmigung
- Medium Risk → Manager Approval
- High Risk → Senior Management + Legal Review
Advanced Features¶
- Multi-Level-Approval: Verschiedene Genehmigungsebenen
- Eskalationslogik: Automatische Weiterleitung bei Zeitüberschreitung
- Audit-Trail: Vollständige Dokumentation aller Schritte
Erweiterte Implementierung: financial_compliance_graph.py
Aufgabe 4: Workflow-Visualisierung¶
Ziel: Erstellen Sie Mermaid-Diagramme Ihrer Workflows für bessere Verständlichkeit
Visualisierungs-Tools¶
Verfügbare Tools: - mermaid_risk_graph.py - Mermaid-Diagramm Generierung - langgraph_visualization.py - Graph-Darstellung mit verschiedenen Formaten
Beispiel-Visualisierung¶
def create_risk_workflow_diagram():
mermaid_code = """
graph TD
A[Start: Risk Question] --> B[Classify Risk Type]
B --> C{Risk Type?}
C -->|Market| D[Financial Expert]
C -->|Credit| E[Credit Expert]
C -->|Compliance| F[Compliance Expert]
D --> G[Generate Report]
E --> G
F --> G
G --> H[End: Final Recommendation]
"""
return mermaid_code
# Diagramm rendern und speichern
diagram = create_risk_workflow_diagram()
save_mermaid_diagram(diagram, "risk_workflow.png")
🛠️ Setup & Voraussetzungen¶
Installation¶
# Alle Abhängigkeiten installieren
pip install -r requirements.txt
# Zusätzliche Pakete für Visualisierung
pip install jupyter matplotlib graphviz pillow
API-Konfiguration¶
- OpenAI API-Schlüssel erforderlich
- Konfiguration in
credentials.ymloder Environment Variables - Kostenlose Credits verfügbar unter platform.openai.com
Arbeitsumgebung¶
- Empfohlen: Jupyter Notebook für iterative Entwicklung
- Alternative: VS Code mit Python Extension
- Testing: Verwenden Sie bereitgestellte Testdaten
📋 Erfolgskriterien¶
Aufgabe 1 - Risk Classifier¶
- [ ] Funktionale classify_risk() und handle_risk() Funktionen
- [ ] Korrekte Risikoklassifizierung für Testfälle
- [ ] StateGraph kompiliert und läuft ohne Fehler
Aufgabe 2 - Routing Workflow¶
- [ ] Conditional Routing basierend auf Risikotyp implementiert
- [ ] Spezialisierte Expertenfunktionen funktional
- [ ] Komplexer StateGraph mit mehreren Pfaden
Aufgabe 3 - Compliance Workflow¶
- [ ] Multi-Level Approval Logic implementiert
- [ ] Eskalationslogik für verschiedene Risikostufen
- [ ] Audit-Trail Funktionalität
Aufgabe 4 - Visualisierung¶
- [ ] Mermaid-Diagramm erfolgreich generiert
- [ ] Graph-Struktur visuell verständlich dargestellt
- [ ] Export in verschiedene Formate (PNG, SVG)
💡 Tipps & Hilfestellungen¶
Einstiegshilfen¶
- Beginnen Sie mit dem einfachsten Beispiel und erweitern Sie schrittweise
- Nutzen Sie
print()-Statements um den State-Flow zu verfolgen - Testen Sie jeden Knoten einzeln, bevor Sie den kompletten Graph ausführen
Debugging¶
# Graph-Struktur anzeigen
app.get_graph().print_ascii()
# State zwischen Knoten verfolgen
def debug_node(state):
print(f"Current state: {state}")
return state
# Debug-Knoten in Graph einfügen
graph.add_node("debug", debug_node)
Häufige Probleme¶
- API-Fehler: OpenAI API-Schlüssel und Guthaben prüfen
- Import-Fehler: Alle Pakete aus requirements.txt installieren
- Graph-Visualisierung: Internetverbindung für Mermaid-API erforderlich
📚 Weiterführende Ressourcen¶
- LangGraph Dokumentation - Offizielle Dokumentation
- LangChain Academy - Kostenlose Kurse und Tutorials
- GitHub Examples - Praktische Beispiele
💡 Nächster Schritt: Nach Abschluss der Übungen schauen Sie sich die Musterlösungen an