From fc3cbedc6c10655c92369c15878cad4171a3511b Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Wed, 29 Apr 2026 16:37:39 +0200 Subject: [PATCH] fix(ai): track DeepSeek prompt cache hits closes #3880 --- packages/ai/CHANGELOG.md | 4 ++++ packages/ai/src/providers/openai-completions.ts | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/ai/CHANGELOG.md b/packages/ai/CHANGELOG.md index b6e423b8..aa8e1b08 100644 --- a/packages/ai/CHANGELOG.md +++ b/packages/ai/CHANGELOG.md @@ -2,6 +2,10 @@ ## [Unreleased] +### Fixed + +- Fixed DeepSeek prompt cache hits to be tracked from `prompt_cache_hit_tokens` in OpenAI-compatible usage responses ([#3880](https://github.com/badlogic/pi-mono/issues/3880)). + ## [0.70.6] - 2026-04-28 ### Added diff --git a/packages/ai/src/providers/openai-completions.ts b/packages/ai/src/providers/openai-completions.ts index f0e167e9..7af3b897 100644 --- a/packages/ai/src/providers/openai-completions.ts +++ b/packages/ai/src/providers/openai-completions.ts @@ -956,12 +956,13 @@ function parseChunkUsage( rawUsage: { prompt_tokens?: number; completion_tokens?: number; + prompt_cache_hit_tokens?: number; prompt_tokens_details?: { cached_tokens?: number; cache_write_tokens?: number }; }, model: Model<"openai-completions">, ): AssistantMessage["usage"] { const promptTokens = rawUsage.prompt_tokens || 0; - const reportedCachedTokens = rawUsage.prompt_tokens_details?.cached_tokens || 0; + const reportedCachedTokens = rawUsage.prompt_tokens_details?.cached_tokens ?? rawUsage.prompt_cache_hit_tokens ?? 0; const cacheWriteTokens = rawUsage.prompt_tokens_details?.cache_write_tokens || 0; // Normalize to pi-ai semantics: