Add available-models admin tab with live model list and latency probing
build / build (push) Successful in 2m29s
build / build (push) Successful in 2m29s
This commit is contained in:
@@ -11,6 +11,7 @@
|
||||
- 上游 SSE 直接透传为 OpenAI SSE;非流式请求在本地聚合为 OpenAI Chat Completion JSON。
|
||||
- OpenAI 函数/工具调用:支持 `tools`、`tool_choice`、流式 `delta.tool_calls`、非流式 `message.tool_calls` 以及 `role: tool` 结果续传。
|
||||
- Token 消耗统计:流式与非流式请求均解析上游 `usage`,按模型/按日/最近明细写入本地 SQLite(`zhanlu.db`),凭据也一并持久化在同一个库中。管理页提供 `GET /admin/stats` 可视化与 `GET /api/stats` JSON 接口。
|
||||
- 可用模型:管理后台新增「可用模型」tab,实时拉取上游 `/gateway/v1/model/info` 返回的模型列表,并提供单模型可用性及首字延时(TTFT)探测(`GET /api/models`、`POST /api/models/test`)。
|
||||
|
||||
## 运行
|
||||
|
||||
@@ -234,6 +235,22 @@ curl http://127.0.0.1:8080/v1/models `
|
||||
|
||||
设置 `ZHANLU_STATS_DISABLED=true` 可停止写入统计。
|
||||
|
||||
## 可用模型
|
||||
|
||||
管理后台「可用模型」tab(位于「Token 统计」之后)实时展示当前上游接口返回的模型列表,并提供单模型可用性与延时探测:
|
||||
|
||||
- 进入 tab 时自动拉取一次,也可随时点击「刷新」重新获取。
|
||||
- 每个模型行可单独「测试」,或点击「全部测试」依次探测所有模型。
|
||||
- 探测向上游 `/chat/completions` 发送一条极简流式请求(`hi`),测量首字延时(TTFT,首个 SSE 数据块到达时间)与总耗时,并在收到首个内容块后立即关闭连接,避免消耗额外 token。
|
||||
- 探测请求不计入 Token 统计。
|
||||
|
||||
对应 JSON 接口(需先登录管理页面):
|
||||
|
||||
- `GET /api/models`:实时返回上游模型列表 `{"ok":true,"models":["GLM-4.7",...]}`。
|
||||
- `POST /api/models/test`:请求体 `{"model":"<model_id>"}`,返回 `{"ok":true,"model":"...","available":true,"ttft_ms":123,"total_ms":456}` 或 `{"ok":true,"model":"...","available":false,"error":"...","total_ms":789}`。
|
||||
|
||||
探测超时上限为 30 秒(`modelTestTimeout`);凭据未配置或 API Key 缺失时 `GET /api/models` 与 `POST /api/models/test` 会按需自动换取 API Key,与聊天接口一致。
|
||||
|
||||
## 安全说明
|
||||
|
||||
- `zhanlu.db` 数据库包含明文 `AccessKey`、`SecretKey`、`Token` 和 `apiKey`,请不要提交到仓库。
|
||||
|
||||
Reference in New Issue
Block a user