Token 模块

Token 模块专注于 AI 模型调用中 input/output token 的用量追踪平台定价管理第三方市场价格对比,是计费模块的核心数据源。


10.1 用量仪表盘(核心看板)

总览仪表盘

GET /api/v1/tokens/usage/dashboard

查询参数 说明
period today / week / month / custom
start_date period=custom 时必填
end_date period=custom 时必填
{
  "code": 0,
  "data": {
    "today": {
      "input_tokens": 128000,
      "output_tokens": 64000,
      "total_tokens": 192000,
      "total_cost": "5.38",
      "request_count": 350
    },
    "this_month": {
      "input_tokens": 3200000,
      "output_tokens": 1600000,
      "total_tokens": 4800000,
      "total_cost": "134.40",
      "request_count": 8750
    },
    "trend": [
      { "date": "2024-01-01", "total_tokens": 180000, "total_cost": "5.04", "request_count": 320 },
      { "date": "2024-01-02", "total_tokens": 192000, "total_cost": "5.38", "request_count": 350 }
    ]
  }
}

按 API Key 统计

GET /api/v1/tokens/usage/by-apikey

{
  "code": 0,
  "data": {
    "items": [
      {
        "key_id": "key_01HX...",
        "key_name": "生产环境",
        "key_prefix": "sk-prod-****",
        "request_count": 5200,
        "input_tokens": 2100000,
        "output_tokens": 980000,
        "total_tokens": 3080000,
        "total_cost": "86.24",
        "last_used_at": "2024-01-01T12:00:00Z"
      }
    ]
  }
}

Top 10 模型用量排行

GET /api/v1/tokens/usage/top-models

{
  "code": 0,
  "data": {
    "period": "this_month",
    "items": [
      {
        "rank": 1,
        "model_id": "gpt-4o",
        "display_name": "GPT-4o",
        "provider_name": "OpenAI",
        "request_count": 3200,
        "input_tokens": 1500000,
        "output_tokens": 720000,
        "total_tokens": 2220000,
        "total_cost": "62.16",
        "avg_latency_ms": 1240
      }
    ]
  }
}

Top 10 用户用量排行(管理员)

GET /admin/v1/tokens/usage/top-users

实时用量(最近 60 分钟)

GET /api/v1/tokens/usage/realtime

{
  "code": 0,
  "data": {
    "items": [
      { "minute": "2024-01-01T12:00:00Z", "total_tokens": 3200, "request_count": 5 },
      { "minute": "2024-01-01T12:01:00Z", "total_tokens": 4800, "request_count": 8 }
    ]
  }
}

用量热力图

GET /api/v1/tokens/usage/heatmap

{
  "code": 0,
  "data": {
    "data": [
      { "weekday": "Monday", "hour": 10, "total_tokens": 45000, "level": 3 },
      { "weekday": "Monday", "hour": 11, "total_tokens": 89000, "level": 5 }
    ]
  }
}

level 范围 1-5,数值越高代表用量越高。


10.2 用量明细

总用量汇总

GET /api/v1/tokens/usage

用量明细列表

GET /api/v1/tokens/usage/detail

查询参数 说明
model_id 按模型筛选
api_key_id 按 API Key 筛选
start_date 开始日期
end_date 结束日期
page 页码
{
  "code": 0,
  "data": {
    "items": [
      {
        "request_id": "req_abc123",
        "model_id": "gpt-4o",
        "model_name": "GPT-4o",
        "api_key_id": "key_01HX...",
        "input_tokens": 512,
        "output_tokens": 256,
        "total_tokens": 768,
        "input_cost": "0.01434",
        "output_cost": "0.02150",
        "total_cost": "0.03584",
        "latency_ms": 1180,
        "currency": "CNY",
        "created_at": "2024-01-01T12:00:00Z"
      }
    ]
  }
}

每日用量趋势

GET /api/v1/tokens/usage/daily

月度用量汇总

GET /api/v1/tokens/usage/monthly

单次请求 Token 详情

GET /api/v1/tokens/usage/{request_id}


10.3 平台 Token 定价管理(管理员)

全量定价列表

GET /admin/v1/tokens/pricing

{
  "code": 0,
  "data": {
    "items": [
      {
        "pricing_id": "price_001",
        "model_id": "gpt-4o",
        "model_name": "GPT-4o",
        "currency": "CNY",
        "unit": "per_1k_tokens",
        "tiers": [
          { "membership_level": "free",    "input_price": "0.035", "output_price": "0.105" },
          { "membership_level": "basic",   "input_price": "0.028", "output_price": "0.084" },
          { "membership_level": "premium", "input_price": "0.021", "output_price": "0.063" }
        ],
        "effective_at": "2024-01-01T00:00:00Z"
      }
    ]
  }
}

指定模型定价详情

GET /admin/v1/tokens/pricing/{model_id}

创建定价规则

POST /admin/v1/tokens/pricing

{
  "model_id": "claude-3-5-sonnet",
  "currency": "CNY",
  "unit": "per_1k_tokens",
  "tiers": [
    { "membership_level": "free",    "input_price": "0.045", "output_price": "0.135" },
    { "membership_level": "basic",   "input_price": "0.036", "output_price": "0.108" },
    { "membership_level": "premium", "input_price": "0.027", "output_price": "0.081" }
  ],
  "effective_at": "2024-02-01T00:00:00Z"
}

更新定价规则

PUT /admin/v1/tokens/pricing/{pricing_id}

删除定价规则

DELETE /admin/v1/tokens/pricing/{pricing_id}

定价历史变更记录

GET /admin/v1/tokens/pricing/history/{model_id}


10.4 第三方市场价格

市场价格列表

GET /api/v1/tokens/market-prices

查询参数 说明
provider 提供商 slug
model_name 模型名称
{
  "code": 0,
  "data": {
    "items": [
      {
        "id": "mkt_001",
        "provider": "openai",
        "provider_name": "OpenAI",
        "model_name": "gpt-4o",
        "input_price": "0.0375",
        "output_price": "0.1125",
        "currency": "CNY",
        "source_url": "https://openai.com/pricing",
        "updated_at": "2024-01-01T00:00:00Z"
      }
    ]
  }
}

添加第三方价格(管理员)

POST /admin/v1/tokens/market-prices

更新第三方价格(管理员)

PUT /admin/v1/tokens/market-prices/{id}

删除第三方价格(管理员)

DELETE /admin/v1/tokens/market-prices/{id}


10.5 价格对比分析

全模型价格对比

GET /api/v1/tokens/price-comparison

{
  "code": 0,
  "data": {
    "items": [
      {
        "model_id": "gpt-4o",
        "display_name": "GPT-4o",
        "platform_price": {
          "input": "0.028",
          "output": "0.084",
          "membership_level": "basic"
        },
        "market_prices": [
          {
            "provider": "openai",
            "input": "0.0375",
            "output": "0.1125",
            "savings_input": "25.3%",
            "savings_output": "25.3%"
          }
        ]
      }
    ]
  }
}

指定模型价格对比

GET /api/v1/tokens/price-comparison/{model_id}


10.6 费用预估

POST /api/v1/tokens/estimate

{
  "model_id": "gpt-4o",
  "input_tokens": 1000,
  "output_tokens": 500
}

响应:

{
  "code": 0,
  "data": {
    "model_id": "gpt-4o",
    "input_tokens": 1000,
    "output_tokens": 500,
    "input_cost": "0.028",
    "output_cost": "0.042",
    "total_cost": "0.070",
    "currency": "CNY",
    "applied_pricing": {
      "membership_level": "basic",
      "input_price": "0.028",
      "output_price": "0.084"
    }
  }
}