Skip to content

Commit a03a2b6

Browse files
committed
Zen: adjust cache tokens
1 parent ad78b79 commit a03a2b6

4 files changed

Lines changed: 17 additions & 6 deletions

File tree

packages/console/app/src/routes/zen/util/handler.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -461,12 +461,17 @@ export async function handler(
461461
...modelProvider,
462462
...zenData.providers[modelProvider.id],
463463
...(() => {
464-
const format = zenData.providers[modelProvider.id].format
464+
const providerProps = zenData.providers[modelProvider.id]
465+
const format = providerProps.format
465466
const providerModel = modelProvider.model
466467
if (format === "anthropic") return anthropicHelper({ reqModel, providerModel })
467468
if (format === "google") return googleHelper({ reqModel, providerModel })
468469
if (format === "openai") return openaiHelper({ reqModel, providerModel })
469-
return oaCompatHelper({ reqModel, providerModel })
470+
return oaCompatHelper({
471+
reqModel,
472+
providerModel,
473+
adjustCacheUsage: providerProps.adjustCacheUsage,
474+
})
470475
})(),
471476
}
472477
}

packages/console/app/src/routes/zen/util/provider/openai-compatible.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ type Usage = {
2121
}
2222
}
2323

24-
export const oaCompatHelper: ProviderHelper = () => ({
24+
export const oaCompatHelper: ProviderHelper = ({ adjustCacheUsage }) => ({
2525
format: "oa-compat",
2626
modifyUrl: (providerApi: string) => providerApi + "/chat/completions",
2727
modifyHeaders: (headers: Headers, body: Record<string, any>, apiKey: string) => {
@@ -57,10 +57,15 @@ export const oaCompatHelper: ProviderHelper = () => ({
5757
}
5858
},
5959
normalizeUsage: (usage: Usage) => {
60-
const inputTokens = usage.prompt_tokens ?? 0
60+
let inputTokens = usage.prompt_tokens ?? 0
6161
const outputTokens = usage.completion_tokens ?? 0
6262
const reasoningTokens = usage.completion_tokens_details?.reasoning_tokens ?? undefined
63-
const cacheReadTokens = usage.cached_tokens ?? usage.prompt_tokens_details?.cached_tokens ?? undefined
63+
let cacheReadTokens = usage.cached_tokens ?? usage.prompt_tokens_details?.cached_tokens ?? undefined
64+
65+
if (adjustCacheUsage && !cacheReadTokens) {
66+
cacheReadTokens = Math.floor(inputTokens * 0.9)
67+
}
68+
6469
return {
6570
inputTokens: inputTokens - (cacheReadTokens ?? 0),
6671
outputTokens,

packages/console/app/src/routes/zen/util/provider/provider.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export type UsageInfo = {
3333
cacheWrite1hTokens?: number
3434
}
3535

36-
export type ProviderHelper = (input: { reqModel: string; providerModel: string }) => {
36+
export type ProviderHelper = (input: { reqModel: string; providerModel: string; adjustCacheUsage?: boolean }) => {
3737
format: ZenData.Format
3838
modifyUrl: (providerApi: string, isStream?: boolean) => string
3939
modifyHeaders: (headers: Headers, body: Record<string, any>, apiKey: string) => void

packages/console/core/src/model.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ export namespace ZenData {
4848
headerMappings: z.record(z.string(), z.string()).optional(),
4949
payloadModifier: z.record(z.string(), z.any()).optional(),
5050
payloadMappings: z.record(z.string(), z.string()).optional(),
51+
adjustCacheUsage: z.boolean().optional(),
5152
})
5253

5354
const ModelsSchema = z.object({

0 commit comments

Comments
 (0)