公共层(common)

存放一些工具类(IP、URL、系统日志、JSON、分页、邮件等….)

常量(constant)

该目录仅用于放置全局可复用的常量定义,不包含任何业务逻辑或依赖关系。

当前文件

文件 说明
api_type.go 定义与模型类型名称
azure.go 定义与 Azure 相关的全局常量,如 AzureNoRemoveDotTime(控制删除 . 的截止时间)。
cache_key.go 缓存键格式字符串及 Token 相关字段常量,统一缓存命名规则。
channel_setting.go Channel 级别的设置键,如 proxyforce_format 等。
context_key.go 定义 ContextKey 类型以及在整个项目中使用的上下文键常量(请求时间、Token/Channel/User 相关信息等)。
env.go 环境配置相关的全局变量,在启动阶段根据配置文件或环境变量注入。
finish_reason.go OpenAI/GPT 请求返回的 finish_reason 字符串常量集合。
midjourney.go Midjourney 相关错误码及动作(Action)常量与模型到动作的映射表。
setup.go 标识项目是否已完成初始化安装 (Setup 布尔值)。
task.go 各种任务(Task)平台、动作常量及模型与动作映射表,如 Suno、Midjourney 等。
user_setting.go 用户设置相关键常量以及通知类型(Email/Webhook)等。

接入层(controller)

计费

渠道

渠道计费

渠道策略(缓存和更新)

Token (API-KEY)

分组倍率配置:进入平台「系统管理 - 分组与模型定价设置」页签,在「分组倍率」栏中,以 JSON 字符串格式新增分组或修改现有分组的计费倍率,示例:{“vip”: 0.5, “test”: 1},分别对应vip分组 0.5 倍、test分组 1 倍。

  • 默认分组规则:新用户注册时,系统自动将其归属default分组。

  • 分组修改权限:仅管理员及超级管理员拥有修改用户所属分组的权限。

  • 默认选择分组

用户在创建 Token / 密钥时,下拉框里默认显示、可以直接选择的分组列表。

用户

定价(Pricing)【重点】

价格倍率(ratio-config、ratio_sync)

https://models.dev/

兑换(Redemptions)

中继

?????? 调用模型代码。

前端 (Playground / App)你的后端 (Relay)AI 后端 (OpenAI / Azure / Ollama)POST /v1/chat/completions {model: "gpt-4", ...}1. 验证用户/Token权限2. 检查配额/限流3. 路由到目标AI服务(如Azure)转发请求(替换API Key)返回模型响应4. 计费(按token扣费)5. 记录日志/审计返回响应(透传或格式化)前端 (Playground / App)你的后端 (Relay)AI 后端 (OpenAI / Azure / Ollama)

任务

第三方账号绑定(Telegram)

  • 微信
  • github
  • google
  • ….

订阅(SubscriptionPlanD)

设置token套餐
– 支付

预填组(PrefillGroups) [待确认]

安全验证

  • 2FA
  • Passkey

系统参数

性能统计 (Performance)

统计当前项目的 CPU、内存、磁盘

初始化安装

签到

文档(DOCS)

数据传输类(DTO)

国际化(服务端)

中间层

通用、可复用的请求处理逻辑,用于在 HTTP 请求到达最终处理函数(Handler)之前或之后执行一些公共操作

model(数据库)

数据库操作对象

第三方授权API

  • discord
  • generic
  • github
  • linuxdo
  • ….

pkg

放一些工具类

  • 缓存
  • IO

中继业务 (relay)

实际处理业务

路由(router)

  • API
  • 平台
  • 中继
  • 视频
  • Web

业务类

音频

计费

Token 通用计算(文本 + 多媒体)

  • 文本 Token
    纯字符模式:直接取字符数
    其他:调用模型专用算法计算

  • OpenAI 格式额外加成
    工具数 ×8 + 消息数 ×3 + 名称数 ×3 + 固定 3 Token

  • 多媒体 Token(固定值)
    图片:OpenAI 模型精算 / 其他模型 + 520
    音频:+256
    视频:+8192
    文件 / 未知类型:+4096

费用计算

  1. 获取当前模型的价格(modelPrice)和是否启用价格模式(usePrice);
  2. 处理请求的群组倍率信息(groupRatioInfo),用于后续配额计算。

分模式计算预消耗配额(核心逻辑)

  • 模式1:不启用价格模式(usePrice = false)
  1. 计算预消耗 Token 数:取提示词 Token 数(promptTokens)与默认预消耗配额的最大值,若存在最大 Token 数(meta.MaxTokens)则叠加;

  2. 获取模型倍率(modelRatio),若未配置且未开启“允许未配置倍率”,则返回错误;

  3. 依次获取完成倍率、缓存倍率、缓存创建倍率(5分钟与1小时倍率按固定比例计算)、图片倍率、音频相关倍率;

  4. 计算预消耗配额:预消耗 Token 数 × 模型倍率 × 群组倍率。

  • 模式2:启用价格模式(usePrice = true)
  1. 若存在图片价格倍率(meta.ImagePriceRatio),则用该倍率修正模型价格;

  2. 计算预消耗配额:模型价格 × 单位配额系数 × 群组倍率。

三、免费模型配额管控

若全局关闭免费模型预消耗功能,满足以下任一条件则预消耗配额设为0,标记为免费模型(freeModel = true):

  1. 群组倍率为0;

  2. 价格模式下,模型价格为0;

  3. 非价格模式下,模型倍率为0。

计费Session

单次请求的预扣费/结算/退款生命周期

渠道

渠道策略

渠道选择

Codex授权

Codex证书刷新

Codex证书刷新任务

codex负载使用量

第三方支付(epay、…)

文件处理

资金来源

图片

模型日志

限额通知

openIA接口

限额

敏感词

订阅

任务

任务计费

任务适配

文本限额

Token

  • 不同厂商的计费权重
  • TOKEN版面
  • 初始化默认模型

    使用量

    用户通知

    违规费用

    Webhook

设置

缓存这系统的参数

模型设置

  • claude
  • gemini
  • global
  • grok
  • qwen

操作设置

  • 渠道策略
  • 支付
  • 限额
  • token
  • 工具

枚举

前端

需要补充需求

短信

短信登录

漫道AI Web端NewAPI后端AI-授权系统POST /api/v1/sms/send (发送短信)POST 返回响应 (发送成功)GET /api/oauth/state(获取状态码)返回响应 (状态码)POST /api/v1/sms/verify (验证短信)返回响应 302重定向地址 http://前端地址/oauth/${newAPI oauth提供商名称})登录请求 /oauth/${newAPI oauth提供商名称}POST /api/v1/oauth/token(获取授权码)返回响应 (授权码)POST /api/v1/user/me (获取用户信息)返回响应 (用户信息)注册、登录查询用户信息前端登录响应漫道AI Web端NewAPI后端AI-授权系统

注册

重要业务流程

前端 (Playground / App)你的后端 (Relay)AI 后端 (OpenAI / Azure / Ollama)POST /v1/chat/completions {model: "gpt-4", ...}1. 验证用户/Token权限2. 检查配额/限流3. 路由到目标AI服务(如Azure)转发请求(替换API Key)返回模型响应4. 计费(按token扣费)5. 记录日志/审计返回响应(透传或格式化)前端 (Playground / App)你的后端 (Relay)AI 后端 (OpenAI / Azure / Ollama)

对比

维度 NewAPI 企业级 AI 模型管理
权限与多租户 令牌 租户
计费与成本 按调用次数 / Token、缓存计费、预付费 多维度成本分摊(部门 / 项目)、预算熔断、资源优化与降本策略
安全与合规 基础鉴权、审计日志 基础鉴权、审计日志
作者:吴升斌  创建时间:2026-03-26 16:33
最后编辑:吴升斌  更新时间:2026-04-22 15:49