- 公共层(common)
- 常量(constant)
- 当前文件
- 接入层(controller)
- 计费
- 渠道
- 渠道计费
- 渠道策略(缓存和更新)
- Token (API-KEY)
- 组
- 用户
- 定价(Pricing)【重点】
- 价格倍率(ratio-config、ratio_sync)
- 兑换(Redemptions)
- 中继
- 任务
- 第三方账号绑定(Telegram)
- 订阅(SubscriptionPlanD)
- 预填组(PrefillGroups) [待确认]
- 安全验证
- 系统参数
- 性能统计 (Performance)
- 初始化安装
- 签到
- 文档(DOCS)
- 数据传输类(DTO)
- 国际化(服务端)
- 中间层
- model(数据库)
- 第三方授权API
- pkg
- 中继业务 (relay)
- 路由(router)
- 业务类
- 音频
- 计费
- Token 通用计算(文本 + 多媒体)
- 费用计算
- 分模式计算预消耗配额(核心逻辑)
- 三、免费模型配额管控
- 计费Session
- 渠道
- 渠道策略
- 渠道选择
- Codex授权
- Codex证书刷新
- Codex证书刷新任务
- codex负载使用量
- 第三方支付(epay、…)
- 文件处理
- 资金来源
- 组
- 图片
- 模型日志
- 限额通知
- openIA接口
- 限额
- 敏感词
- 订阅
- 任务
- 任务计费
- 任务适配
- 文本限额
- Token
- 使用量
- 用户通知
- 违规费用
- Webhook
- 设置
- 模型设置
- 操作设置
- 枚举
- 前端
- 需要补充需求
- 短信
- 短信登录
- 注册
- 重要业务流程
- 对比
公共层(common)
存放一些工具类(IP、URL、系统日志、JSON、分页、邮件等….)
常量(constant)
该目录仅用于放置全局可复用的常量定义,不包含任何业务逻辑或依赖关系。
当前文件
| 文件 | 说明 |
|---|---|
api_type.go |
定义与模型类型名称 |
azure.go |
定义与 Azure 相关的全局常量,如 AzureNoRemoveDotTime(控制删除 . 的截止时间)。 |
cache_key.go |
缓存键格式字符串及 Token 相关字段常量,统一缓存命名规则。 |
channel_setting.go |
Channel 级别的设置键,如 proxy、force_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)
兑换(Redemptions)
中继
?????? 调用模型代码。
任务
第三方账号绑定(Telegram)
- 微信
- github
- ….
订阅(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
费用计算
- 获取当前模型的价格(modelPrice)和是否启用价格模式(usePrice);
- 处理请求的群组倍率信息(groupRatioInfo),用于后续配额计算。
分模式计算预消耗配额(核心逻辑)
- 模式1:不启用价格模式(usePrice = false)
计算预消耗 Token 数:取提示词 Token 数(promptTokens)与默认预消耗配额的最大值,若存在最大 Token 数(meta.MaxTokens)则叠加;
获取模型倍率(modelRatio),若未配置且未开启“允许未配置倍率”,则返回错误;
依次获取完成倍率、缓存倍率、缓存创建倍率(5分钟与1小时倍率按固定比例计算)、图片倍率、音频相关倍率;
计算预消耗配额:预消耗 Token 数 × 模型倍率 × 群组倍率。
- 模式2:启用价格模式(usePrice = true)
若存在图片价格倍率(meta.ImagePriceRatio),则用该倍率修正模型价格;
计算预消耗配额:模型价格 × 单位配额系数 × 群组倍率。
三、免费模型配额管控
若全局关闭免费模型预消耗功能,满足以下任一条件则预消耗配额设为0,标记为免费模型(freeModel = true):
群组倍率为0;
价格模式下,模型价格为0;
非价格模式下,模型倍率为0。
计费Session
单次请求的预扣费/结算/退款生命周期
渠道
渠道策略
渠道选择
Codex授权
Codex证书刷新
Codex证书刷新任务
codex负载使用量
第三方支付(epay、…)
文件处理
资金来源
组
图片
模型日志
限额通知
openIA接口
限额
敏感词
订阅
任务
任务计费
任务适配
文本限额
Token
设置
缓存这系统的参数
模型设置
- claude
- gemini
- global
- grok
- qwen
操作设置
- 渠道策略
- 支付
- 限额
- token
- 工具
枚举
前端
需要补充需求
短信
短信登录
注册
重要业务流程
对比
| 维度 | NewAPI | 企业级 AI 模型管理 |
|---|---|---|
| 权限与多租户 | 令牌 | 租户 |
| 计费与成本 | 按调用次数 / Token、缓存计费、预付费 | 多维度成本分摊(部门 / 项目)、预算熔断、资源优化与降本策略 |
| 安全与合规 | 基础鉴权、审计日志 | 基础鉴权、审计日志 |
最后编辑:吴升斌 更新时间:2026-04-22 15:49