200 OK
{
"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
}
}分块: 1首字节: 20 ms分块间隔: 25 ms
功能说明
Mock LLM Responder 为客户端测试生成确定性的模拟 LLM API 响应。选择一个场景 - echo(回显)、canned answer(预设答案)、streamed poem-ish lorem(流式假文)、HTTP 429 限流、HTTP 500 服务器错误或 slow chunks(慢速分块)- 它会生成 OpenAI 风格的 chat completion JSON、SSE 事件流(带 [DONE] 终止符和分块计时标记的 data: 行),以及一条可以向本地桩服务重放该请求的 curl 命令。无需 API key、无需账号、无网络请求:一切都由浏览器根据固定种子计算得出,因此相同的配置总是产生逐字节相同的输出 - 这正是可复现的客户端测试套件所需要的。
使用方法
- 从下拉框中选择场景(例如
Streamed lorem用于分块流,Error 429用于测试退避逻辑)。 - 设置你的客户端将要发送的模型名称和 Max tokens 上限。
- 输入用户提示词 -
echo场景会把它原样作为 assistant 消息返回。 - 在输出标签页之间切换 Completion JSON、SSE stream 和 curl,复制你需要的那个。
- 利用计时读数(
first byte/inter-chunk)让你的桩服务像真实模型一样休眠,或点击 Copy share link 把精确的配置发给队友。
示例
Echo 场景(默认设置) - 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 流(节选)。开头的 : 注释行是分块计时标记:
: 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 标签页 - 向本地 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}'
补充说明
- 设计上即确定性:id、lorem 文本和时间戳都来自由场景、模型和 token 上限派生的种子 - 从不取自时钟或
Math.random()。相同的设置进,相同的字节出。created字段是固定的纪元值1735689600(2025-01-01)。 - 分块可精确重组:所有 SSE delta 的 content 依次拼接后等于 completion 的 message content - 因此你可以对照 JSON 标签页对流解析做断言。
- Token 计算:每 token 约 4 个字符,下限为 1;达到
Max tokens上限会把finish_reason翻转为"length"。 - 私密: 100% 客户端运行 - 没有任何请求离开你的浏览器。
- 相关工具:LLM Cost Calculator、Token Estimator、HTTP Methods Tester。