feat(tests): enhance modelTesterSession tests and add proxy logs tests

- Updated modelTesterSession tests to serialize assistant history as output_text and removed mime_type from input_file.
- Introduced new tests for stats proxy logs routes, covering paginated log retrieval and detailed log views with parsed billing details.
- Added server-driven tests for ProxyLogs component to validate API interactions and UI rendering based on server data.
This commit is contained in:
cita
2026-03-09 13:48:39 +08:00
parent 3dcf45851f
commit 136a038538
28 changed files with 1631 additions and 727 deletions
+22 -20
View File
@@ -8,11 +8,11 @@
## 通用配置
Metapi 暴露标准 OpenAI / Claude 兼容接口,下游客户端只需配置两项:
Metapi 暴露标准 OpenAI / Claude 兼容接口,下游客户端通常只需配置两项:
| 配置项 | 值 |
|--------|-----|
| **Base URL** | `https://your-domain.com`(不要拼接 `/v1`,客户端会自动加) |
| **Base URL** | 按客户端字段行为填写:会自动补 `/v1` 的字段填 `https://your-domain.com`;要求完整 API URL 的字段填 `https://your-domain.com/v1` |
| **API Key** | 你设置的 `PROXY_TOKEN` 值,或创建的下游 API Key |
模型列表自动从 `GET /v1/models` 获取,无需手动配置。
@@ -26,7 +26,9 @@ Metapi 暴露标准 OpenAI / Claude 兼容接口,下游客户端只需配置
| `/v1/messages` | POST | Claude Messages |
| `/v1/completions` | POST | OpenAI Completions(Legacy) |
| `/v1/embeddings` | POST | 向量嵌入 |
| `/v1/files` | POST / GET / DELETE | OpenAI Files 上传、列举、读取与删除 |
| `/v1/files` | POST / GET | OpenAI Files 上传与列举 |
| `/v1/files/:fileId` | GET / DELETE | OpenAI Files 读取元信息与删除 |
| `/v1/files/:fileId/content` | GET | OpenAI Files 原始内容读取 |
| `/v1/images/generations` | POST | 图像生成 |
| `/v1/models` | GET | 模型列表 |
@@ -36,7 +38,7 @@ Metapi 暴露标准 OpenAI / Claude 兼容接口,下游客户端只需配置
| 配置项 | 值 |
|--------|-----|
| Settings → Custom Endpoint | `https://your-domain.com` |
| Settings → Custom Endpoint | `https://your-domain.com`(该字段会自动访问 `/v1/*`) |
| API Key | `PROXY_TOKEN` |
### Open WebUI
@@ -50,7 +52,7 @@ Metapi 暴露标准 OpenAI / Claude 兼容接口,下游客户端只需配置
| 配置项 | 值 |
|--------|-----|
| 模型提供商 → OpenAI → API 地址 | `https://your-domain.com` |
| 模型提供商 → OpenAI → API 地址 | `https://your-domain.com/v1` |
| API Key | `PROXY_TOKEN` |
> 说明:Metapi 现在支持标准 OpenAI `/v1/files` 文件链路。
@@ -70,38 +72,38 @@ Metapi 暴露标准 OpenAI / Claude 兼容接口,下游客户端只需配置
```json
{
“env”: {
“ANTHROPIC_BASE_URL”: “https://your-domain.com”,
“ANTHROPIC_API_KEY”: “your-proxy-sk-token”,
“ANTHROPIC_AUTH_TOKEN”: “your-proxy-sk-token”,
“CLAUDE_CODE_ATTRIBUTION_HEADER”: “0”,
“CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC”: “1”
"env": {
"ANTHROPIC_BASE_URL": "https://your-domain.com",
"ANTHROPIC_API_KEY": "your-proxy-sk-token",
"ANTHROPIC_AUTH_TOKEN": "your-proxy-sk-token",
"CLAUDE_CODE_ATTRIBUTION_HEADER": "0",
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
}
}
```
> 说明:不同版本客户端可能读取 `ANTHROPIC_API_KEY` 或 `ANTHROPIC_AUTH_TOKEN`,建议同时设置。
> 说明:`ANTHROPIC_BASE_URL` 这里填根域名,不要手动拼接 `/v1`;不同版本客户端可能读取 `ANTHROPIC_API_KEY` 或 `ANTHROPIC_AUTH_TOKEN`,建议同时设置。
> 上述变量由 Claude Code 客户端读取,属于客户端行为开关;
> `metapi` 服务端无法替代客户端”设置这些变量”,只能处理已经发来的请求。
> `metapi` 服务端无法替代客户端自行设置这些变量,只能处理已经发来的请求。
### Codex CLI
`~/.codex/config.toml`
```toml
model = “gpt-5”
model_provider = “metapi”
model = "gpt-5"
model_provider = "metapi"
[model_providers.metapi]
name = “metapi”
base_url = “https://your-domain.com/v1”
name = "metapi"
base_url = "https://your-domain.com/v1"
```
`~/.codex/auth.json`
```json
{
“OPENAI_API_KEY”: “your-proxy-sk-token”
"OPENAI_API_KEY": "your-proxy-sk-token"
}
```
@@ -109,11 +111,11 @@ base_url = “https://your-domain.com/v1”
### Roo Code / Kilo Code
配置方式与 Cursor 类似,在设置中填入 Base URL 和 API Key。
配置方式与 Cursor 类似,在设置中填入 `https://your-domain.com/v1` 和 API Key。
### 其他客户端
所有支持 OpenAI API 格式的客户端均可接入,只需找到 Base URL 和 API Key 的配置位置即可。
所有支持 OpenAI API 格式的客户端均可接入,只需找到 Base URL 和 API Key 的配置位置即可:如果客户端会自动补 `/v1`,填根域名;如果字段要求完整 OpenAI API URL,就填 `https://your-domain.com/v1`。
## 下游 API Key 策略