Repository navigation
Commit b02e615
committed
fix(mistral): drop cached_tokens that exceed prompt_tokens
What: readCachedPromptTokens now takes the reported prompt total and rejects a
cached_tokens value larger than it, mirroring the subset guard the OpenAI
sibling applies to the identical nested wire field
(src/api/providers/openai.ts:304-313, `reportedCacheReadTokens <= inputTokens`).
Why: without the bound, a malformed upstream count larger than prompt_tokens
would bill reads at 0.1x and surface as cacheReads > tokensIn. The sibling
already treats that shape as invalid rather than trusted, so the two readers of
`prompt_tokens_details.cached_tokens` now agree.
The bound is inclusive (`>` is the rejection test), matching the sibling: a
fully cached prompt where cached_tokens equals prompt_tokens stays valid.
Impact: malformed usage is dropped instead of mis-billed; valid usage is
unchanged. Two spec cases pin the behavior: an over-total value is dropped, and
an equal-to-total value is kept.1 parent a248927 commit b02e615
2 files changed
Lines changed: 70 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
550 | 550 | | |
551 | 551 | | |
552 | 552 | | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
553 | 604 | | |
554 | 605 | | |
555 | 606 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
59 | | - | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
60 | 69 | | |
61 | 70 | | |
62 | 71 | | |
63 | 72 | | |
64 | 73 | | |
65 | 74 | | |
66 | | - | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
67 | 81 | | |
68 | 82 | | |
69 | 83 | | |
| |||
199 | 213 | | |
200 | 214 | | |
201 | 215 | | |
| 216 | + | |
202 | 217 | | |
203 | 218 | | |
204 | | - | |
| 219 | + | |
205 | 220 | | |
206 | | - | |
| 221 | + | |
207 | 222 | | |
208 | 223 | | |
209 | 224 | | |
| |||
0 commit comments