可以的内部有接口可以动态管理配置
^-^ 管理接口文档
概述
Deno API Router 提供了一套管理接口,用于查看服务状态、动态管理 API Key 以及手动触发配置重载。
基础地址:http://localhost:8080(端口可通过 PORT 环境变量修改)
1. 获取服务状态
GET /admin/status
查看所有模型配置、端点、Key 的实时状态。
请求示例
bash
curl http://localhost:8080/admin/status
响应示例
json
{
"[0] ^gpt-4.* (regex)": [
{
"base_url": "https://api.openai.com/v1",
"weight": 10,
"keys": {
"total": 3,
"active": 3,
"cooldown": 0
}
},
{
"base_url": "https://api.openai-proxy1.com/v1",
"weight": 3,
"keys": {
"total": 3,
"active": 3,
"cooldown": 0
}
}
],
"[1] ^gpt-3\\.5.* (regex)": [
{
"base_url": "https://api.openai.com/v1",
"weight": 8,
"keys": {
"total": 4,
"active": 4,
"cooldown": 0
}
}
],
"[2] claude-* (prefix)": [
{
"base_url": "https://api.anthropic.com/v1",
"weight": 4,
"keys": {
"total": 2,
"active": 2,
"cooldown": 0
}
}
],
"* (default)": [
{
"base_url": "https://api.openai.com/v1",
"weight": 1,
"keys": {
"total": 2,
"active": 2,
"cooldown": 0
}
}
]
}
字段说明
字段 |
说明 |
|---|
base_url |
上游服务地址 |
weight |
负载均衡权重 |
keys.total |
该端点配置的 Key 总数 |
keys.active |
当前活跃可用的 Key 数量 |
keys.cooldown |
处于冷却状态的 Key 数量 |
2. 动态添加 API Key
POST /admin/add-key
运行时动态添加新的 API Key,无需重启服务。
请求参数
参数 |
类型 |
必填 |
说明 |
|---|
model_pattern |
string |
 |
模型匹配模式(与配置文件中的 name 一致) |
base_url |
string |
 |
端点 Base URL(必须与配置中完全匹配) |
key |
string |
 |
要添加的 API Key |
请求示例
bash
curl -X POST http://localhost:8080/admin/add-key \
-H "Content-Type: application/json" \
-d '{
"model_pattern": "^gpt-4.*",
"base_url": "https://api.openai.com/v1",
"key": "sk-proj-new-key-xxxxx"
}'
响应示例
text
OK
错误响应
状态码 |
说明 |
|---|
400 |
缺少必填参数 |
404 |
模型模式或 Base URL 不存在 |
3. 动态移除 API Key
POST /admin/remove-key
运行时动态移除指定的 API Key。
请求参数
参数 |
类型 |
必填 |
说明 |
|---|
model_pattern |
string |
 |
模型匹配模式 |
base_url |
string |
 |
端点 Base URL |
key |
string |
 |
要移除的 API Key |
请求示例
bash
curl -X POST http://localhost:8080/admin/remove-key \
-H "Content-Type: application/json" \
-d '{
"model_pattern": "^gpt-4.*",
"base_url": "https://api.openai.com/v1",
"key": "sk-proj-old-key-xxxxx"
}'
响应示例
text
OK
错误响应
状态码 |
说明 |
|---|
400 |
缺少必填参数 |
404 |
模型模式或 Base URL 不存在 |
4. 手动触发配置重载
POST /admin/reload
手动触发配置文件重载(通常热加载已自动监听文件变化,此接口用于手动触发)。
请求示例
bash
curl -X POST http://localhost:8080/admin/reload
响应示例
json
{
"message": "Reload endpoint is handled by file watcher"
}
5. 代理请求(主要功能)
POST /v1/*
转发请求到上游 AI 服务,自动路由到匹配的模型配置。
请求示例
bash
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4",
"messages": [
{"role": "user", "content": "Hello, world!"}
]
}'
支持的路径
路径 |
说明 |
|---|
/v1/chat/completions |
聊天补全(最常用) |
/v1/completions |
文本补全 |
/v1/embeddings |
向量嵌入 |
/v1/models |
模型列表 |
/v1/* |
其他兼容 OpenAI API 的路径 |
状态码说明
状态码 |
说明 |
|---|
200 |
请求成功 |
400 |
请求参数错误 |
404 |
路径或模型配置不存在 |
429 |
API Key 被限流,自动切换重试 |
502 |
所有 API Key 均失败 |
503 |
无可用端点或 Key |
使用场景示例
场景一:查看当前服务健康状况
bash
# 查看所有 Key 状态
curl http://localhost:8080/admin/status | jq .
场景二:新增一个 API Key
bash
# 添加新的 OpenAI Key
curl -X POST http://localhost:8080/admin/add-key \
-H "Content-Type: application/json" \
-d '{"model_pattern":"^gpt-4.*","base_url":"https://api.openai.com/v1","key":"sk-new-key"}'
场景三:移除一个失效的 API Key
bash
# 移除失效 Key
curl -X POST http://localhost:8080/admin/remove-key \
-H "Content-Type: application/json" \
-d '{"model_pattern":"^gpt-4.*","base_url":"https://api.openai.com/v1","key":"sk-invalid-key"}'