介面模組使用指南
日誌模組
功能說明
介面字首統一為 http(s)://<your-domain>
生產環境應使用 HTTPS 以保證認證令牌。 HTTP 僅建議用於開發環境。
分層的日誌查詢系統,支援管理員檢視全站日誌和使用者檢視個人日誌 。提供實時統計(RPM/TPM)、多維度過濾、歷史資料清理等功能。支援 CORS 的 Token 查詢介面便於第三方整合。
🔐 無需鑑權
根據 Token 查詢日誌
- 介面名稱:根據 Token 查詢日誌
- HTTP 方法:GET
- 路徑:
/api/log/token - 鑑權要求:公開
- 功能簡介:透過 Token 金鑰查詢相關日誌記錄,支援跨域訪問
💡 請求示例:
const response = await fetch('/api/log/token?key=`<TOKEN_PLACEHOLDER>`', {
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
});
const data = await response.json();✅ 成功響應示例:
{
"success": true,
"message": "",
"data": [
{
"id": 1,
"type": 2,
"content": "API呼叫成功",
"model_name": "gpt-4",
"quota": 1000,
"created_at": 1640995000
}
]
}❗ 失敗響應示例:
{
"success": false,
"message": "Token不存在或無許可權"
}🧾 欄位說明:
key (字串): Token 金鑰,必填
🔐 使用者鑑權
我的日誌統計
- 介面名稱:我的日誌統計
- HTTP 方法:GET
- 路徑:
/api/log/self/stat - 鑑權要求:使用者
- 功能簡介:獲取當前使用者的日誌統計資訊,包括配額消耗、請求頻率和 Token 使用量
💡 請求示例:
const response = await fetch('/api/log/self/stat?type=2&start_timestamp=1640908800&end_timestamp=1640995200&token_name=api_token&model_name=gpt-4&group=default', {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_user_token',
'New-Api-User': 'your_user_id'
}
});
const data = await response.json();✅ 成功響應示例:
{
"success": true,
"message": "",
"data": {
"quota": 50000,
"rpm": 10,
"tpm": 1500
}
}❗ 失敗響應示例:
{
"success": false,
"message": "獲取統計資訊失敗"
}🧾 欄位說明:
type(數字): 日誌型別,可選值:1=充值,2=消費,3=管理,4=錯誤,5=系統start_timestamp(數字): 開始時間戳end_timestamp(數字): 結束時間戳token_name(字串): Token 名稱過濾model_name(字串): 模型名稱過濾group(字串): 分組過濾quota(數字): 指定時間範圍內的總配額消耗rpm(數字): 每分鐘請求數(最近 60 秒)tpm(數字): 每分鐘 Token 數(最近 60 秒)
獲取我的日誌
- 介面名稱:獲取我的日誌
- HTTP 方法:GET
- 路徑:
/api/log/self - 鑑權要求:使用者
- 功能簡介:分頁獲取當前使用者的日誌記錄,支援多種過濾條件
💡 請求示例:
const response = await fetch('/api/log/self?p=1&page_size=20&type=2&start_timestamp=1640908800&end_timestamp=1640995200&token_name=api_token&model_name=gpt-4&group=default', {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_user_token',
'New-Api-User': 'your_user_id'
}
});
const data = await response.json();✅ 成功響應示例:
{
"success": true,
"message": "",
"data": {
"items": [
{
"id": 1,
"user_id": 1,
"created_at": 1640995000,
"type": 2,
"content": "API呼叫成功",
"token_name": "api_token",
"model_name": "gpt-4",
"quota": 1000,
"prompt_tokens": 50,
"completion_tokens": 100
}
],
"total": 25,
"page": 1,
"page_size": 20
}
}❗ 失敗響應示例:
{
"success": false,
"message": "獲取日誌失敗"
}🧾 欄位說明:
請求引數與獲取全部日誌介面相同,但只返回當前使用者的日誌記錄
搜尋我的日誌
- 介面名稱:搜尋我的日誌
- HTTP 方法:GET
- 路徑:
/api/log/self/search - 鑑權要求:使用者
- 功能簡介:根據關鍵詞搜尋當前使用者的日誌記錄
💡 請求示例:
const response = await fetch('/api/log/self/search?keyword=gpt-4', {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_user_token',
'New-Api-User': 'your_user_id'
}
});
const data = await response.json();✅ 成功響應示例:
{
"success": true,
"message": "",
"data": [
{
"id": 1,
"type": 2,
"content": "GPT-4呼叫成功",
"model_name": "gpt-4",
"created_at": 1640995000
}
]
}❗ 失敗響應示例:
{
"success": false,
"message": "搜尋日誌失敗"
}🧾 欄位說明:
keyword (字串): 搜尋關鍵詞,匹配當前使用者的日誌型別
🔐 管理員鑑權
獲取全部日誌
- 介面名稱:獲取全部日誌
- HTTP 方法:GET
- 路徑:
/api/log/ - 鑑權要求:管理員
- 功能簡介:分頁獲取系統中所有日誌記錄,支援多種過濾條件和日誌型別篩選
💡 請求示例:
const response = await fetch('/api/log/?p=1&page_size=20&type=2&start_timestamp=1640908800&end_timestamp=1640995200&username=testuser&token_name=api_token&model_name=gpt-4&channel=1&group=default', {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_admin_token',
'New-Api-User': 'your_user_id'
}
});
const data = await response.json();✅ 成功響應示例:
{
"success": true,
"message": "",
"data": {
"items": [
{
"id": 1,
"user_id": 1,
"created_at": 1640995000,
"type": 2,
"content": "API呼叫成功",
"username": "testuser",
"token_name": "api_token",
"model_name": "gpt-4",
"quota": 1000,
"prompt_tokens": 50,
"completion_tokens": 100,
"use_time": 2,
"is_stream": false,
"channel_id": 1,
"channel_name": "OpenAI渠道",
"token_id": 1,
"group": "default",
"ip": "192.168.1.1",
"other": "{\"model_ratio\":15.0}"
}
],
"total": 100,
"page": 1,
"page_size": 20
}
}❗ 失敗響應示例:
{
"success": false,
"message": "獲取日誌失敗"
}🧾 欄位說明:
p(數字): 頁碼,預設為 1page_size(數字): 每頁數量,預設為 20type(數字): 日誌型別,可選值:1=充值,2=消費,3=管理,4=錯誤,5=系統 log.go:41-48start_timestamp(數字): 開始時間戳end_timestamp(數字): 結束時間戳username(字串): 使用者名稱過濾token_name(字串): Token 名稱過濾model_name(字串): 模型名稱過濾channel(數字): 渠道 ID 過濾group(字串): 分組過濾
刪除歷史日誌
- 介面名稱:刪除歷史日誌
- HTTP 方法:DELETE
- 路徑:
/api/log/ - 鑑權要求:管理員
- 功能簡介:批次刪除指定時間戳之前的歷史日誌記錄,支援分批刪除以避免資料庫負載過高
💡 請求示例:
const response = await fetch('/api/log/?target_timestamp=1640908800', {
method: 'DELETE',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_admin_token',
'New-Api-User': 'your_user_id'
}
});
const data = await response.json();✅ 成功響應示例:
{
"success": true,
"message": "",
"data": 1500
}❗ 失敗響應示例:
{
"success": false,
"message": "target timestamp is required"
}🧾 欄位說明:
target_timestamp(數字): 目標時間戳,刪除此時間之前的所有日誌,必填data(數字): 成功刪除的日誌條數
日誌統計
- 介面名稱:日誌統計
- HTTP 方法:GET
- 路徑:
/api/log/stat - 鑑權要求:管理員
- 功能簡介:獲取指定時間範圍和條件下的日誌統計資訊,包括配額消耗、請求頻率和 Token 使用量
💡 請求示例:
const response = await fetch('/api/log/stat?type=2&start_timestamp=1640908800&end_timestamp=1640995200&username=testuser&token_name=api_token&model_name=gpt-4&channel=1&group=default', {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_admin_token',
'New-Api-User': 'your_user_id'
}
});
const data = await response.json();✅ 成功響應示例:
{
"success": true,
"message": "",
"data": {
"quota": 150000,
"rpm": 25,
"tpm": 3500
}
}❗ 失敗響應示例:
{
"success": false,
"message": "獲取統計資訊失敗"
}🧾 欄位說明:
- 請求引數與獲取全部日誌介面相同
quota(數字): 指定時間範圍內的總配額消耗rpm(數字): 每分鐘請求數(最近 60 秒) log.go:357tpm(數字): 每分鐘 Token 數(最近 60 秒的 prompt_tokens + completion_tokens 總和)
搜尋全部日誌
- 介面名稱:搜尋全部日誌
- HTTP 方法:GET
- 路徑:
/api/log/search - 鑑權要求:管理員
- 功能簡介:根據關鍵詞搜尋系統中所有日誌記錄
💡 請求示例:
const response = await fetch('/api/log/search?keyword=error', {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_admin_token',
'New-Api-User': 'your_user_id'
}
});
const data = await response.json();✅ 成功響應示例:
{
"success": true,
"message": "",
"data": [
{
"id": 1,
"type": 4,
"content": "API呼叫錯誤",
"username": "testuser",
"created_at": 1640995000
}
]
}❗ 失敗響應示例:
{
"success": false,
"message": "搜尋日誌失敗"
}🧾 欄位說明:
keyword (字串): 搜尋關鍵詞,可匹配日誌型別或內容