Ihr Laptop kann ein Modell mit 70 Milliarden Parametern hinter demselben OpenAI-ähnlichen Endpunkt bereitstellen, den Sie in die Produktion bringen. Tauschen Sie eine Basis-URL aus, und Ihr Code funktioniert weiterhin. Diese einzige Änderung ermöglicht Offline-Entwicklung, null Kosten pro Token und einen privaten Pfad für regulierte Daten, weshalb Hacker News „Lokale KI muss die Norm sein“ an einem Tag von 633 auf 1.760 Punkte hochkatapultierte. Der folgende Artikel zeigt Ihnen, wie Sie eine Laufzeitumgebung auswählen, den Endpunkt freilegen, Ihren Client darauf richten und den gesamten Workflow mit Apidog testen, bevor Sie Änderungen an einem gehosteten Modell vornehmen.
TL;DR
Sie können eine lokale LLM-API auf Ihrem Laptop mit Ollama, vLLM oder llama.cpp ausführen, und jeder dieser Dienste stellt einen OpenAI-kompatiblen REST-Endpunkt bereit. Ändern Sie base_url in http://localhost:11434/v1 in Ihrem bestehenden OpenAI-Client, und derselbe Code läuft ohne Umschreiben gegen Llama 3.3, DeepSeek V4 oder Qwen 3.6. Steuern Sie den gesamten Workflow von Apidog aus, damit Ihre Szenariotests in lokalen und gehosteten Umgebungen identisch bleiben.
Einführung
Der lokale LLM-API-Stack entwickelte sich innerhalb von achtzehn Monaten vom Forschungsprojekt zum täglichen Werkzeug. Apple lieferte 128 GB Unified Memory im M3 Max aus. Ollama erreichte eine Million wöchentliche Downloads. vLLM überschritt die Marke von 30.000 GitHub-Sternen. Die größte Veränderung war jedoch sozialer Natur. Jede wichtige Laufzeitumgebung spricht jetzt die OpenAI /v1/chat/completions-Form. Sie müssen nicht länger zwei Client-Pfade pflegen. Derselbe SDK-Aufruf trifft localhost oder api.openai.com, basierend auf einer Umgebungsvariable.
Das ist wichtig für API-Entwickler, da Ihre bestehenden Tools weiterhin funktionieren. Ihre Anforderungsvorlagen in Apidog zeigen auf https://api.openai.com/v1/chat/completions. Wechseln Sie die Basis-URL-Variable, drücken Sie auf Senden, und Sie erhalten dieselbe JSON-Antwort von einem Modell, das auf Ihrer eigenen GPU läuft. Kein neues Schema. Kein neuer Authentifizierungsfluss. Wenn Sie bereits API-Ausgaben pro Funktion verfolgen, können Sie ein lokales Modell mit einem gehosteten Modell A/B-testen und beobachten, wie die Kosten sinken, während die Latenz steigt.
Dieser Leitfaden führt Sie durch die Auswahl der Laufzeitumgebung, die Server-Einrichtung, die Client-Verdrahtung, Szenariotests, Kompromisse bei der Quantisierung und eine Kosten-vs-Latenz-Tabelle für vier aktuelle Modelle. Die Codebeispiele wurden mit Ollama 0.6 und vLLM 0.7 unter macOS 15.4 und Ubuntu 24.04 getestet. Für einen breiteren Überblick über die Optionen siehe Beste lokale LLMs 2026. Externe Referenzen für jede Behauptung finden Sie am Ende.
Warum lokale LLMs für API-Entwickler sinnvoll sind
Sie liefern Code aus, der eine LLM aufruft. Sie debuggen diesen Code auch im Flugzeug, auf Konferenzen mit schlechtem WLAN und innerhalb von Kundennetzwerken, die den ausgehenden Datenverkehr zu *.openai.com blockieren. Eine lokale LLM-API bietet Ihnen eine Entwicklungsumgebung, die die Produktion ohne Netzwerkabhängigkeit widerspiegelt.
Das Thema Datenschutz ist am wichtigsten. HIPAA, DSGVO und der EU AI Act behandeln Prompts als Benutzerdaten, sobald sie Patientennotizen, Verträge oder biometrische Kennungen enthalten. Das Senden dieser Nutzlast an einen gehosteten Endpunkt schafft eine Datenverarbeitungsbeziehung, die Sie dokumentieren, prüfen und erneuern müssen. Ein Modell, das Ihre Hardware nie verlässt, erspart diesen Papierkram vollständig. Die Leitlinien des Europäischen Datenschutzausschusses von 2024 zur KI-Verarbeitung besagen, dass die Inferenz auf dem Gerät die meisten Verpflichtungen zur grenzüberschreitenden Datenübermittlung gemäß Artikel 44 aufhebt.
Die Kosten entwickeln sich in die andere Richtung. Ein Team, das täglich 50 Millionen Prompt-Tokens durch GPT-5.5 Instant jagt, zahlt bei 5 $ pro Million Tokens etwa 250 $ pro Tag. Das gleiche Volumen auf einem 4.500 $ teuren M3 Max Studio amortisiert sich nach achtzehn Tagen voller Auslastung auf Null, Stromkosten ignoriert. Eine Aufschlüsselung dieser Zahlen können Sie unter Wie man GPT-5.5 Instant verwendet nachlesen und die gleiche Berechnung auf Ihre eigene Arbeitslast anwenden.
Der dritte Grund ist Determinismus. Gehostete Modelle ändern Gewichte hinter Ihrem Rücken. Die Modell-Deprecationsseite von OpenAI listet elf Snapshot-Ausmusterungen in den letzten zwölf Monaten auf. Ein lokales Modell ist eine Datei auf der Festplatte. Es erzeugt heute und in drei Jahren dieselben Logits. Diese Stabilität ist wichtig, wenn Ihre Regressionstest-Suite vom LLM-Output abhängt. Der OpenAI-kompatible Endpunkt hat das Spiel verändert, weil Sie keine Integrationsgebühr mehr für diese Stabilität zahlen. Das SDK, das Sie bereits verwenden, funktioniert.
Drei Laufzeitumgebungen, die OpenAI-kompatible Endpunkte bereitstellen
Vier Laufzeitumgebungen dominieren den Bereich der lokalen LLM-APIs im Jahr 2026. Drei davon liefern einen OpenAI-kompatiblen REST-Server direkt mit. Die vierte, llama.cpp, liefert einen als Teil ihres llama-server-Binärprogramms. Wählen Sie nach Arbeitslast, nicht nach Popularität.
Ollama
Ollama ist der einfachste Einstieg. Ein Binärprogramm, eine CLI, ein HTTP-Server auf Port 11434. Es richtet sich an Entwickler, die ein einzelnes Modell auf einer einzelnen Maschine ausführen, und übernimmt für Sie Modelldownloads, GGUF-Quantisierung und Prompt-Templating.

## install on macOS
brew install ollama
ollama serve &
ollama pull llama3.3:70b-instruct-q4_K_M
ollama run llama3.3:70b-instruct-q4_K_M
Sobald ollama serve läuft, befindet sich der OpenAI-kompatible Endpunkt unter http://localhost:11434/v1. Er unterstützt Chat, Embeddings und Streaming. Der Durchsatz auf einem M3 Max mit einem 70B Q4_K_M Modell liegt bei etwa 12 Tokens pro Sekunde. Kleinere Modelle erreichen 80 bis 120 Tokens pro Sekunde. Ollama ist die richtige Wahl für die Einzelplatzentwicklung, Demos und CI-Runner.
vLLM
vLLM ist die produktionsreife Option. Es verwendet PagedAttention und kontinuierliches Batching, um den Durchsatz zwei- bis viermal höher zu treiben als naive Runner. Es läuft standardmäßig auf Port 8000 und stellt eine OpenAI-kompatible API unter /v1 bereit. Details zur Architektur können Sie im vLLM-Paper von Kwon et al. SOSP 2023 unten nachlesen.

pip install vllm
vllm serve meta-llama/Llama-3.3-70B-Instruct \
--port 8000 \
--gpu-memory-utilization 0.9 \
--max-model-len 8192
Auf einem einzelnen H100 liefert vLLM Llama 3.3 70B mit etwa 2.400 Tokens pro Sekunde bei gleichzeitigen Anfragen. Es benötigt eine CUDA-GPU oder eine aktuelle AMD ROCm-Karte und läuft nicht auf Apple Silicon, was es zur falschen Wahl für Laptops und zur richtigen Wahl für gemeinsam genutzte Entwicklungscluster macht.
llama.cpp
llama.cpp ist die C++-Laufzeitumgebung, die das GGUF-Ökosystem ins Leben gerufen hat. Es läuft überall, vom Raspberry Pi 5 bis zu Dual-RTX-5090-Rigs. Sein llama-server-Binärprogramm spricht die OpenAI-Form unter /v1/chat/completions.

git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp && make -j LLAMA_METAL=1
./llama-server -m models/llama-3.3-70b-q4_k_m.gguf \
--port 8080 --host 0.0.0.0 -c 8192 -ngl 99
Das Flag -ngl 99 lagert alle Schichten auf die GPU aus. llama.cpp gibt Ihnen die größte Kontrolle über Quantisierung, Batching und Speicherzuordnung. Es ist die richtige Wahl, wenn Sie ein Modell in 16 GB VRAM quetschen oder exotische Hardware testen müssen.
LM Studio und Jan verpacken llama.cpp in einer GUI und stellen ebenfalls einen OpenAI-Endpunkt auf einem konfigurierbaren Port bereit. Sie sind nützlich für nicht-technische Benutzer in Ihrem Team, die Prompts testen müssen, ohne ein Terminal zu berühren.
Eine einfache Python-Prüfung, ob der Endpunkt funktioniert:
from openai import OpenAI
client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")
resp = client.chat.completions.create(
model="llama3.3:70b-instruct-q4_K_M",
messages=[{"role": "user", "content": "Reply with the word OK only."}],
)
print(resp.choices[0].message.content)
Wenn Sie OK sehen, stimmen Laufzeitumgebung, Port und SDK-Vertrag überein. Sie sind bereit, den Endpunkt in Ihre Tools zu integrieren.
Testen Sie Ihre lokale LLM mit Apidog
Eine lokale LLM-API ist nur dann nützlich, wenn Ihre Test-Suite sie auf dieselbe Weise erreichen kann wie die Produktion. Apidog handhabt dies mit Umgebungsvariablen in der Anforderungsvorlage, was bedeutet, dass ein Projekt beide Ziele abdeckt.

Der Ablauf umfasst fünf Schritte.
- Öffnen Sie Ihr Apidog-Projekt und erstellen Sie eine neue Umgebung namens
Local. Fügen Sie eine VariableBASE_URLmit dem Werthttp://localhost:11434/v1hinzu. Fügen SieAPI_KEYmit dem Wertollamahinzu. Speichern Sie. - Klonen Sie Ihre bestehende OpenAI-Umgebung, benennen Sie sie in
Productionum, behalten SieBASE_URLalshttps://api.openai.com/v1undAPI_KEYals Ihren gehosteten Schlüssel bei. - Ersetzen Sie in jeder Anfrage, die einen Chat-Endpunkt aufruft, den fest codierten Host durch
{{BASE_URL}}und den Auth-Header durchBearer {{API_KEY}}. Die Anforderungs-URL wird zu{{BASE_URL}}/chat/completions. - Erstellen Sie einen Szenariotest, der die Anfrage ausführt, bestätigt, dass
choices[0].message.role == "assistant"ist, bestätigt, dasschoices[0].message.contentnicht leer ist und bestätigt, dassusage.total_tokens > 0ist. Speichern Sie das Szenario. - Führen Sie das Szenario gegen
Localaus. Wechseln Sie die Umgebungsauswahl zuProduction. Führen Sie es erneut aus. Die Bestätigungen sollten für beide bestehen.
Dasselbe Szenario dient auch als Smoke-Test für Laufzeit-Upgrades. Nach einem ollama pull auf einen neuen Tag führen Sie das Local-Szenario erneut aus. Wenn sich die Form der Antwort ändert, erkennen Sie dies, bevor Anwendungs-Code die neuen Gewichte berührt. Das Muster erstreckt sich auf das Testen von KI-Agenten, die mehrstufige APIs aufrufen.
Für die programmatische Nutzung wechselt das OpenAI Python SDK die Ziele mit einem einzigen Schlüsselwortargument:
import os
from openai import OpenAI
def get_client():
if os.getenv("ENV") == "local":
return OpenAI(
base_url="http://localhost:11434/v1",
api_key="ollama",
)
return OpenAI(api_key=os.environ["OPENAI_API_KEY"])
client = get_client()
response = client.chat.completions.create(
model=os.getenv("MODEL", "llama3.3:70b-instruct-q4_K_M"),
messages=[
{"role": "system", "content": "You are a JSON-only assistant."},
{"role": "user", "content": "Return {\"status\": \"ok\"}."},
],
response_format={"type": "json_object"},
)
print(response.choices[0].message.content)
Die JavaScript-Form spiegelt dies wider:
import OpenAI from "openai";
const client = new OpenAI({
baseURL: process.env.ENV === "local"
? "http://localhost:11434/v1"
: "https://api.openai.com/v1",
apiKey: process.env.ENV === "local" ? "ollama" : process.env.OPENAI_API_KEY,
});
const resp = await client.chat.completions.create({
model: process.env.MODEL || "llama3.3:70b-instruct-q4_K_M",
messages: [{ role: "user", content: "Say hi." }],
});
console.log(resp.choices[0].message.content);
Integrieren Sie Apidogs Szenario-Runner in Ihre CI, indem Sie das Projekt als apidog-cli-Sammlung exportieren und apidog run in GitHub Actions aufrufen. Der Runner gibt einen Exit-Code ungleich Null bei fehlgeschlagenen Assertions zurück, was den Build fehlschlagen lässt, sobald ein lokaler oder gehosteter Vertrag abweicht. QA-Ingenieure können denselben Workflow in bestehende API-Test-Pipelines integrieren.
Fortgeschrittene Techniken und Pro-Tipps
Quantisierung ist der Hebel, der entscheidet, ob ein 70B-Modell auf Ihren Laptop passt. Das GGUF-Format speichert Gewichte mit 8, 6, 5, 4, 3 oder 2 Bits pro Parameter. Q4_K_M ist aus gutem Grund der Standard. Es verliert 0,6 Prozentpunkte im MMLU-Benchmark gegenüber FP16 und schrumpft ein 70B-Modell von 140 GB auf 40 GB. Q8 hält Sie innerhalb von 0,1 Punkten von FP16, verdoppelt aber den Festplatten- und RAM-Bedarf. Q2_K spart Platz, aber der Perplexitätsverlust ist bei Aufgaben mit langem Kontext sichtbar. Wählen Sie Q4_K_M für Chat, Q8 für Codegenerierung und Q5_K_M, wenn Sie genügend RAM haben und eine Sicherheitsmarge wünschen.
Die GPU-Auslagerung über das -ngl-Flag in llama.cpp oder die Option num_gpu in Ollama steuert, wie viele Transformer-Schichten auf der GPU liegen. Stellen Sie diese so hoch ein, wie Ihr VRAM es zulässt. Jede Schicht, die auf die CPU zurückfällt, reduziert den Durchsatz um etwa 30 Prozent. Auf einer 24-GB-Karte passen 40 von 80 Schichten eines 70B Q4-Modells. Auf 48 GB können Sie den gesamten Stack unterbringen.
Speicherabbildung (mmap) ist standardmäßig in llama.cpp und Ollama aktiviert. Sie ermöglicht es dem Betriebssystem, Gewichte bei Bedarf einzulagern, anstatt das gesamte Modell beim Start zu reservieren. Lassen Sie es aktiviert, es sei denn, Sie arbeiten in einem Container mit strengen Speicherlimits. Wenn mmap deaktiviert ist, sinkt die Latenz des ersten Tokens um etwa 200 ms, aber der RAM-Verbrauch verdoppelt sich.
Batching ist die Superkraft von vLLM. Senden Sie 32 gleichzeitige Anfragen, und vLLM gruppiert sie in einem einzigen GPU-Durchlauf. Der Durchsatz skaliert nahezu linear zur Rechenleistung der GPU. Setzen Sie --max-num-seqs 64 für Laptops mit gemeinsam genutztem CPU-Speicher und --max-num-seqs 256 für H100-Klasse-Hardware.
Streaming-Antworten halbieren die wahrgenommene Latenz. Setzen Sie stream=True im OpenAI SDK, und der Server leert Tokens, sobald sie generiert werden. Das erste Byte kommt in 200 bis 500 ms an, anstatt auf die vollständige Generierung zu warten. Jede Laufzeitumgebung in diesem Leitfaden unterstützt dies.
Ollamas Modelfile ermöglicht es Ihnen, einen System-Prompt, die Temperatur und Stop-Sequenzen in ein benanntes Modell einzubetten, damit Ihr Anwendungscode sauber bleibt. Führen Sie ollama create my-assistant -f Modelfile einmal aus, und Ihr Client zeigt auf my-assistant, anstatt den System-Prompt bei jeder Anfrage zu wiederholen.
Häufige Fehler
- Hardcodieren von
http://localhost:11434im Produktionscode. Verwenden Sie eine Umgebungsvariable. - Vergessen, dass lokale Modelle
max_tokensnicht erzwingen. Sie generieren gerne 4.096 Tokens an unnötigem Output. Legen Sie eine Stoppsequenz fest. - Ollama und eine andere Laufzeitumgebung auf demselben Port ausführen. Beide verwenden standardmäßig saubere Ports, aber benutzerdefinierte Ports kollidieren stillschweigend.
- Den
Authorization-Header weglassen. Ollama ignoriert ihn, aber vLLM mit--api-keyweist nicht authentifizierte Anfragen mit einem 401 zurück. - Ein Q4-Modell laden und GPT-5.5-Qualität bei Mathematik erwarten. Quantisierung verschlechtert die Denkfähigkeit am schnellsten.
Lokal vs. gehostet: Kosten- und Latenzberechnung
Die untenstehenden Zahlen gehen von einem M3 Max mit 128 GB Unified Memory für den lokalen Betrieb und den aktuellen öffentlichen Preisen für gehostete Endpunkte aus. Die Zeit bis zum ersten Token (TTFT) wird kalt, ohne Batching, bei einem 1.024-Token-Prompt gemessen.
| Modell | Lokale TTFT | Lokaler Durchsatz | Gehostetes Äquivalent | Gehosteter Preis | Gehostete TTFT |
|---|---|---|---|---|---|
| Llama 3.3 70B Q4_K_M | 1.2 s | 12 tok/s | GPT-5.5 Instant | $5 / $30 per 1M | 200 ms |
| DeepSeek V4 67B Q4_K_M | 1.4 s | 10 tok/s | DeepSeek-Chat hosted | $0.55 / $2.20 per 1M | 280 ms |
| Qwen 3.6 32B Q5_K_M | 0.7 s | 28 tok/s | Qwen-Max hosted | $1.60 / $6.40 per 1M | 240 ms |
| Gemma 4 27B Q4_K_M | 0.5 s | 35 tok/s | Gemini 3 Flash | $0.35 / $1.05 per 1M | 180 ms |
Die gehostete Spalte gewinnt immer bei der Latenz. Die lokale Spalte gewinnt bei den Kosten, sobald Sie täglich etwa 10 Millionen Tokens überschreiten, und sie gewinnt beim Datenschutz ab der ersten Anfrage. Für die Entwicklung möchten Sie fast immer lokal arbeiten. Für die benutzerorientierte Produktion möchten Sie fast immer gehostet arbeiten, es sei denn, Ihre Datenklassifizierung verbietet es.
Ein praktisches Muster: Führen Sie lokal während des inneren Entwicklungszyklus aus, wechseln Sie zu gehostet im Staging, halten Sie beide Ziele in CI grün. Die Apidog-Szenariotests aus dem obigen Abschnitt unterstützen dieses Muster mit einem einzigen Umgebungsumschalter. Für tiefere Benchmarks zu einzelnen Modellen siehe Wie man DeepSeek V4 lokal ausführt und den ursprünglichen DeepSeek V4 Benutzerleitfaden.
Anwendungsfälle aus der Praxis
Ein Finanztechnologie-Compliance-Team in Singapur verwendet Ollama auf den Laptops der Ingenieure, um Berichte über verdächtige Aktivitäten zu erstellen. Die Prompts enthalten Kontonummern und Transaktionsmuster, die das Land gemäß den MAS-Regeln nicht verlassen dürfen. Der gehostete Endpunkt, den sie in der Produktion verwenden, erhält eine redigierte Version desselben Prompts. Apidog-Szenarien stellen sicher, dass der Redaktor bei jeder Anfrage ausgeführt wird, bevor sie localhost verlässt.
Ein Spielestudio in Stockholm schult Designpraktikanten im Prompt Engineering mit einer lokalen Qwen 3.6-Instanz. Kostenlos, offline und unmöglich, die Lore des nächsten Spiels an Dritte weiterzugeben. Dasselbe Projekt wird in der Produktion mit einer einzigen Umgebungsvariablenänderung gegen Gemini 3 Flash ausgeliefert. Sie verwenden den Gemini 3 Flash API-Leitfaden für die Produktionsverdrahtung wieder.
Ein Healthcare-Startup betreibt vLLM auf einem gemieteten A100 innerhalb des Krankenhausnetzwerks des Kunden. Der Endpunkt ist niemals über öffentliches DNS erreichbar. Ihre Integrationstests laufen von einem Jenkins-Agenten im selben VLAN gegen dasselbe OpenAI SDK, das sie lokal verwenden. Derselbe Code, drei Bereitstellungsziele, eine Szenarien-Suite.
Fazit
Der lokale LLM-API-Stack entwickelte sich schnell. Sie können Ihre Prompts von einem gehosteten Endpunkt verschieben, ohne Ihren Client, Ihre Tests oder Ihre CI neu schreiben zu müssen. Die fünf Schritte, die dies ermöglichen:
- Wählen Sie Ollama für Laptops, vLLM für gemeinsam genutzte Entwicklungscluster, llama.cpp für knappe Speicherbudgets.
- Stellen Sie den OpenAI-kompatiblen Endpunkt bereit und verifizieren Sie ihn mit einem einzeiligen Curl-Befehl.
- Verschieben Sie
base_urlundapi_keyin Umgebungsvariablen, damit derselbe Code lokal und gehostet ausgeführt wird. - Erstellen Sie Szenariotests in Apidog, die identisch in beiden Umgebungen ausgeführt werden.
- Beachten Sie die Kosten-vs-Latenz-Tabelle und wählen Sie das richtige Ziel pro Arbeitslast.
Das HN-Signal, das „Lokale KI muss die Norm sein“ über 1.700 Punkte katapultierte, ist eine Folge dieser Reife. Sobald die API-Oberfläche stabilisiert war, passte sich jedes Entwicklertool daran an. Laden Sie Apidog herunter und richten Sie eine Umgebung auf http://localhost:11434/v1, um zu sehen, wie schnell der Zyklus geschlossen wird. Wenn Sie noch kein Modell ausgewählt haben, beginnen Sie mit Beste lokale LLMs 2026, und wenn Sie tiefer in das Testen agentischer Abläufe auf diesen Endpunkten eintauchen möchten, lesen Sie Wie man KI-Agenten-APIs testet.
