Skip to content

fix(openai): subtract cached tokens from input tokens to avoid double counting#176

Merged
andreynering merged 1 commit intomainfrom
fix-openai-token-reporting
Mar 18, 2026
Merged

fix(openai): subtract cached tokens from input tokens to avoid double counting#176
andreynering merged 1 commit intomainfrom
fix-openai-token-reporting

Conversation

@andreynering
Copy link
Member

OpenAI's API reports prompt_tokens/input_tokens INCLUDING cached tokens, while also separately reporting cached_tokens in prompt_tokens_details. This caused double-counting when users summed InputTokens + CacheReadTokens.

For example, if OpenAI reports:

  • prompt_tokens: 1000 (includes 900 cached)
  • cached_tokens: 900

Before this fix, fantasy reported:

  • InputTokens: 1000
  • CacheReadTokens: 900

After this fix, fantasy reports:

  • InputTokens: 100 (non-cached only)
  • CacheReadTokens: 900

This matches the behavior of Vercel AI SDK and prevents billing miscalculations when pricing input tokens and cache read tokens separately.

See: https://platform.openai.com/docs/guides/prompt-caching#requirements

💘 Generated with Crush

Assisted-by: Kimi K2.5 via Crush crush@charm.land

… counting

OpenAI's API reports prompt_tokens/input_tokens INCLUDING cached tokens,
while also separately reporting cached_tokens in prompt_tokens_details.
This caused double-counting when users summed InputTokens + CacheReadTokens.

For example, if OpenAI reports:
  - prompt_tokens: 1000 (includes 900 cached)
  - cached_tokens: 900

Before this fix, fantasy reported:
  - InputTokens: 1000
  - CacheReadTokens: 900

After this fix, fantasy reports:
  - InputTokens: 100 (non-cached only)
  - CacheReadTokens: 900

This matches the behavior of Vercel AI SDK and prevents billing
miscalculations when pricing input tokens and cache read tokens separately.

See: https://platform.openai.com/docs/guides/prompt-caching#requirements

💘 Generated with Crush

Assisted-by: Kimi K2.5 via Crush <crush@charm.land>
@andreynering andreynering merged commit 22c3e9a into main Mar 18, 2026
17 checks passed
@andreynering andreynering deleted the fix-openai-token-reporting branch March 18, 2026 16:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants