长安
0a2f12c04e
fix: 修复 Anthropic 渠道缓存计费错误
...
## 问题描述
当使用 Anthropic 渠道通过 `/v1/chat/completions` 端点调用且启用缓存功能时,
计费逻辑错误地减去了缓存 tokens,导致严重的收入损失(94.5%)。
## 根本原因
不同 API 的 `prompt_tokens` 定义不同:
- **Anthropic API**: `input_tokens` 字段已经是纯输入 tokens(不包含缓存)
- **OpenAI API**: `prompt_tokens` 字段包含所有 tokens(包含缓存)
- **OpenRouter API**: `prompt_tokens` 字段包含所有 tokens(包含缓存)
当前 `postConsumeQuota` 函数对所有渠道都减去缓存 tokens,这对 Anthropic
渠道是错误的,因为其 `input_tokens` 已经不包含缓存。
## 修复方案
在 `relay/compatible_handler.go` 的 `postConsumeQuota` 函数中,添加渠道类型判断:
```go
if relayInfo.ChannelType != constant.ChannelTypeAnthropic {
baseTokens = baseTokens.Sub(dCacheTokens)
}
```
只对非 Anthropic 渠道减去缓存 tokens。
## 影响分析
### ✅ 不受影响的场景
1. **无缓存调用**(所有渠道)
- cache_tokens = 0
- 减去 0 = 不减去
- 结果:完全一致
2. **OpenAI/OpenRouter 渠道 + 缓存**
- 继续减去缓存(因为 ChannelType != Anthropic)
- 结果:完全一致
3. **Anthropic 渠道 + /v1/messages 端点**
- 使用 PostClaudeConsumeQuota(不修改)
- 结果:完全不受影响
### ✅ 修复的场景
4. **Anthropic 渠道 + /v1/chat/completions + 缓存**
- 修复前:错误地减去缓存,导致 94.5% 收入损失
- 修复后:不减去缓存,计费正确
## 验证数据
以实际记录 143509 为例:
| 项目 | 修复前 | 修复后 | 差异 |
|------|--------|--------|------|
| Quota | 10,489 | 191,330 | +180,841 |
| 费用 | ¥0.020978 | ¥0.382660 | +¥0.361682 |
| 收入恢复 | - | - | **+1724.1%** |
## 测试建议
1. 测试 Anthropic 渠道 + 缓存场景
2. 测试 OpenAI 渠道 + 缓存场景(确保不受影响)
3. 测试无缓存场景(确保不受影响)
## 相关 Issue
修复 Anthropic 渠道使用 prompt caching 时的计费错误。
2025-12-20 14:17:12 +08:00
CaIon
e36e2e1b69
feat(audio): enhance audio request handling with token type detection and streaming support
2025-12-13 17:24:23 +08:00
CaIon
f5b409d74f
feat: refactor token estimation logic
...
- Introduced new OpenAI text models in `common/model.go`.
- Added `IsOpenAITextModel` function to check for OpenAI text models.
- Refactored token estimation methods across various channels to use estimated prompt tokens instead of direct prompt token counts.
- Updated related functions and structures to accommodate the new token estimation approach, enhancing overall token management.
2025-12-02 21:34:39 +08:00
Seefs
0885597427
feat: embedding param override && internal params
2025-11-22 18:27:17 +08:00
Seefs
e1c7a4f41f
format: package name -> github.com/QuantumNous/new-api ( #2017 )
2025-10-11 15:30:09 +08:00
Seefs
0e9ad4a15f
fix: missing field & field control
2025-10-02 00:14:35 +08:00
CaIon
b5d3e87ea2
Merge branch 'alpha'
2025-09-19 14:20:15 +08:00
creamlike1024
11cf70e60d
fix: openai responses api 未统计图像生成调用计费
2025-09-16 12:47:59 +08:00
Xyfacai
63f94e7669
fix: 非openai 渠道使用 SystemPrompt 设置会panic
2025-09-15 19:38:31 +08:00
CaIon
6451158680
Revert "feat: gemini-2.5-flash-image-preview 文本和图片输出计费"
...
This reverts commit e732c58426 .
2025-09-13 12:53:28 +08:00
Xyfacai
fcdfd027cd
fix: openai 格式请求 claude 没计费 create cache token
2025-09-10 15:30:23 +08:00
creamlike1024
e732c58426
feat: gemini-2.5-flash-image-preview 文本和图片输出计费
2025-08-27 21:30:52 +08:00
CaIon
33d601db82
fix: update error types for upstream errors and JSON marshal failure
2025-08-26 16:26:56 +08:00
CaIon
94536be9be
fix: enhance error handling for invalid request types in relay handlers
2025-08-23 13:34:56 +08:00
CaIon
2c6a9245ee
refactor: rename relay-text.go to compatible_handler.go for clarity
2025-08-23 13:13:57 +08:00