Repository navigation
fix(cost-map): add OpenAI TTS and GPT-5.x deprecation dates - #44175
Conversation
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)".
|
|
|
Co-authored-by: Ben Langfeld <210221+benlangfeld@users.noreply.github.com> Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
TLDR
Problem this solves:
deprecation_date/model/deprecations(feat(proxy): proactive model deprecation alerts and/model/deprecationsendpoint #26900) cannot warn about themHow it solves it:
deprecation_date2027-01-06 to four OpenAI TTS modelsdeprecation_date2027-04-01 togpt-5.1,gpt-5.3-codex,gpt-5.4-nanoUser Flow
Before: a proxy admin checking upcoming retirements sees nothing for models OpenAI is shutting down
tts-1andgpt-5.1deployments on the proxydeprecation_datedeprecation_date, so no retirement warning is possibleAfter: the same models carry OpenAI's announced shutdown dates
tts-1andgpt-5.1deploymentstts-1showsdeprecation_date2027-01-06 andgpt-5.1shows 2027-04-01Relevant issues
Supports #26900
Registry changes
Source for every value: the raw HTML of https://platform.openai.com/docs/deprecations, fetched 2026-10-02 and read row by row from the
<table>cells, cross-checked against the r.jina.ai copy of the same pageSection "2026-10-01: GPT-5.3-Codex, GPT-5.1, GPT-5.4-Nano" says the models "will be removed from the API on April 1, 2027". Raw rows:
Apr 1, 2027 | gpt-5.3-codex | gpt-6-sol,Apr 1, 2027 | gpt-5.4-nano | gpt-6-luna,Apr 1, 2027 | gpt-5.1 | gpt-6-solgpt-5.1gpt-5.3-codexgpt-5.4-nanoThe text-to-speech section says the models "will be removed from the API on January 6, 2027". Raw rows:
Jan 6, 2027 | tts-1 | gpt-realtime-2.1-mini,Jan 6, 2027 | tts-1-hd | gpt-realtime-2.1-mini,Jan 6, 2027 | gpt-4o-mini-tts-2025-03-20 | gpt-realtime-2.1-mini,Jan 6, 2027 | gpt-4o-mini-tts-2025-12-15 | gpt-realtime-2.1-minitts-1tts-1-hdgpt-4o-mini-tts-2025-03-20gpt-4o-mini-tts-2025-12-15Only the exact model names in the table were dated. The dated snapshots
gpt-5.1-2025-11-13andgpt-5.4-nano-2026-03-17, plustts-1-1106,tts-1-hd-1106and thegpt-4o-mini-ttsalias, are not named on the page and stay undated. Azure rows follow the Azure retirement schedule, not this page, and were not changedAbsorbed from other open PRs
This is the rolling registry PR. No open Devin registry PR existed, so this run opened it. Open PRs touching the registry were diffed field by field against their own merge base and re-checked against current official sources
Absorbed: #44113 (four OpenAI TTS
deprecation_datevalues). Every value matches the raw OpenAI deprecations table above, and it is the TTS half of this PR. Its author is credited with a Co-authored-by trailerDropped as unverifiable or already covered (data-only PRs): #43879 (
moonshot/kimi-k2.5already onmain, 8192 output cap not in Moonshot docs), #43753 (https://api-docs.deepseek.com/quick_start/pricing has nodeepseek-v3row), #43859 (tinkeris not a LiteLLM provider), #41775 (Together's deprecations page is a redirect table with no retirement dates), #41376 and #40368 (target rows are no longer onmain)Left alone because they add a provider or change code or CI behavior and only touch the JSON as part of that: #44167 (ScaleDown provider set in
litellm/__init__.py), #40755 (pgsgrove provider set), #43457, #43390 and the remaining non data-only PRsci_cd/cost_map_pins.jsonis not edited and no pinned capability flag is touchedChecked and not changed
Anthropic: https://api.anthropic.com/v1/models context and output limits match every listed model. https://docs.anthropic.com/en/docs/about-claude/model-deprecations retired and deprecated rows already match (
claude-sonnet-4-5-202509292026-11-30) or the keys were removed. Active models only carry "Not sooner than" tentative dates, which are not announced retirements, so they stay undated. Pricing rows on https://docs.anthropic.com/en/docs/about-claude/pricing matchMistral: every row in the deprecated table on https://docs.mistral.ai/getting-started/models/models_overview that has a registry key already carries its retirement date (
mistral/zai-glm-5-22026-10-31,mistral/labs-leanstral-1-5andmistral/mistral-ocr-4-02026-09-30)Azure: https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule differs only on rows where the later Azure Models API date was kept on purpose (#44072)
DeepSeek (https://api-docs.deepseek.com/quick_start/pricing) peak, off-peak, cache and vision values for
deepseek-flashanddeepseek-v4-promatch. Gemini (https://ai.google.dev/gemini-api/docs/deprecations) and Groq (https://console.groq.com/docs/deprecations) deprecation tables match. OpenAI pricing rows on https://developers.openai.com/api/docs/pricing all have registry keys. Cohere (https://docs.cohere.com/docs/models) limits match within the docs' roundingBedrock lifecycle, xAI models, Cohere pricing and Fireworks per-model pricing pages serve no static table rows in raw HTML, so nothing was changed from them
Pre-Submission checklist
Screenshots / Proof of Fix
Data-only change, so no live proxy call changes cost. Checks run at 83bb4c2
sha256sum model_prices_and_context_window.json litellm/model_prices_and_context_window_backup.jsonshows both files at6a6c5f26c342...python3 ci_cd/check_files_match.pypassesobject_pairs_hookpassesuv run --no-sync python ci_cd/generate_model_prices_schema.py --checkreports the schema in sync and the registry validLITELLM_LOCAL_MODEL_COST_MAP=True uv run --no-sync pytest tests/unit/test_model_prices_schema.py tests/unit/test_cost_map_guard.py tests/unit/test_utils.py::test_aaamodel_prices_and_context_window_json_is_validgives 87 passedType
🐛 Bug Fix
Link to Devin session: https://app.devin.ai/sessions/548871a8e96447f5948657fe3e5ec0d3
Open in Devin Desktop: https://app.devin.ai/desktop/session/548871a8e96447f5948657fe3e5ec0d3?variant=devin