一个纯 Web 的 OpenAI 兼容接口调试工具,主要用于调试 llama.cpp (llama-server) 的 POST /v1/chat/completions 接口。
浏览器直接通过 fetch 请求你配置的接口地址,不经过任何后端、不使用 Vite 代理,全部在浏览器端完成。
pnpm installpnpm devpnpm buildhttp://127.0.0.1:8080/v1/chat/completions
在页面顶部输入框可修改,修改后自动保存到本地(localStorage),刷新后恢复。接口地址必须是完整的 HTTP/HTTPS URL,工具不会自动拼接 /v1/chat/completions。
浏览器跨域请求 llama-server 需要服务端允许。启动 llama-server 时加上 CORS 参数:
llama-server -m <model> --port 8080 --cors http://localhost:5173(--cors 可传多个来源,或用 --cors "*" 允许任意来源以便调试。)
- 纯浏览器 Web 应用,无后端服务。
- 不使用 Vite 代理,浏览器直接请求 llama-server。
- Monaco Editor 通过 npm 依赖本地加载,不依赖任何外部 CDN。
- 提供自定义请求头、多模态(图片)、Tool Calling 的专用辅助面板,配合原始 JSON 请求体使用。
- 接口地址:可修改并持久化,发送前校验是否为合法 HTTP/HTTPS URL。
- 请求编辑器:Monaco 编辑完整 JSON 请求体,支持格式化、恢复默认、JSON 语法校验(不合法禁止发送),请求体自动保存。请求区以标签页分栏,除「请求体」外还有「请求头 / 多模态 / 工具」三个辅助面板:
- 请求头:key/value 行编辑自定义请求头,可覆盖默认的
Content-Type/Accept,发送时合并进请求;值持久化到 localStorage。 - 多模态:可视化编辑消息列表,上传/拖拽图片转 base64 的
image_url附件;点「生成并合并」把content序列化为text + image_url数组合并回请求体。 - 工具:可视化编辑
tools与tool_choice,parameters用 Monaco 写 JSON Schema;点「生成并合并」插入请求体。
- 请求头:key/value 行编辑自定义请求头,可覆盖默认的
- 流式 / 非流式:根据请求体中的
stream字段自动选择处理方式(缺失按false)。 - 首 Token 耗时:记录连接耗时、首 Token 耗时与总耗时。
- 响应标签页:
Merged:拼接后的完整 content(含可选的可折叠reasoning_content)。Parsed JSON:对合并内容执行严格JSON.parse,展示递归可折叠对象树;不剥离 Markdown、不自动修复非法 JSON。Raw SSE:逐条展示 SSE 事件(序号、时间、相对毫秒、data、解析结果、是否 DONE、是否解析失败),支持展开/收起、复制、清空展示、自动滚动。Full Response:非流式显示完整 JSON 响应;流式构造统一的调试对象。Schema:当请求体启用response_format.type = "json_schema"时,用 Ajv 校验合并后的 JSON 并展示具体错误路径。Metadata:HTTP 状态码、Content-Type、请求模式、各项耗时、finish_reason、model、id、usage、事件数量、是否停止/出错。Tool Calls:结构化展示响应中的tool_calls(工具名、调用 id、可折叠的完整参数 JSON);流式响应按index累加arguments还原。
- 停止请求:通过
AbortController中断,中断状态显示为"已停止",不是网络错误。 - 历史记录:保存在浏览器 IndexedDB 中,按时间倒序,最多保留 100 条;点击可恢复接口地址、请求体与完整响应;支持删除单条和清空全部(需二次确认)。
- 历史记录存储在浏览器 IndexedDB(表名
llama-api-studio)中。 - 每次请求完成、失败或停止后自动保存一条。
- 浏览器清理网站数据会删除历史记录,且无法恢复。
