{
"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
}
}Ce que ça fait
Le Mock LLM Responder génère des réponses d’API LLM factices et déterministes pour tester des clients. Choisissez un scénario - echo, réponse préécrite, lorem pseudo-poétique en streaming, limite de débit HTTP 429, erreur serveur HTTP 500, ou chunks lents - et il produit le JSON de chat completion façon OpenAI, le flux d’événements SSE (lignes data: avec terminateur [DONE] et marqueurs de temporisation des chunks), et une commande curl qui rejoue la requête contre un stub local. Pas de clé d’API, pas de compte, pas de réseau : tout est calculé dans votre navigateur à partir d’une graine fixe, donc la même configuration produit toujours une sortie identique à l’octet près - exactement ce qu’une suite de tests client reproductible exige.
Comment l’utiliser
- Choisissez un Scenario dans le menu déroulant (p. ex.
Streamed lorempour un flux en chunks,Error 429pour tester le backoff). - Définissez le nom du Model et le plafond de Max tokens que votre client enverra.
- Saisissez le User prompt - le scénario
echole renvoie verbatim comme message de l’assistant. - Passez des onglets Output entre Completion JSON, SSE stream et curl, et copiez celui dont vous avez besoin.
- Utilisez la lecture de temporisation (
first byte/inter-chunk) pour faire dormir votre stub comme un vrai modèle, ou Copy share link pour envoyer la configuration exacte à un collègue.
Exemples
Scénario echo (réglages par défaut) - 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 - flux SSE (abrégé). Le commentaire : initial est le marqueur de temporisation des chunks :
: 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"
}
}
Onglet curl - rejouer la requête contre un stub local sur le 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}'
Bon à savoir
- Déterministe par conception : les ids, le texte lorem et les horodatages viennent d’une graine dérivée de votre scénario, modèle et plafond de tokens - jamais de l’horloge ni de
Math.random(). Mêmes réglages en entrée, mêmes octets en sortie. Le champcreatedest l’epoch fixe1735689600(2025-01-01). - Les chunks se réassemblent exactement : le contenu de chaque delta SSE, concaténé, est égal au contenu du message de la completion - vous pouvez donc vérifier votre parsing de flux contre l’onglet JSON.
- Calcul des tokens : ~4 caractères par token, plancher de 1 ; atteindre le plafond
Max tokensfait passerfinish_reasonà"length". - Privé : fonctionne 100 % côté client - aucune requête ne quitte votre navigateur.
- Outils liés : LLM Cost Calculator, Token Estimator, HTTP Methods Tester.