fix: 添加对 ephemeral 5m 和 1h 令牌的支持,优化费用计算逻辑

This commit is contained in:
sczheng189
2026-02-23 20:12:42 +08:00
parent 3b25cf01ad
commit 5376428dd9
7 changed files with 131 additions and 11 deletions

View File

@@ -472,7 +472,9 @@ router.get('/model-stats', authenticateAdmin, async (req, res) => {
outputTokens: 0,
cacheCreateTokens: 0,
cacheReadTokens: 0,
allTokens: 0
allTokens: 0,
ephemeral5mTokens: 0,
ephemeral1hTokens: 0
}
stats.requests += parseInt(data.requests) || 0
@@ -481,6 +483,8 @@ router.get('/model-stats', authenticateAdmin, async (req, res) => {
stats.cacheCreateTokens += parseInt(data.cacheCreateTokens) || 0
stats.cacheReadTokens += parseInt(data.cacheReadTokens) || 0
stats.allTokens += parseInt(data.allTokens) || 0
stats.ephemeral5mTokens += parseInt(data.ephemeral5mTokens) || 0
stats.ephemeral1hTokens += parseInt(data.ephemeral1hTokens) || 0
modelStatsMap.set(normalizedModel, stats)
}
@@ -497,6 +501,14 @@ router.get('/model-stats', authenticateAdmin, async (req, res) => {
cache_read_input_tokens: stats.cacheReadTokens
}
// 如果有 ephemeral 5m/1h 拆分数据,添加 cache_creation 子对象以实现精确计费
if (stats.ephemeral5mTokens > 0 || stats.ephemeral1hTokens > 0) {
usage.cache_creation = {
ephemeral_5m_input_tokens: stats.ephemeral5mTokens,
ephemeral_1h_input_tokens: stats.ephemeral1hTokens
}
}
// 计算费用
const costData = CostCalculator.calculateCost(usage, model)