Skip to content

Commit 47fb3e4

Browse files
committed
feat: responses translation add cache_read_input_tokens
1 parent 708ae33 commit 47fb3e4

File tree

2 files changed

+17
-7
lines changed

2 files changed

+17
-7
lines changed

src/routes/messages/responses-stream-translation.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export interface ResponsesStreamState {
1313
currentResponseId?: string
1414
currentModel?: string
1515
initialInputTokens?: number
16+
initialInputCachedTokens?: number
1617
functionCallStateByOutputIndex: Map<number, FunctionCallStreamState>
1718
functionCallOutputIndexByItemId: Map<string, number>
1819
}
@@ -476,11 +477,10 @@ const ensureMessageStart = (
476477
const id = response?.id ?? state.currentResponseId ?? "response"
477478
const model = response?.model ?? state.currentModel ?? ""
478479

479-
const inputTokens =
480-
response?.usage?.input_tokens ?? state.initialInputTokens ?? 0
481-
482480
state.messageStartSent = true
483481

482+
const inputTokens =
483+
(state.initialInputTokens ?? 0) - (state.initialInputCachedTokens ?? 0)
484484
return [
485485
{
486486
type: "message_start",
@@ -495,6 +495,9 @@ const ensureMessageStart = (
495495
usage: {
496496
input_tokens: inputTokens,
497497
output_tokens: 0,
498+
...(state.initialInputCachedTokens !== undefined && {
499+
cache_creation_input_tokens: state.initialInputCachedTokens,
500+
}),
498501
},
499502
},
500503
},
@@ -597,6 +600,8 @@ const cacheResponseMetadata = (
597600
state.currentResponseId = response.id
598601
state.currentModel = response.model
599602
state.initialInputTokens = response.usage?.input_tokens ?? 0
603+
state.initialInputCachedTokens =
604+
response.usage?.input_tokens_details?.cached_tokens
600605
}
601606

602607
const buildErrorEvent = (message: string): AnthropicStreamEventData => ({

src/routes/messages/responses-translation.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -567,12 +567,17 @@ const mapResponsesStopReason = (
567567
const mapResponsesUsage = (
568568
response: ResponsesResult,
569569
): AnthropicResponse["usage"] => {
570-
const promptTokens = response.usage?.input_tokens ?? 0
571-
const completionTokens = response.usage?.output_tokens ?? 0
570+
const inputTokens = response.usage?.input_tokens ?? 0
571+
const outputTokens = response.usage?.output_tokens ?? 0
572+
const inputCachedTokens = response.usage?.input_tokens_details?.cached_tokens
572573

573574
return {
574-
input_tokens: promptTokens,
575-
output_tokens: completionTokens,
575+
input_tokens: inputTokens - (inputCachedTokens ?? 0),
576+
output_tokens: outputTokens,
577+
...(response.usage?.input_tokens_details?.cached_tokens !== undefined && {
578+
cache_read_input_tokens:
579+
response.usage.input_tokens_details.cached_tokens,
580+
}),
576581
}
577582
}
578583

0 commit comments

Comments
 (0)