Einen lokalen KI-Agenten mit Python, LangChain und Ollama erstellen
Ein lokaler KI-Agent in Python mit LangChain und Ollama ist nicht nur ein Chatbot: Er ist ein Programm, das selbst entscheidet, wann es eine Funktion aufruft, eine Datei liest oder mehrere Schritte nacheinander ausführt, um zu antworten. Dieser Leitfaden zeigt Schritt für Schritt, wie Sie in etwa zwanzig Minuten einen funktionsfähigen Agenten erstellen, mit einem Qwen 3.5 9B-Modell, das vollständig auf Ihrem Computer läuft. Keine API-Schlüssel, keine Datenübertragung an Dritte.
#Warum ein lokaler KI-Agent in Python?
Ein Agent im Sinne von LangChain ist eine einfache Schleife: Das LLM erhält eine Frage und die Liste seiner Werkzeuge, entscheidet sich, eines davon aufzurufen (oder keines), liest das Ergebnis und wiederholt den Vorgang, bis es antworten kann. Die gesamte „Entscheidungsmechanik“ beruht auf der Fähigkeit des Modells, einen strukturierten Werkzeugaufruf zu erzeugen.
Wenn Sie das lokal mit Ollama durchführen, ändern sich zwei konkrete Dinge: Ihre Daten verlassen den Rechner nie, und jeder Aufruf kostet null Euro. Das ist der Unterschied zwischen dem Entwickeln von Prototypen mit OpenAI und einer Rechnung über 50 € am Ende der Woche einerseits und dem Iterieren ohne Rücksicht auf die Kosten andererseits.
- Datenschutz
- Die Dateien, die der Agent liest (Verträge, proprietärer Code, medizinische Notizen), verlassen den Rechner nicht. Kein DPA zu unterschreiben, keine Datenübertragung außerhalb der EU.
- Keine Grenzkosten
- Nach dem Download des Modells können Sie täglich Hunderte von Iterationen durchführen, ohne dass die Gebühren ansteigen.
- Reproduzierbarkeit
- Sie fixieren die exakte Version des Modells (qwen3.5:9b, granite4.2:8b usw.). Keine unbemerkte Drift wie bei gpt-4o-2024-11-20, das einen Monat später etwas anderes ist.
- Vorhersehbare Latenz
- Kein Hin und Her über das Netzwerk. Mit einer ordentlichen GPU erscheint das erste Token in weniger als einer Sekunde.
#Voraussetzungen
Dieser Guide führt Sie zum Modell. Das Kit führt Sie zum Copiloten, der in Ihrem Editor Code schreibt.
- Lebenslanger Online-Zugang
- PDF + Dateien
- Erstattung binnen 30 Tagen
- Python 3.10+
- LangChain wird nicht mehr unter 3.9 getestet. Überprüfen Sie die Version mit python --version.
- Ollama installiert und gestartet
- Ollama muss unter http://localhost:11434 lauschen. Falls Installation und Start noch nicht erfolgt sind, die Installationsanleitungen für Ollama (Windows, macOS, Linux) konsultieren.
- Ein Modell, das Werkzeuge aufrufen kann
- Nicht alle LLM können Tools aufrufen. Qwen 3.5, Granite 4.2, Gemma 4, Devstral und GLM 4.7 Flash unterstützen Tool-Calling nativ. Vermeiden Sie inzwischen veraltete Modelle (Llama 2/3, Qwen 2.5, Mistral 7B).
- Hardware
- Qwen 3.5 9B Q4 benötigt etwa 6,6 GB VRAM. Eine GPU mit 8 GB (RTX 3060, 4060) reicht aus, eine mit 12 GB (4070) bietet Spielraum. Auf einem Mac sollten Sie 16 GB vereinheitlichten Speicher einplanen, um genügend Reserve zu haben.
#1. Das Python-Projekt initialisieren
Eine virtuelle Umgebung, drei Pakete, und das ist alles. Man vermeidet es, LangChain in der systemweiten Python-Umgebung zu installieren — LangChain verändert sich schnell und bringt Unordnung in diese Umgebung.
- langchain
- Der Kern: Promptabstraktionen, Werkzeuge, Nachrichten.
- langchain-ollama
- Die offizielle Ollama-Integration. Seit 2024 vom LangChain-Team gepflegt.
- langgraph
- Für die Agentenschleife. Das ist die derzeit empfohlene Engine, stabiler als die früheren AgentExecutor.
#2. Von Python aus eine Verbindung zu Ollama herstellen
Bevor man einen Agenten aufbaut, prüft man, ob man tatsächlich mit dem Modell kommuniziert. Laden Sie das Modell herunter, falls Sie das noch nicht getan haben, und testen Sie anschließend den einfachsten möglichen Aufruf.
Der Download ist in Q4_K_M etwa 6,6 GB groß (der Standardquantisierung bei Ollama). Sobald das Modell eingerichtet ist, erstellen Sie das erste Skript:
Wenn Sie einen kohärenten Satz sehen, funktioniert die Verbindung Python ↔ Ollama. Falls ein ConnectionError auftritt, überprüfen Sie, ob Ollama ordnungsgemäß läuft (ollama ps sollte einen aktiven Dienst auflisten).
#3. Die Werkzeuge des Agenten definieren
Ein LangChain-Tool ist einfach eine Python-Funktion, die mit @tool dekoriert ist. Der Docstring wird zur Beschreibung, die das LLM sieht – das Modell nutzt sie, um zu entscheiden, wann es die Funktion aufruft. Seien Sie präzise: Ein vager Docstring führt zu zufälligen Aufrufen.
Wir erstellen zwei repräsentative Werkzeuge: eines zur Auswertung arithmetischer Ausdrücke und eines zum Lesen von Dateien.
Drei Regeln, um sicherzustellen, dass das Modell Tools korrekt verwendet:
- Aussagekräftiger Name
- calculer statt process, lire_fichier statt get. Das LLM orientiert sich bei der Auswahl zuerst am Namen.
- Ausführlicher Docstring
- Beschreiben Sie, was das Tool tut, was es erwartet und was es zurückgibt. Die Python-Typannotationen werden von LangChain gelesen und dem Modell zugänglich gemacht.
- Einen String zurückgeben
- Immer. Wenn die Funktion ein dict oder ein Objekt zurückgibt, serialisiert LangChain es, aber das Ergebnis ist für das Modell weniger gut lesbar.
#4. Den Agenten zusammenbauen
Wir haben ein LLM und Werkzeuge. Die Funktion create_react_agent von langgraph verbindet beide und steuert die Schleife: Solange das Modell Werkzeuge aufrufen möchte, geht es weiter; sobald es mit Text antwortet, wird die Schleife beendet.
Legen Sie zum Testen eine kleine Datei notes.txt daneben an:
#5. Die Schleife ausführen und beobachten
Sie sollten eine Antwort sehen, die sowohl das Berechnungsergebnis (7.006.652) als auch eine Zusammenfassung des Dateiinhalts enthält. Aufschlussreicher ist es jedoch, zu sehen, was während der Ausführung passiert. Fügen Sie diesen Modus mit ausführlicher Ausgabe hinzu, um die Schleife Schritt für Schritt zu verfolgen:
Sie werden den typischen Ablauf eines Agenten beobachten: Das Modell erzeugt einen Aufruf von calculer, erhält das Ergebnis, erzeugt einen Aufruf von lire_fichier, erhält den Inhalt und generiert dann die endgültige Antwort. Drei Iterationen für eine einzige Benutzerfrage.
#Tipps und Fehlerbehebung
- Zu kurzer Kontext
- Standardmäßig kürzt Ollama den Kontext auf 2048 Tokens. Wenn Ihr Agent mehrere Tools nacheinander aufruft, wird diese Grenze schnell überschritten. Setzen Sie num_ctx=8192 in ChatOllama(model="...", num_ctx=8192).
- Modell, das Werkzeuge halluziniert
- Wenn der Agent Funktionsnamen erfindet, senken Sie die Temperatur auf 0 und formulieren Sie den System-Prompt neu, indem Sie die verfügbaren Werkzeuge ausdrücklich auflisten.
- Unendliche Schleife
- Setzen Sie eine Grenze: create_react_agent(..., recursion_limit=10). Wird sie überschritten, beendet sich der Agent kontrolliert.
- Zu hohe Latenz
- Auf einer CPU erreicht ein 9B-Modell 5–10 Tokens/s. Wechseln Sie zu qwen3.5:4b (3,4 GB VRAM, 30+ Tokens/s auf einer einfachen GPU), wenn die Qualität für Ihren Anwendungsfall weiterhin akzeptabel ist.
- Fehler „context length exceeded“
- Die Zusammenfassung einer langen Datei überschreitet num_ctx. Fügen Sie ein zwischengeschaltetes Werkzeug hinzu, das die Datei in Chunks aufteilt, oder erhöhen Sie num_ctx auf bis zu 32768, sofern Ihr VRAM ausreicht.
#Weiterführende Informationen
Sie haben einen Agenten, der lokal rechnet, liest und Schlussfolgerungen zieht. Drei naheliegende Richtungen zur Vertiefung:
- Ihm Zugriff auf Ihre Dokumente geben
- Den Agenten mit einer Vektordatenbank verbinden, damit er Fragen zu einem internen Korpus beantworten kann — genau darum geht es im Einführungsleitfaden zu lokalem RAG.
- Für die Arbeit am Code die CLI nutzen
- Aider ist ein Entwicklungsagent, der Ihre Dateien direkt vom Terminal aus bearbeitet. Sie können ihn mit derselben Ollama-Instanz verbinden und Qwen3-Coder 30B oder Devstral für die assistierte Bearbeitung nutzen.
- Quantisierung des Modells einstellen
- Wenn Ihnen Qwen 3.5 9B Q4 zu langsam ist oder seine Qualität gerade noch ausreicht, erklärt der Leitfaden zur Quantisierung, wann Sie zu Q5_K_M wechseln oder ein kleineres Modell wählen sollten.
Haben Sie Feedback, einen Fehler entdeckt oder möchten Sie etwas präzisieren? Geben Sie uns Bescheid – so wird der Guide für alle besser.