Repository navigation
π± tokens: refresh model price table 2026-11-09 - #17354
Conversation
Automated refresh of src/pkg/tokens/pricing.go from OpenRouter's public model catalogue by src/internal/tools/pricetable; see the PR body for every rate that moved and every row that could not be verified. Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Signed-off-by: clubanderson <407614+clubanderson@users.noreply.github.com>
Open PR overlap checkBase branch: Conflicts are checked with every PR merged onto the current tip of No conflicting open PRs or same-file overlaps were found. |
There was a problem hiding this comment.
Re-fetched https://openrouter.ai/api/v1/models and checked all four changed rows: every figure in the diff matches the catalogue (moonshotai/kimi-k3 prompt 0.192 / completion 16.00 / cache-read 0.182; moonshotai/kimi-k2.7-code 0.60 / 3.50 / 0.16; deepseek/deepseek-chat 0.32 / 0.89; meta-llama/llama-3.3-70b-instruct 0.59 / 0.79 / 0.295). The refresh did what src/pkg/tokens/pricing.go:28-34 says the tool does. Looks correct to me as a faithful transcription.
Two things for whoever lands this:
-
Open question,
pricing.go:193βkimi-k3input price. OpenRouter really does list $0.192/M in against $16.00/M out (an 83Γ in/out ratio; the previous row was $3.00/$15.00, and the siblingkimi-k2-7-codeon the next line is $0.60 in). I could not confirm the figure against the vendor page named in the header (platform.kimi.ai/docs/pricing/chatis JS-rendered). It is possible this is an upstream catalogue quirk rather than a real list price. Not a defect in this PR β the tool copied its source β but a maintainer may want to eyeball it before the Cost panel starts under-estimating kimi-k3 input by ~15Γ. -
Stale comment,
pricing.go:151(low). The line above thedeepseek-chatrow still reads$0.27 in / $1.10 out; cache hit $0.07, while the row now says 0.32 / 0.89. The tool only rewrites literals, so the hand-written comment is now wrong. Trivial to fix in a follow-up if you'd rather not touch an automated PR.
On the red native-queue-policy check: the job log says it was replaying the last verdict for a cosmetic size/S label flip and refused with head/base moved, draft, closed, or held β a policy-engine state, not anything in this diff. Also noting the PR already carries needs-human, so the human look in (1) is on its way regardless.
β hive: agent=reviewer backend=copilot model=claude-fable-5.1 copilot=1.0.88
|
Needs a decision, not a merge: the automerge lane will not merge this unattended. Head: verdict approved @49f0b18, 12/38 checks green, 26 pending, DCO yes, soak 0s of 10m0s. How to release it:
Clear the cause and the hive re-evaluates on its next pass; the stage moves to |
|
Hive status β updated in place; edits do not notify. Full history is in the Activity Monitor.
Review findings from Conclusion: the diff is correct as a transcription of OpenRouter, but it applies a Evidence (read on
So merging as-is lands the one row the repo decided (a few hours earlier) needs a human to confirm against Kimi's own price page first. An 83Γ output/input spread with cache-read at 95% of input is more consistent with a catalogue defect than a list-price move. Also worth knowing before deciding:
The body's own checklist ("each changed rate matches the vendor's own price page") is the right gate here; I have not approved or changed anything. Review findings from Transcription is correct; one row's source value looks suspect and needs the human price check this PR already asks for. I re-fetched Open question β
The previous row ($3 / $15 / $0.30) is consistent with the comment at Minor, not blocking: the I have not approved or changed anything; the decision above is for a maintainer. |
There was a problem hiding this comment.
Correctness re-review at 5d7f693 (delta since 49f0b18 is only Merge branch 'v5'; the PR's own diff vs merge-base is still src/pkg/tokens/pricing.go + the changelog fragment).
The merge pulled in #17365, which taught internal/tools/pricetable to hold implausible quotes instead of applying them (src/internal/tools/pricetable/reconcile.go:33-44, :243-285). This branch's table was generated by the pre-#17365 reconciler and was only merged, not regenerated β so it now applies rows that the repo's own gate rejects. I ran the head reconciler in -dry-run against the merge-base pricing.go with a catalogue carrying exactly the four quotes in the PR body; it reports:
| row | reconciler verdict at head |
|---|---|
kimi-k3 (pricing.go:193) |
held β InputPerMTok moves more than 5Γ (3.00 β 0.192); CacheWritePerMTok moves more than 5Γ (3.00 β 0.192); output/input ratio above 30 (16.00 / 0.192); cache read at or above 90% of input (0.182 vs 0.192) |
llama-3-3-70b-instruct (pricing.go:160) |
held β InputPerMTok moves more than 5Γ (0.10 β 0.59); CacheWritePerMTok moves more than 5Γ (0.10 β 0.59) |
deepseek-chat, kimi-k2-7-code |
applied |
kimi-k3 (in-scope). An $0.192/M input against $16.00/M output is an 83Γ ratio with no sibling in the table anywhere near it; this is the upstream catalogue anomaly noted at the previous head, and the repo has since decided (#17365) that such a quote is a question for a human, not a change. Merging as-is writes it into the Cost panel estimate. Suggested fix β keep the current value, as the reconciler would:
"kimi-k3": {InputPerMTok: 3.00, OutputPerMTok: 15.00, CacheReadPerMTok: 0.30, CacheWritePerMTok: 3.00},
Alternatively, let the next scheduled price-table-refresh run force-push this branch (the body says it will); with #17365 in v5 it will regenerate with kimi-k3 under Held for review and no pricing.go hunk for it.
llama-3-3-70b-instruct (advisory). Also held by the new gate, but here the proposed 0.59 / 0.79 / 0.295 / 0.59 matches the two sibling rows llama-3-3-70b (pricing.go:159) and meta-llama-3-3-70b-instruct (pricing.go:161), so the old 0.10 / 0.32 looks like the outlier and the move is plausibly correct. Fine to keep; just noting it will show up as "held" on the regenerated branch and need a hand edit.
Prior findings: kimi-k3 anomaly β still present (and now contradicted by the in-tree gate, hence this request); stale deepseek-chat comment at pricing.go:151 ($0.27 in / $1.10 out vs 0.32 / 0.89 on line 152) β still present, docs-currency, not a blocker from this perspective.
β hive: agent=adjudicator backend=copilot model=claude-fable-5.1 copilot=1.0.88
β¦at comment The OpenRouter moonshotai/kimi-k3 quote (0.192 in / 16.00 out / 0.182 cache read) is a catalogue anomaly (83x output/input ratio, batch tier priced above standard); the reconciler's plausibility guard from #17365 now holds such rows for review instead of applying them. Keep the row at 3.00 / 15.00 / 0.30 / 3.00 as the guard would, land the other three rows, and update the hand-written deepseek-chat comment to match the new literal. Signed-off-by: Andrew Anderson <andy@clubanderson.com>
|
Pushed c1d4601 addressing both findings from the adjudicator re-review at 5d7f693:
Origin note: this PR shows @clubanderson as author because /lgtm |
|
@clubanderson: you cannot LGTM your own PR. DetailsIn response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: clubanderson The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
Mutation testing (advisory)gremlins found 8 surviving mutant(s) in changed files: the code ran under tests, but changing it did not fail any test.
Advisory only; this job never blocks the PR (#17349). |
|
Thank you for your contribution! Your PR has been merged. We'd love to hear how your experience was: share feedback |
Price table refresh
Source:
https://openrouter.ai/api/v1/models(OpenRouter public model catalogue; per-token USD list prices).priceTableDate: 2026-11-02 β 2026-11-09.Changes (4)
All figures are USD per million tokens.
deepseek-chatdeepseek/deepseek-chatkimi-k2-7-codemoonshotai/kimi-k2.7-codekimi-k3moonshotai/kimi-k3llama-3-3-70b-instructmeta-llama/llama-3.3-70b-instructVerified unchanged (44)
claude-fable-5,claude-fable-5-1,claude-haiku-4-5,claude-opus-4-1,claude-opus-4-5,claude-opus-4-6,claude-opus-4-7,claude-opus-4-8,claude-opus-5,claude-opus-5-5,claude-sonnet-4-5,claude-sonnet-4-6,claude-sonnet-5,claude-sonnet-5-5,gemini-2-5-flash,gemini-2-5-pro,gemini-3-1-pro-preview,gemini-3-5-flash,gemini-3-6-flash,gemini-3-6-flash-high,gemini-3-6-flash-low,gemini-3-6-flash-medium,gemini-3-7-flash,gemini-3-7-flash-high,gemini-3-7-flash-low,gemini-3-7-flash-medium,gemini-3-flash-preview,gpt-4-1,gpt-4o,gpt-5-2,gpt-5-3-codex,gpt-5-4,gpt-5-4-mini,gpt-5-5,gpt-5-6-luna,gpt-5-6-sol,gpt-5-6-terra,gpt-5-mini,gpt-6-astra,gpt-6-luna,gpt-6-sol,gpt-oss-120b-medium,grok-4-5,o3Not verifiable via the source (18)
These rows keep their current value and still need a manual check against the vendor's price page.
claude-opus-4-6-thinkingβ not listed by the source; current value keptdeepseek-r1β not listed by the source; current value keptdeepseek-reasonerβ not listed by the source; current value keptdeepseek-v3β not listed by the source; current value keptgemini-2-0-flashβ not listed by the source; current value keptgemini-3-1-pro-highβ not listed by the source; current value keptgemini-3-1-pro-lowβ not listed by the source; current value keptgemini-3-pro-previewβ not listed by the source; current value keptgemini-flash-3-5β not listed by the source; current value keptgpt-5-3β not listed by the source; current value keptgpt-5-3-codex-sparkβ not listed by the source; current value keptgpt-5-6β not listed by the source; current value keptgpt-daybreak-blue-latestβ not listed by the source; current value keptgpt-daybreak-red-latestβ not listed by the source; current value keptllama-3-3-70bβ not listed by the source; current value keptmai-code-1-flash-pickerβ not listed by the source; current value keptmeta-llama-3-3-70b-instructβ not listed by the source; current value kepto4-miniβ not listed by the source; current value keptNotes (21)
deepseek-chat: source publishes no cache-read rate; hand-set 0.07 keptgemini-2-5-flash: source cache-write rate 0.083333 is below input (storage-rate semantics); cache write kept equal to inputgemini-2-5-pro: source cache-write rate 0.375 is below input (storage-rate semantics); cache write kept equal to inputgemini-3-1-pro-preview: source cache-write rate 0.375 is below input (storage-rate semantics); cache write kept equal to inputgemini-3-5-flash: source cache-write rate 0.083333 is below input (storage-rate semantics); cache write kept equal to inputgemini-3-6-flash-high: not listed by the source; priced via its base modelgemini-3-6-flash(google/gemini-3.6-flash)gemini-3-6-flash-high: source cache-write rate 0.041667 is below input (storage-rate semantics); cache write kept equal to inputgemini-3-6-flash-low: not listed by the source; priced via its base modelgemini-3-6-flash(google/gemini-3.6-flash)gemini-3-6-flash-low: source cache-write rate 0.041667 is below input (storage-rate semantics); cache write kept equal to inputgemini-3-6-flash-medium: not listed by the source; priced via its base modelgemini-3-6-flash(google/gemini-3.6-flash)gemini-3-6-flash-medium: source cache-write rate 0.041667 is below input (storage-rate semantics); cache write kept equal to inputgemini-3-6-flash: source cache-write rate 0.041667 is below input (storage-rate semantics); cache write kept equal to inputgemini-3-7-flash-high: not listed by the source; priced via its base modelgemini-3-7-flash(google/gemini-3.7-flash)gemini-3-7-flash-high: source cache-write rate 0.041667 is below input (storage-rate semantics); cache write kept equal to inputgemini-3-7-flash-low: not listed by the source; priced via its base modelgemini-3-7-flash(google/gemini-3.7-flash)gemini-3-7-flash-low: source cache-write rate 0.041667 is below input (storage-rate semantics); cache write kept equal to inputgemini-3-7-flash-medium: not listed by the source; priced via its base modelgemini-3-7-flash(google/gemini-3.7-flash)gemini-3-7-flash-medium: source cache-write rate 0.041667 is below input (storage-rate semantics); cache write kept equal to inputgemini-3-7-flash: source cache-write rate 0.041667 is below input (storage-rate semantics); cache write kept equal to inputgemini-3-flash-preview: source cache-write rate 0.083333 is below input (storage-rate semantics); cache write kept equal to inputgpt-oss-120b-medium: not listed by the source; priced via its base modelgpt-oss-120b(openai/gpt-oss-120b)List prices are a ceiling on what hive's estimate can show, not a bill: subscription seats, self-hosted inference and negotiated rates all bill differently. Review the figures above against the vendor's own page before merging.
Review
Generated by price-table-refresh with
go run ./internal/tools/pricetable; the branch is force-pushed by later runs until merged. Not auto-merged: a human reviews prices.