Repository navigation
fix(model-prices): correct Bedrock Titan and Nova 2 Lite prices, add Nova Premier, clear rescinded Together dates - #45793
Conversation
…ces, add Nova Premier, clear Together returned-model dates Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: Jason Cumberland <jason@revenium.io> Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
|
I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".
|
|
|
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
TLDR
Problem this solves:
amazon.nova-premier-v1:0is missing, so its cost lookups failHow it solves it:
amazon.nova-premier-v1:0from the AWS Price List and Nova user guidedeprecation_datefrom the two Together models that returned to the catalogUser Flow
Before: a team calling Bedrock Titan Text Express sees spend about 6.5x higher than AWS bills
"model": "bedrock/amazon.titan-text-express-v1"bedrock/amazon.nova-premier-v1:0is logged with no cost because the model is unmappedAfter: the same requests are logged at AWS list price
"model": "bedrock/amazon.titan-text-express-v1"bedrock/amazon.nova-premier-v1:0request is logged at $2.50 input and $12.50 output per 1M tokensSources and per-value evidence
Every Bedrock number comes from the AWS Price List bulk offer files for
AmazonBedrock, which are the official machine-readable source behind https://aws.amazon.com/bedrock/pricing/ (raw files athttps://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/current/<region>/index.json, on-demand rows, per 1K tokens)amazon.titan-text-express-v1USE1-TitanTextG1-Express-input-tokens0.0002,-output-tokens0.0006amazon.titan-text-lite-v1USE1-TitanTextG1-Lite-input-tokens0.00015,-output-tokens0.0002eu.amazon.nova-2-lite-v1:0EUC1-Nova2.0Lite-input-tokens0.000429,-output-tokens0.003597,-cache-read-input-token-count0.00010725apac.amazon.nova-2-lite-v1:0APN1-Nova2.0Lite-input-tokens0.000396,-output-tokens0.003311,-cache-read-input-token-count0.000099bedrock/us-gov-west-1/amazon.titan-embed-text-v2:0UGW1-TitanEmbeddingV2-Text-input-tokens0.00011bedrock/us-gov-west-1/amazon.titan-text-express-v1UGW1-TitanTextG1-Express-input-tokens0.0008,-output-tokens0.0016The
eu.*row uses Frankfurt prices, matching how the existingeu.amazon.nova-pro-v1:0,eu.amazon.nova-lite-v1:0andeu.amazon.nova-micro-v1:0rows are priced. Forapac.*, Tokyo is the only APAC region whose Price List carries Nova 2 Lite on-demand rowsNew
amazon.nova-premier-v1:0usesUSE1-NovaPremier-input-tokens0.0025,-output-tokens0.0125 and-cache-read-input-token-count0.000625. The 1M context window, 10K max output and text, image and video input come from the model table at https://docs.aws.amazon.com/nova/latest/userguide/what-is-nova.html. Capability flags match the existingamazon-nova/nova-premier-v1row and the siblingamazon.nova-pro-v1:0rowTogether: https://docs.together.ai/docs/deprecations lists
meta-llama/Llama-3.3-70B-Instruct-Turboanddeepseek-ai/DeepSeek-V4-Flash-0731with the 2026-10-22 removal rescinded and both models back in the catalog, so theirdeprecation_dateis removedAbsorbed from other open PRs
From #45679 this takes the Titan Text Express and Lite prices, the EU and APAC Nova 2 Lite prices, the two GovCloud Titan rows and the Nova Premier entry, with Nova Premier also gaining its Price List cache read rate. It drops the Frankfurt and Tokyo
anthropic.claude-instant-v1prices because those regions have no Claude Instant rows in the Price List, and it dropsamazon.nova-sonic-v1:0because https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle-legacy.html shows it reached end of life on September 14, 2026. The test edit in that PR is not needed since the Claude Instant rows it moved off stay unchangedFrom #45754 this takes the two Together
deprecation_dateremovals. It drops the removal ofcache_read_input_token_costontogether_ai/together/Tev1-4B-experimentalbecause no official page shows that rate was withdrawnChecked and left unchanged
OpenAI, Anthropic, Gemini, Vertex, Azure, Groq and Bedrock deprecation pages were compared against the map. Anthropic and Bedrock "not sooner than" dates are tentative, so they are not recorded, matching the previous audit. The Together
openai/gpt-oss-20bandgoogle/gemma-4-31B-itdate stays at 2026-09-15 as set in #43509. #45502 (temporary sale prices), #43879 (barekimi-k2.5duplicatingmoonshot/kimi-k2.5) and #43753 (baredeepseek-v3duplicatingdeepseek/deepseek-v3) were not absorbed. PRs that change code and only incidentally touch the JSON were left alonePre-Submission checklist
uv run pytest tests/unit/<your_test_file>.py -v. Leave the suites (make test-unit-*,make test-unit) to CI: it finishes in ~15 minutes where a laptop takes an hour or more@greptileaito re-request a review after pushing changes)Delays in PR merge?
If you're seeing a delay in your PR being merged, ping the LiteLLM Team on Slack (#pr-review).
Screenshots / Proof of Fix
Probe that loads each revision's cost map and prices 1M input plus 1M output tokens with
litellm.cost_per_tokenBefore (origin/main)
LITELLM_LOCAL_MODEL_COST_MAP=True uv run --no-sync python cost_probe.py origin/mainAfter (f40b9e4)
LITELLM_LOCAL_MODEL_COST_MAP=True uv run --no-sync python cost_probe.py HEADLocal checks also passed:
python3 ci_cd/check_files_match.py, schema regeneration with no diff, andLITELLM_LOCAL_MODEL_COST_MAP=True uv run --no-sync pytest -q tests/unit/test_model_prices_schema.py tests/unit/test_model_cost_aliases.py(92 passed)Type
🐛 Bug Fix
Caveats (if any)
Low
apac.*Nova 2 Lite uses Tokyo, the only APAC Price List region listing itLink to Devin session: https://app.devin.ai/sessions/ba9b8afb8f4c4277b7ee0ded8443c2d6
Open in Devin Desktop: https://app.devin.ai/desktop/session/ba9b8afb8f4c4277b7ee0ded8443c2d6?variant=devin