Skip to content

Commit 13347e5

Browse files
Evsdrgdeepseek-v4-pro[1m]
authored andcommitted
fix: Gemini 适配器补全 usage 字段映射 (claude-code-best#1233)
* fix: Gemini 适配器补全 usage 字段映射 Gemini API 的 usageMetadata 包含 cachedContentTokenCount 字段, 但此前未映射到 Anthropic 格式的 cache_read_input_tokens,导致 cache_creation_input_tokens 和 cache_read_input_tokens 始终为 0。 同时 message_delta 事件此前只携带 output_tokens,缺失 input_tokens、cache_creation_input_tokens、cache_read_input_tokens, 导致下游从 message_delta 读取最终 token 计数时获取不完整数据。 修复: - 新增 cachedContentTokenCount → cache_read_input_tokens 映射 - message_start 和 message_delta 携带完整四个 usage 字段 - cache_creation_input_tokens 保持为 0(Gemini API 无等价概念) Co-Authored-By: deepseek-v4-pro[1m] <deepseek-ai@claude-code-best.win> * fix: 添加 cachedContentTokenCount 到 GeminiUsageMetadata 类型 streamAdapter.ts 使用 usage.cachedContentTokenCount 但该字段未 在 GeminiUsageMetadata 类型中声明。CodeRabbit 审查发现此问题。 Co-Authored-By: deepseek-v4-pro[1m] <deepseek-ai@claude-code-best.win> --------- Co-authored-by: deepseek-v4-pro[1m] <deepseek-ai@claude-code-best.win>
1 parent 14ef4a0 commit 13347e5

2 files changed

Lines changed: 7 additions & 1 deletion

File tree

packages/@ant/model-provider/src/providers/gemini/streamAdapter.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,15 @@ export async function* adaptGeminiStreamToAnthropic(
1616
let finishReason: string | undefined
1717
let inputTokens = 0
1818
let outputTokens = 0
19+
let cachedReadTokens = 0
1920

2021
for await (const chunk of stream) {
2122
const usage = chunk.usageMetadata
2223
if (usage) {
2324
inputTokens = usage.promptTokenCount ?? inputTokens
2425
outputTokens =
2526
(usage.candidatesTokenCount ?? 0) + (usage.thoughtsTokenCount ?? 0)
27+
cachedReadTokens = usage.cachedContentTokenCount ?? cachedReadTokens
2628
}
2729

2830
if (!started) {
@@ -41,7 +43,7 @@ export async function* adaptGeminiStreamToAnthropic(
4143
input_tokens: inputTokens,
4244
output_tokens: 0,
4345
cache_creation_input_tokens: 0,
44-
cache_read_input_tokens: 0,
46+
cache_read_input_tokens: cachedReadTokens,
4547
},
4648
},
4749
} as unknown as BetaRawMessageStreamEvent
@@ -204,7 +206,10 @@ export async function* adaptGeminiStreamToAnthropic(
204206
stop_sequence: null,
205207
},
206208
usage: {
209+
input_tokens: inputTokens,
207210
output_tokens: outputTokens,
211+
cache_creation_input_tokens: 0,
212+
cache_read_input_tokens: cachedReadTokens,
208213
},
209214
} as BetaRawMessageStreamEvent
210215

packages/@ant/model-provider/src/providers/gemini/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ export type GeminiUsageMetadata = {
6868
candidatesTokenCount?: number
6969
thoughtsTokenCount?: number
7070
totalTokenCount?: number
71+
cachedContentTokenCount?: number
7172
}
7273

7374
export type GeminiCandidate = {

0 commit comments

Comments
 (0)