mirror of
https://github.com/anomalyco/opencode.git
synced 2026-07-21 10:16:03 +00:00
zen: track openai cache_write_tokens
This commit is contained in:
+10
@@ -0,0 +1,10 @@
|
|||||||
|
/* This file is auto-generated by SST. Do not edit. */
|
||||||
|
/* tslint:disable */
|
||||||
|
/* eslint-disable */
|
||||||
|
/* deno-fmt-ignore-file */
|
||||||
|
/* biome-ignore-all lint: auto-generated */
|
||||||
|
|
||||||
|
/// <reference path="../../sst-env.d.ts" />
|
||||||
|
|
||||||
|
import "sst"
|
||||||
|
export {}
|
||||||
Vendored
+10
@@ -0,0 +1,10 @@
|
|||||||
|
/* This file is auto-generated by SST. Do not edit. */
|
||||||
|
/* tslint:disable */
|
||||||
|
/* eslint-disable */
|
||||||
|
/* deno-fmt-ignore-file */
|
||||||
|
/* biome-ignore-all lint: auto-generated */
|
||||||
|
|
||||||
|
/// <reference path="../../sst-env.d.ts" />
|
||||||
|
|
||||||
|
import "sst"
|
||||||
|
export {}
|
||||||
@@ -4,6 +4,7 @@ type Usage = {
|
|||||||
input_tokens?: number
|
input_tokens?: number
|
||||||
input_tokens_details?: {
|
input_tokens_details?: {
|
||||||
cached_tokens?: number
|
cached_tokens?: number
|
||||||
|
cache_write_tokens?: number
|
||||||
}
|
}
|
||||||
output_tokens?: number
|
output_tokens?: number
|
||||||
output_tokens_details?: {
|
output_tokens_details?: {
|
||||||
@@ -48,12 +49,13 @@ export const openaiHelper: ProviderHelper = ({ workspaceID }) => ({
|
|||||||
const outputTokens = usage.output_tokens ?? 0
|
const outputTokens = usage.output_tokens ?? 0
|
||||||
const reasoningTokens = usage.output_tokens_details?.reasoning_tokens ?? undefined
|
const reasoningTokens = usage.output_tokens_details?.reasoning_tokens ?? undefined
|
||||||
const cacheReadTokens = usage.input_tokens_details?.cached_tokens ?? undefined
|
const cacheReadTokens = usage.input_tokens_details?.cached_tokens ?? undefined
|
||||||
|
const cacheWriteTokens = usage.input_tokens_details?.cache_write_tokens ?? undefined
|
||||||
return {
|
return {
|
||||||
inputTokens: inputTokens - (cacheReadTokens ?? 0),
|
inputTokens: inputTokens - (cacheReadTokens ?? 0),
|
||||||
outputTokens,
|
outputTokens,
|
||||||
reasoningTokens,
|
reasoningTokens,
|
||||||
cacheReadTokens,
|
cacheReadTokens,
|
||||||
cacheWrite5mTokens: undefined,
|
cacheWrite5mTokens: cacheWriteTokens,
|
||||||
cacheWrite1hTokens: undefined,
|
cacheWrite1hTokens: undefined,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -65,4 +65,20 @@ describe("provider usage extraction", () => {
|
|||||||
output_tokens: 7,
|
output_tokens: 7,
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test("parses OpenAI stream cache write usage", () => {
|
||||||
|
const usageParser = providers.openai.createUsageParser()
|
||||||
|
usageParser.parse(
|
||||||
|
'event: response.completed\ndata: {"response":{"usage":{"input_tokens":10,"input_tokens_details":{"cached_tokens":4,"cache_write_tokens":3},"output_tokens":2}}}',
|
||||||
|
)
|
||||||
|
|
||||||
|
expect(providers.openai.normalizeUsage(usageParser.retrieve())).toEqual({
|
||||||
|
inputTokens: 6,
|
||||||
|
outputTokens: 2,
|
||||||
|
reasoningTokens: undefined,
|
||||||
|
cacheReadTokens: 4,
|
||||||
|
cacheWrite5mTokens: 3,
|
||||||
|
cacheWrite1hTokens: undefined,
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user