Skip to content

Commit 1013b7d

Browse files
committed
Recalculate Tokens Per Second (TPS) using a rolling average based on the time and tokens since the last report to ensure accurate streaming metrics
1 parent 52a388a commit 1013b7d

1 file changed

Lines changed: 19 additions & 6 deletions

File tree

packages/vscode/src/utils/make-api-request.ts

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -75,28 +75,41 @@ export async function make_api_request(params: {
7575

7676
let stream_start_time = 0
7777
let last_on_chunk_time = 0
78+
let last_total_tokens = 0
7879
let total_tokens = 0
80+
let first_chunk_reported = false
7981

8082
const handle_chunk_metrics = (chunk: string) => {
8183
if (!params.on_chunk || !chunk) return
8284

8385
total_tokens += Math.ceil(chunk.length / 4)
84-
if (stream_start_time == 0) {
86+
if (stream_start_time === 0) {
8587
stream_start_time = Date.now()
8688
last_on_chunk_time = stream_start_time
8789
// Don't calculate TPS on the first chunk, as elapsed time is 0
8890
return
8991
}
9092

9193
const current_time = Date.now()
92-
if (current_time - last_on_chunk_time >= 1000) {
93-
last_on_chunk_time = current_time
94+
const elapsed_since_last = current_time - last_on_chunk_time
95+
if (elapsed_since_last >= 1000) {
96+
// Skip the very first report to avoid inflated TPS
97+
if (!first_chunk_reported) {
98+
first_chunk_reported = true
99+
last_on_chunk_time = current_time
100+
last_total_tokens = total_tokens
101+
return
102+
}
94103

95-
const elapsed_seconds = (current_time - stream_start_time) / 1000
104+
const tokens_since_last = total_tokens - last_total_tokens
105+
const seconds_since_last = elapsed_since_last / 1000
96106
const tokens_per_second =
97-
elapsed_seconds > 0 ? Math.round(total_tokens / elapsed_seconds) : 0
98-
107+
seconds_since_last > 0
108+
? Math.round(tokens_since_last / seconds_since_last)
109+
: 0
99110
params.on_chunk(tokens_per_second, total_tokens)
111+
last_on_chunk_time = current_time
112+
last_total_tokens = total_tokens
100113
}
101114
}
102115

0 commit comments

Comments
 (0)