Skip to content

Commit d60f49c

Browse files
authored
Merge pull request #86 from cuipengfei/fix-token-counting
Fix hardcoded token counts in streaming responses
2 parents d391aad + 1b8c9d4 commit d60f49c

File tree

3 files changed

+27
-4
lines changed

3 files changed

+27
-4
lines changed

src/routes/messages/anthropic-types.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,12 @@ export interface AnthropicMessageDeltaEvent {
157157
stop_reason?: AnthropicResponse["stop_reason"]
158158
stop_sequence?: string | null
159159
}
160-
usage?: { output_tokens: number }
160+
usage?: {
161+
input_tokens?: number
162+
output_tokens: number
163+
cache_creation_input_tokens?: number
164+
cache_read_input_tokens?: number
165+
}
161166
}
162167

163168
export interface AnthropicMessageStopEvent {

src/routes/messages/stream-translation.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ export function translateChunkToAnthropicEvents(
4242
stop_reason: null,
4343
stop_sequence: null,
4444
usage: {
45-
input_tokens: 1,
46-
output_tokens: 1, // Anthropic requires this to be > 0
45+
input_tokens: chunk.usage?.prompt_tokens ?? 0,
46+
output_tokens: 0, // Will be updated in message_delta when finished
4747
},
4848
},
4949
})
@@ -152,7 +152,13 @@ export function translateChunkToAnthropicEvents(
152152
stop_sequence: null,
153153
},
154154
usage: {
155-
output_tokens: 1,
155+
input_tokens: chunk.usage?.prompt_tokens ?? 0,
156+
output_tokens: chunk.usage?.completion_tokens ?? 0,
157+
...(chunk.usage?.prompt_tokens_details?.cached_tokens
158+
!== undefined && {
159+
cache_read_input_tokens:
160+
chunk.usage.prompt_tokens_details.cached_tokens,
161+
}),
156162
},
157163
},
158164
{

src/services/copilot/create-chat-completions.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,18 @@ export interface ChatCompletionChunk {
5555
model: string
5656
choices: Array<Choice>
5757
system_fingerprint?: string
58+
usage?: {
59+
prompt_tokens: number
60+
completion_tokens: number
61+
total_tokens: number
62+
prompt_tokens_details?: {
63+
cached_tokens: number
64+
}
65+
completion_tokens_details?: {
66+
accepted_prediction_tokens: number
67+
rejected_prediction_tokens: number
68+
}
69+
}
5870
}
5971

6072
interface Delta {

0 commit comments

Comments
 (0)