Sanjeever/llama-api-studio

一个纯 Web 的 OpenAI 兼容接口调试工具,主要用于调试 llama.cpp (`llama-server`) 的 `POST /v1/chat/completions` 接口。

★ 1Forks 0TypeScriptGitHub ↗Compare

README

Llama API Studio

一个纯 Web 的 OpenAI 兼容接口调试工具,主要用于调试 llama.cpp (llama-server) 的 POST /v1/chat/completions 接口。

浏览器直接通过 fetch 请求你配置的接口地址,不经过任何后端、不使用 Vite 代理,全部在浏览器端完成。

screenshot

安装

pnpm install

启动开发服务器

pnpm dev

构建

pnpm build

默认接口地址

http://127.0.0.1:8080/v1/chat/completions

在页面顶部输入框可修改,修改后自动保存到本地(localStorage),刷新后恢复。接口地址必须是完整的 HTTP/HTTPS URL,工具不会自动拼接 /v1/chat/completions。

llama.cpp 跨域说明

浏览器跨域请求 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;点「生成并合并」插入请求体。
  • 流式 / 非流式:根据请求体中的 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)中。
  • 每次请求完成、失败或停止后自动保存一条。
  • 浏览器清理网站数据会删除历史记录,且无法恢复。

Contributors

Sanjeever

Issues