DEV Community

Uhltak Therestismysecret
Uhltak Therestismysecret

Posted on

Lokale LLMs mit Ollama: Selbsthosten, API-Anbindung & Co.

Lokale LLMs mit Ollama: Modelle selbst hosten und per API anbinden

Die Zeiten, in denen KI ein reines Cloud-Thema war, sind vorbei. Mit Ollama können Sie jetzt Groß-Modelle direkt auf Ihrem eigenen Server laufen lassen – ohne monatliche API-Gebühren, ohne Datenabflüsse zu Drittanbietern. Ich zeige Ihnen, wie Sie das Tool nutzen, um eine lokale Instanz von Modellen wie llama3 oder mistral bereitzustellen und diese per REST-API in Ihre Apps einzubinden.

Warum lokal? Die Vorteile im Überblick

Der Hauptvorteil lokaler LLMs ist die Datensouveränität. Keine sensiblen Unternehmensdaten verlassen Ihr Netzwerk. Daneben fallen keine Kosten pro Token an, was sich bei hohem Volumen schnell auszahlt. Die Performance hängt natürlich von Ihrer Hardware ab – eine NVIDIA GPU macht hier den Unterschied.

Meine Erfahrung: Für Chatbots im Intranet oder Code-Assistenten reicht oft schon eine RTX 3060 (12 GB VRAM), wenn man Quantisierung richtig einstellt.

Beispiel 1: Schnellstart mit Docker
Starten Sie Ollama in Sekunden mit einem einfachen Docker-Befehl. Das Image enthält alles Nötige und bindet automatisch die Host-GPU ein (unter Linux):

sudo docker run -d --gpus=all -p 11434:11434 -v ollama:/root/.ollama --name ollama-instance ollama/ollama
Enter fullscreen mode Exit fullscreen mode

So haben Sie sofort einen lauschenden Dienst unter http://localhost:11434. Ein Aufruf von /api/tags zeigt alle geladenen Modelle an.

Vom Modell-Pull zur ersten Abfrage

Sobald der Container läuft, holen Sie sich ein Modell mit ollama pull llama3. Intern wird das Modell heruntergeladen, dekomprimiert und im Verzeichnis /root/.ollama/models gespeichert. Um es zu testen, öffnen Sie eine zweite Shell im Container (docker exec -it <container_id> /bin/bash) und tippen Sie einfach ollama run llama3. Der Interaktive Modus fragt nach Ihrer Eingabe und generiert dann eine Antwort basierend auf dem Kontextfenster des Modells.

Beispiel 2: Die API für Entwickler
Für echte Anwendungen nutzen wir die JSON-basierte API. Hier ein cURL-Beispiel, das eine Frage an das laufende Modell stellt:

curl http://localhost:11434/api/generate -d '{
  "model": "llama3",
  "prompt": "Erkläre mir kurz, wie Docker Volumes funktionieren",
  "stream": false
}'
Enter fullscreen mode Exit fullscreen mode

Die Ausgabe ist ein JSON-Objekt mit dem Feld response, das die Antwort des Modells enthält. Aktivieren Sie Stream (true), um Tokens live zu erhalten – wichtig für flüssige UIs.

Integration in Python-Skripte

Oft möchten Sie KI-Funktionen tief in Ihre Logik integrieren. Dank der kompatiblen OpenAI-Schnittstelle geht das mit minimalen Code-Anpassungen. Installieren Sie einfach die Bibliothek (pip install openai) und legen Sie den Client so fest:

Beispiel 3: Python-Skript mit lokalem Endpunkt

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:11434/v1",
    api_key="ollama" # Key wird ignoriert, ist aber Pflicht
)

completion = client.chat.completions.create(
    model="llama3",
    messages=[{"role": "user", "content": "Schreibe ein Gedicht über Linux."}]
)
print(completion.choices[0].message.content)
Enter fullscreen mode Exit fullscreen mode

Dieses Skript nutzt die moderne Chat-Kompletionssyntax, unterstützt also mehrere Rollen (System, User, Assistant) für komplexere Prompts.

Häufige Fehler und Performance-Tipps

Ein häufiger Anfängerfehler ist das Vergessen der GPU-Bindung in Docker – dann läuft die KI rein auf der CPU, was extrem langsam ist. Prüfen Sie mit nvidia-smi, ob der Container wirklich Zugriff hat. Ein weiterer Punkt ist das RAM: Große Modelle (>13B Parameter) brauchen viel Arbeitsspeicher. Wenn Sie „Out of Memory“ sehen, wechseln Sie zu einer quantisierten Version wie llama3:8b-q4_K_M. Diese komprimierte Variante behält meist >90% der Qualität, braucht aber deutlich weniger Ressourcen.

Fazit: Ihr nächster Schritt

Mit Ollama haben Sie eine leistungsfähige Basis geschaffen. Testen Sie zuerst llama3 oder phi3 auf Ihrer Maschine, spielen Sie mit der Temperatur (Kreativität) und dem Top-K (Varioation) herum. Sobald das klappt, schreiben Sie eine kleine Wrapper-Funktion in Ihrer Anwendungs-Sprache, die auf diesen lokalen Port zugreift. Damit besitzen Sie eine skalierbare, private KI-Infrastruktur.

Top comments (0)