{
"id": "chatcmpl-mock-821bae6b",
"object": "chat.completion",
"created": 1735689600,
"model": "mock-gpt-4o-mini",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello, mock model!"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 5,
"completion_tokens": 5,
"total_tokens": 10
}
}Was es tut
Der Mock-LLM-Responder erzeugt deterministische Mock-Antworten von LLM-APIs zum Testen von Clients. Wähle ein Szenario - echo, vorgefertigte Antwort, gestreamtes gedichtartiges Lorem, HTTP-429-Rate-Limit, HTTP-500-Serverfehler oder langsame Chunks - und er liefert das OpenAI-artige Chat-Completion-JSON, den SSE-Event-Stream (data:-Zeilen mit [DONE]-Terminator und Chunk-Timing-Markern) sowie einen curl-Befehl, der den Request gegen einen lokalen Stub wiederholt. Kein API-Key, kein Konto, kein Netzwerk: Alles wird in deinem Browser aus einem festen Seed berechnet, sodass dieselbe Konfiguration immer byte-identische Ausgabe erzeugt - genau das, was eine reproduzierbare Client-Test-Suite braucht.
So verwendest du es
- Wähle ein Szenario aus der Dropdown-Liste (z. B.
Streamed loremfür einen gestückelten Stream,Error 429zum Testen von Backoff). - Setze den Modellnamen und die Max-tokens-Obergrenze, die dein Client sendet.
- Tippe den User-Prompt - das
echo-Szenario gibt ihn wortwörtlich als Assistant-Nachricht zurück. - Wechsle zwischen den Ausgabe-Tabs Completion JSON, SSE-Stream und curl und kopiere, was du brauchst.
- Nutze die Timing-Anzeige (
first byte/inter-chunk), um deinen Stub wie ein echtes Modell pausieren zu lassen, oder kopiere den Teilen-Link, um die exakte Konfiguration an ein Teammitglied zu schicken.
Beispiele
Echo-Szenario (Standardeinstellungen) - Completion-JSON:
{
"id": "chatcmpl-mock-821bae6b",
"object": "chat.completion",
"created": 1735689600,
"model": "mock-gpt-4o-mini",
"choices": [
{
"index": 0,
"message": { "role": "assistant", "content": "Hello, mock model!" },
"finish_reason": "stop"
}
],
"usage": { "prompt_tokens": 5, "completion_tokens": 5, "total_tokens": 10 }
}
Streamed lorem - SSE-Stream (gekürzt). Der führende :-Kommentar ist der Chunk-Timing-Marker:
: mock scenario=streamed-lorem first-byte=60ms inter-chunk=40ms
data: {"id":"chatcmpl-mock-36156cc1","object":"chat.completion.chunk","created":1735689600,"model":"mock-gpt-4o-mini","choices":[{"index":0,"delta":{"role":"assistant","content":"comet nebula prism comet "},"finish_reason":null}]}
data: {"id":"chatcmpl-mock-36156cc1","object":"chat.completion.chunk","created":1735689600,"model":"mock-gpt-4o-mini","choices":[{"index":0,"delta":{"content":"vector prism lumen\nvector "},"finish_reason":null}]}
...
data: {"id":"chatcmpl-mock-36156cc1","object":"chat.completion.chunk","created":1735689600,"model":"mock-gpt-4o-mini","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{"prompt_tokens":5,"completion_tokens":63,"total_tokens":68}}
data: [DONE]
Error 429 - Completion-JSON:
{
"error": {
"message": "Rate limit reached for the mock model. Please retry after 1 second.",
"type": "rate_limit_error",
"code": "rate_limit_exceeded"
}
}
curl-Tab - wiederholt den Request gegen einen lokalen Stub auf Port 8080:
# Local stub: reply 200 with the body shown in the JSON tab.
curl -s http://localhost:8080/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{"model":"mock-gpt-4o-mini","messages":[{"role":"user","content":"Hello, mock model!"}],"max_tokens":64}'
Gut zu wissen
- Deterministisch by Design: IDs, Lorem-Text und Zeitstempel stammen aus einem Seed, der aus deinem Szenario, Modell und der Token-Obergrenze abgeleitet wird - nie aus der Uhr oder
Math.random(). Gleiche Einstellungen rein, gleiche Bytes raus. Dascreated-Feld ist die feste Epoche1735689600(2025-01-01). - Chunks setzen sich exakt wieder zusammen: Die konkatenierten Inhalte aller SSE-Deltas ergeben genau den Nachrichteninhalt der Completion - du kannst dein Stream-Parsing also gegen den JSON-Tab prüfen.
- Token-Rechnung: ~4 Zeichen pro Token, mindestens 1; das Erreichen der
Max tokens-Obergrenze kipptfinish_reasonauf"length". - Privat: läuft 100% clientseitig - kein Request verlässt deinen Browser.
- Verwandte Tools: LLM Cost Calculator, Token Estimator, HTTP Methods Tester.