diff --git a/litellm/model_prices_and_context_window_backup.json b/litellm/model_prices_and_context_window_backup.json index 8977c5dd88e..0b96fd3e2b0 100644 --- a/litellm/model_prices_and_context_window_backup.json +++ b/litellm/model_prices_and_context_window_backup.json @@ -901,7 +901,7 @@ "anthropic.claude-3-5-sonnet-20240620-v1:0": { "input_cost_per_token": 3e-06, "litellm_provider": "bedrock", - "max_input_tokens": 1000000, + "max_input_tokens": 200000, "max_output_tokens": 4096, "max_tokens": 4096, "mode": "chat", @@ -911,10 +911,6 @@ "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true, - "input_cost_per_token_above_200k_tokens": 6e-06, - "output_cost_per_token_above_200k_tokens": 3e-05, - "cache_creation_input_token_cost_above_200k_tokens": 7.5e-06, - "cache_read_input_token_cost_above_200k_tokens": 6e-07, "cache_creation_input_token_cost": 3.75e-06, "cache_read_input_token_cost": 3e-07 }, @@ -923,7 +919,7 @@ "cache_read_input_token_cost": 3e-07, "input_cost_per_token": 3e-06, "litellm_provider": "bedrock", - "max_input_tokens": 1000000, + "max_input_tokens": 200000, "max_output_tokens": 8192, "max_tokens": 8192, "mode": "chat", @@ -935,11 +931,7 @@ "supports_prompt_caching": true, "supports_response_schema": true, "supports_tool_choice": true, - "supports_vision": true, - "input_cost_per_token_above_200k_tokens": 6e-06, - "output_cost_per_token_above_200k_tokens": 3e-05, - "cache_creation_input_token_cost_above_200k_tokens": 7.5e-06, - "cache_read_input_token_cost_above_200k_tokens": 6e-07 + "supports_vision": true }, "anthropic.claude-3-7-sonnet-20240620-v1:0": { "cache_creation_input_token_cost": 4.5e-06, @@ -26245,7 +26237,7 @@ "fireworks_ai/accounts/fireworks/models/deepseek-r1": { "input_cost_per_token": 3e-06, "litellm_provider": "fireworks_ai", - "max_input_tokens": 128000, + "max_input_tokens": 163840, "max_output_tokens": 20480, "max_tokens": 20480, "mode": "chat", @@ -26257,7 +26249,7 @@ "fireworks_ai/accounts/fireworks/models/deepseek-r1-0528": { "input_cost_per_token": 3e-06, "litellm_provider": "fireworks_ai", - "max_input_tokens": 160000, + "max_input_tokens": 163840, "max_output_tokens": 160000, "max_tokens": 160000, "mode": "chat", @@ -26269,7 +26261,7 @@ "fireworks_ai/accounts/fireworks/models/deepseek-r1-basic": { "input_cost_per_token": 5.5e-07, "litellm_provider": "fireworks_ai", - "max_input_tokens": 128000, + "max_input_tokens": 163840, "max_output_tokens": 20480, "max_tokens": 20480, "mode": "chat", @@ -26281,7 +26273,7 @@ "fireworks_ai/accounts/fireworks/models/deepseek-v3": { "input_cost_per_token": 9e-07, "litellm_provider": "fireworks_ai", - "max_input_tokens": 128000, + "max_input_tokens": 131072, "max_output_tokens": 8192, "max_tokens": 8192, "mode": "chat", @@ -26414,7 +26406,7 @@ "fireworks_ai/accounts/fireworks/models/glm-4p5": { "input_cost_per_token": 5.5e-07, "litellm_provider": "fireworks_ai", - "max_input_tokens": 128000, + "max_input_tokens": 131072, "max_output_tokens": 96000, "max_tokens": 96000, "mode": "chat", @@ -26428,7 +26420,7 @@ "fireworks_ai/accounts/fireworks/models/glm-4p5-air": { "input_cost_per_token": 2.2e-07, "litellm_provider": "fireworks_ai", - "max_input_tokens": 128000, + "max_input_tokens": 131072, "max_output_tokens": 96000, "max_tokens": 96000, "mode": "chat", @@ -26443,7 +26435,7 @@ "input_cost_per_token": 5.5e-07, "output_cost_per_token": 2.19e-06, "litellm_provider": "fireworks_ai", - "max_input_tokens": 202800, + "max_input_tokens": 202752, "max_output_tokens": 202800, "max_tokens": 202800, "mode": "chat", @@ -26457,7 +26449,7 @@ "cache_read_input_token_cost": 3e-07, "input_cost_per_token": 6e-07, "litellm_provider": "fireworks_ai", - "max_input_tokens": 202800, + "max_input_tokens": 202752, "max_output_tokens": 202800, "max_tokens": 202800, "mode": "chat", @@ -26472,7 +26464,7 @@ "cache_read_input_token_cost": 2.6e-07, "input_cost_per_token": 1.4e-06, "litellm_provider": "fireworks_ai", - "max_input_tokens": 202800, + "max_input_tokens": 202752, "max_output_tokens": 131072, "max_tokens": 131072, "mode": "chat", @@ -26636,7 +26628,7 @@ "fireworks_ai/accounts/fireworks/models/llama-v3p1-405b-instruct": { "input_cost_per_token": 3e-06, "litellm_provider": "fireworks_ai", - "max_input_tokens": 128000, + "max_input_tokens": 131072, "max_output_tokens": 16384, "max_tokens": 16384, "mode": "chat", @@ -26649,7 +26641,7 @@ "fireworks_ai/accounts/fireworks/models/llama-v3p1-8b-instruct": { "input_cost_per_token": 1e-07, "litellm_provider": "fireworks_ai", - "max_input_tokens": 16384, + "max_input_tokens": 131072, "max_output_tokens": 16384, "max_tokens": 16384, "mode": "chat", @@ -26662,7 +26654,7 @@ "fireworks_ai/accounts/fireworks/models/llama-v3p2-11b-vision-instruct": { "input_cost_per_token": 2e-07, "litellm_provider": "fireworks_ai", - "max_input_tokens": 16384, + "max_input_tokens": 131072, "max_output_tokens": 16384, "max_tokens": 16384, "mode": "chat", @@ -26676,7 +26668,7 @@ "fireworks_ai/accounts/fireworks/models/llama-v3p2-1b-instruct": { "input_cost_per_token": 1e-07, "litellm_provider": "fireworks_ai", - "max_input_tokens": 16384, + "max_input_tokens": 131072, "max_output_tokens": 16384, "max_tokens": 16384, "mode": "chat", @@ -26689,7 +26681,7 @@ "fireworks_ai/accounts/fireworks/models/llama-v3p2-3b-instruct": { "input_cost_per_token": 1e-07, "litellm_provider": "fireworks_ai", - "max_input_tokens": 16384, + "max_input_tokens": 131072, "max_output_tokens": 16384, "max_tokens": 16384, "mode": "chat", @@ -26702,7 +26694,7 @@ "fireworks_ai/accounts/fireworks/models/llama-v3p2-90b-vision-instruct": { "input_cost_per_token": 9e-07, "litellm_provider": "fireworks_ai", - "max_input_tokens": 16384, + "max_input_tokens": 131072, "max_output_tokens": 16384, "max_tokens": 16384, "mode": "chat", @@ -26740,7 +26732,7 @@ "cache_read_input_token_cost": 3e-08, "input_cost_per_token": 3e-07, "litellm_provider": "fireworks_ai", - "max_input_tokens": 204800, + "max_input_tokens": 196608, "max_output_tokens": 204800, "max_tokens": 204800, "mode": "chat", @@ -26841,7 +26833,7 @@ "cache_read_input_token_cost": 3e-07, "input_cost_per_token": 6e-07, "litellm_provider": "fireworks_ai", - "max_input_tokens": 202800, + "max_input_tokens": 202752, "max_output_tokens": 202800, "max_tokens": 202800, "mode": "chat", @@ -26856,7 +26848,7 @@ "cache_read_input_token_cost": 2.6e-07, "input_cost_per_token": 1.4e-06, "litellm_provider": "fireworks_ai", - "max_input_tokens": 202800, + "max_input_tokens": 202752, "max_output_tokens": 131072, "max_tokens": 131072, "mode": "chat", @@ -27031,7 +27023,7 @@ "cache_read_input_token_cost": 3e-08, "input_cost_per_token": 3e-07, "litellm_provider": "fireworks_ai", - "max_input_tokens": 204800, + "max_input_tokens": 196608, "max_output_tokens": 204800, "max_tokens": 204800, "mode": "chat", @@ -45602,6 +45594,7 @@ "supports_tool_choice": true }, "together_ai/meta-llama/Llama-3.3-70B-Instruct-Turbo": { + "deprecation_date": "2026-10-22", "input_cost_per_token": 1.04e-06, "litellm_provider": "together_ai", "max_input_tokens": 131072, @@ -45758,6 +45751,7 @@ }, "together_ai/deepseek-ai/DeepSeek-V4-Flash-0731": { "cache_read_input_token_cost": 3e-08, + "deprecation_date": "2026-10-22", "input_cost_per_token": 1.4e-07, "litellm_provider": "together_ai", "max_input_tokens": 1048576, @@ -52638,7 +52632,7 @@ }, "fireworks_ai/accounts/fireworks/models/ernie-4p5-21b-a3b-pt": { "max_tokens": 4096, - "max_input_tokens": 4096, + "max_input_tokens": 131072, "max_output_tokens": 4096, "input_cost_per_token": 1e-07, "output_cost_per_token": 1e-07, @@ -52647,7 +52641,7 @@ }, "fireworks_ai/accounts/fireworks/models/ernie-4p5-300b-a47b-pt": { "max_tokens": 4096, - "max_input_tokens": 4096, + "max_input_tokens": 131072, "max_output_tokens": 4096, "input_cost_per_token": 1e-07, "output_cost_per_token": 1e-07, @@ -53107,7 +53101,7 @@ }, "fireworks_ai/accounts/fireworks/models/minimax-m2": { "max_tokens": 4096, - "max_input_tokens": 4096, + "max_input_tokens": 196608, "max_output_tokens": 4096, "input_cost_per_token": 3e-07, "output_cost_per_token": 1.2e-06, @@ -53278,7 +53272,7 @@ }, "fireworks_ai/accounts/fireworks/models/nemotron-nano-v2-12b-vl": { "max_tokens": 4096, - "max_input_tokens": 4096, + "max_input_tokens": 131072, "max_output_tokens": 4096, "input_cost_per_token": 1e-07, "output_cost_per_token": 1e-07, @@ -53341,7 +53335,7 @@ }, "fireworks_ai/accounts/fireworks/models/nvidia-nemotron-nano-12b-v2": { "max_tokens": 131072, - "max_input_tokens": 131072, + "max_input_tokens": 128000, "max_output_tokens": 131072, "input_cost_per_token": 2e-07, "output_cost_per_token": 2e-07, @@ -53350,7 +53344,7 @@ }, "fireworks_ai/accounts/fireworks/models/nvidia-nemotron-nano-9b-v2": { "max_tokens": 131072, - "max_input_tokens": 131072, + "max_input_tokens": 128000, "max_output_tokens": 131072, "input_cost_per_token": 2e-07, "output_cost_per_token": 2e-07, @@ -53946,7 +53940,7 @@ }, "fireworks_ai/accounts/fireworks/models/qwen3-coder-480b-instruct-bf16": { "max_tokens": 4096, - "max_input_tokens": 4096, + "max_input_tokens": 262144, "max_output_tokens": 4096, "input_cost_per_token": 9e-07, "output_cost_per_token": 9e-07, @@ -54064,7 +54058,7 @@ }, "fireworks_ai/accounts/fireworks/models/qwen3-vl-8b-instruct": { "max_tokens": 4096, - "max_input_tokens": 4096, + "max_input_tokens": 262144, "max_output_tokens": 4096, "input_cost_per_token": 2e-07, "output_cost_per_token": 2e-07, @@ -59480,16 +59474,16 @@ }, "tencent/deepseek-v4-pro": { "cache_creation_input_token_cost": 0.0, - "cache_read_input_token_cost": 3.625e-09, - "input_cost_per_token": 4.35e-07, - "input_cost_per_token_cache_hit": 3.625e-09, + "cache_read_input_token_cost": 1.45e-07, + "input_cost_per_token": 1.74e-06, + "input_cost_per_token_cache_hit": 1.45e-07, "litellm_provider": "tencent", "max_input_tokens": 1000000, "max_output_tokens": 384000, "max_tokens": 384000, "mode": "chat", - "output_cost_per_token": 8.7e-07, - "source": "https://www.tencentcloud.com/products/tokenhub", + "output_cost_per_token": 3.48e-06, + "source": "https://www.tencentcloud.com/document/product/1300/78937", "supported_endpoints": [ "/v1/chat/completions" ], @@ -59515,7 +59509,7 @@ "max_tokens": 384000, "mode": "chat", "output_cost_per_token": 2.8e-07, - "source": "https://www.tencentcloud.com/products/tokenhub", + "source": "https://www.tencentcloud.com/document/product/1300/78937", "supported_endpoints": [ "/v1/chat/completions" ], @@ -59530,6 +59524,310 @@ "supports_reasoning": true, "supports_vision": false }, + "tencent/deepseek-v4-pro-0813": { + "cache_creation_input_token_cost": 0.0, + "cache_read_input_token_cost": 4.4e-08, + "input_cost_per_token": 1.32e-06, + "input_cost_per_token_cache_hit": 4.4e-08, + "litellm_provider": "tencent", + "max_input_tokens": 1000000, + "max_output_tokens": 384000, + "max_tokens": 384000, + "mode": "chat", + "off_peak_pricing": { + "cache_read_input_token_cost": 2.2e-08, + "input_cost_per_token": 6.6e-07, + "output_cost_per_token": 1.98e-06, + "weekday_timezone": "Asia/Shanghai", + "windows": [ + { + "hours_utc": [ + "00:00-01:00", + "04:00-06:00", + "10:00-00:00" + ], + "weekdays": [ + 1, + 2, + 3, + 4, + 5 + ] + }, + { + "hours_utc": "00:00-00:00", + "weekdays": [ + 6, + 7 + ] + } + ] + }, + "output_cost_per_token": 3.96e-06, + "source": "https://www.tencentcloud.com/document/product/1300/78937", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_assistant_prefill": true, + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_parallel_function_calling": true, + "supports_prompt_caching": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_reasoning": true, + "supports_vision": false + }, + "tencent/deepseek-v4.1-flash": { + "cache_creation_input_token_cost": 0.0, + "cache_read_input_token_cost": 6e-09, + "input_cost_per_token": 3e-07, + "input_cost_per_token_cache_hit": 6e-09, + "litellm_provider": "tencent", + "max_input_tokens": 1000000, + "max_output_tokens": 384000, + "max_tokens": 384000, + "mode": "chat", + "off_peak_pricing": { + "cache_read_input_token_cost": 3e-09, + "input_cost_per_token": 1.5e-07, + "output_cost_per_token": 6e-07, + "weekday_timezone": "Asia/Shanghai", + "windows": [ + { + "hours_utc": [ + "00:00-01:00", + "04:00-06:00", + "10:00-00:00" + ], + "weekdays": [ + 1, + 2, + 3, + 4, + 5 + ] + }, + { + "hours_utc": "00:00-00:00", + "weekdays": [ + 6, + 7 + ] + } + ] + }, + "output_cost_per_token": 1.2e-06, + "source": "https://www.tencentcloud.com/document/product/1300/78937", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_assistant_prefill": true, + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_parallel_function_calling": true, + "supports_prompt_caching": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_reasoning": true, + "supports_vision": true + }, + "tencent/glm-5.3-flashx": { + "cache_creation_input_token_cost": 0.0, + "cache_read_input_token_cost": 7.5e-08, + "input_cost_per_token": 3.7e-07, + "input_cost_per_token_cache_hit": 7.5e-08, + "litellm_provider": "tencent", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 1.25e-06, + "source": "https://www.tencentcloud.com/document/product/1300/78937", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_video_input": true, + "supports_vision": true + }, + "tencent/glm-5.3-flash": { + "cache_creation_input_token_cost": 0.0, + "cache_read_input_token_cost": 3e-08, + "input_cost_per_token": 1.5e-07, + "input_cost_per_token_cache_hit": 3e-08, + "litellm_provider": "tencent", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 5e-07, + "source": "https://www.tencentcloud.com/document/product/1300/78937", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_video_input": true, + "supports_vision": true + }, + "tencent/glm-5.3": { + "cache_creation_input_token_cost": 0.0, + "cache_read_input_token_cost": 2.6e-07, + "input_cost_per_token": 1.4e-06, + "input_cost_per_token_cache_hit": 2.6e-07, + "litellm_provider": "tencent", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 4.4e-06, + "source": "https://www.tencentcloud.com/document/product/1300/78937", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "tencent/glm-5.2": { + "cache_creation_input_token_cost": 0.0, + "cache_read_input_token_cost": 2.6e-07, + "input_cost_per_token": 1.4e-06, + "input_cost_per_token_cache_hit": 2.6e-07, + "litellm_provider": "tencent", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 4.4e-06, + "source": "https://www.tencentcloud.com/document/product/1300/78937", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "tencent/kimi-k3": { + "cache_creation_input_token_cost": 0.0, + "cache_read_input_token_cost": 3e-07, + "input_cost_per_token": 3e-06, + "input_cost_per_token_cache_hit": 3e-07, + "litellm_provider": "tencent", + "max_input_tokens": 1000000, + "max_output_tokens": 1000000, + "max_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 1.5e-05, + "source": "https://www.tencentcloud.com/document/product/1300/78937", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "tencent/kimi-k2.8-preview": { + "cache_creation_input_token_cost": 0.0, + "cache_read_input_token_cost": 2.5e-07, + "input_cost_per_token": 1e-06, + "input_cost_per_token_cache_hit": 2.5e-07, + "litellm_provider": "tencent", + "max_input_tokens": 1000000, + "max_output_tokens": 1000000, + "max_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 4e-06, + "source": "https://www.tencentcloud.com/document/product/1300/78937", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "tencent/kimi-k2.7-code-highspeed": { + "cache_creation_input_token_cost": 0.0, + "cache_read_input_token_cost": 3.8e-07, + "input_cost_per_token": 1.9e-06, + "input_cost_per_token_cache_hit": 3.8e-07, + "litellm_provider": "tencent", + "max_input_tokens": 256000, + "max_output_tokens": 256000, + "max_tokens": 256000, + "mode": "chat", + "output_cost_per_token": 8e-06, + "source": "https://www.tencentcloud.com/document/product/1300/78937", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "tencent/kimi-k2.7-code": { + "cache_creation_input_token_cost": 0.0, + "cache_read_input_token_cost": 1.9e-07, + "input_cost_per_token": 9.5e-07, + "input_cost_per_token_cache_hit": 1.9e-07, + "litellm_provider": "tencent", + "max_input_tokens": 256000, + "max_output_tokens": 256000, + "max_tokens": 256000, + "mode": "chat", + "output_cost_per_token": 4e-06, + "source": "https://www.tencentcloud.com/document/product/1300/78937", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, "tencent/minimax-m3": { "cache_creation_input_token_cost": 0.0, "cache_read_input_token_cost": 6e-08, @@ -59539,7 +59837,7 @@ "max_input_tokens": 1000000, "mode": "chat", "output_cost_per_token": 1.2e-06, - "source": "https://www.tencentcloud.com/products/tokenhub", + "source": "https://www.tencentcloud.com/document/product/1300/78937", "supported_endpoints": [ "/v1/chat/completions" ], @@ -66399,7 +66697,7 @@ "source": "https://api.together.ai/v1/models" }, "together_ai/google/gemma-4-31B-it": { - "deprecation_date": "2026-09-15", + "deprecation_date": "2026-09-14", "input_cost_per_token": 3.9e-07, "litellm_provider": "together_ai", "max_input_tokens": 262144, @@ -66542,7 +66840,7 @@ "source": "https://api.together.ai/v1/models" }, "together_ai/openai/gpt-oss-20b": { - "deprecation_date": "2026-09-15", + "deprecation_date": "2026-09-14", "input_cost_per_token": 5e-08, "litellm_provider": "together_ai", "max_input_tokens": 131072, diff --git a/model_prices_and_context_window.json b/model_prices_and_context_window.json index 8977c5dd88e..0b96fd3e2b0 100644 --- a/model_prices_and_context_window.json +++ b/model_prices_and_context_window.json @@ -901,7 +901,7 @@ "anthropic.claude-3-5-sonnet-20240620-v1:0": { "input_cost_per_token": 3e-06, "litellm_provider": "bedrock", - "max_input_tokens": 1000000, + "max_input_tokens": 200000, "max_output_tokens": 4096, "max_tokens": 4096, "mode": "chat", @@ -911,10 +911,6 @@ "supports_response_schema": true, "supports_tool_choice": true, "supports_vision": true, - "input_cost_per_token_above_200k_tokens": 6e-06, - "output_cost_per_token_above_200k_tokens": 3e-05, - "cache_creation_input_token_cost_above_200k_tokens": 7.5e-06, - "cache_read_input_token_cost_above_200k_tokens": 6e-07, "cache_creation_input_token_cost": 3.75e-06, "cache_read_input_token_cost": 3e-07 }, @@ -923,7 +919,7 @@ "cache_read_input_token_cost": 3e-07, "input_cost_per_token": 3e-06, "litellm_provider": "bedrock", - "max_input_tokens": 1000000, + "max_input_tokens": 200000, "max_output_tokens": 8192, "max_tokens": 8192, "mode": "chat", @@ -935,11 +931,7 @@ "supports_prompt_caching": true, "supports_response_schema": true, "supports_tool_choice": true, - "supports_vision": true, - "input_cost_per_token_above_200k_tokens": 6e-06, - "output_cost_per_token_above_200k_tokens": 3e-05, - "cache_creation_input_token_cost_above_200k_tokens": 7.5e-06, - "cache_read_input_token_cost_above_200k_tokens": 6e-07 + "supports_vision": true }, "anthropic.claude-3-7-sonnet-20240620-v1:0": { "cache_creation_input_token_cost": 4.5e-06, @@ -26245,7 +26237,7 @@ "fireworks_ai/accounts/fireworks/models/deepseek-r1": { "input_cost_per_token": 3e-06, "litellm_provider": "fireworks_ai", - "max_input_tokens": 128000, + "max_input_tokens": 163840, "max_output_tokens": 20480, "max_tokens": 20480, "mode": "chat", @@ -26257,7 +26249,7 @@ "fireworks_ai/accounts/fireworks/models/deepseek-r1-0528": { "input_cost_per_token": 3e-06, "litellm_provider": "fireworks_ai", - "max_input_tokens": 160000, + "max_input_tokens": 163840, "max_output_tokens": 160000, "max_tokens": 160000, "mode": "chat", @@ -26269,7 +26261,7 @@ "fireworks_ai/accounts/fireworks/models/deepseek-r1-basic": { "input_cost_per_token": 5.5e-07, "litellm_provider": "fireworks_ai", - "max_input_tokens": 128000, + "max_input_tokens": 163840, "max_output_tokens": 20480, "max_tokens": 20480, "mode": "chat", @@ -26281,7 +26273,7 @@ "fireworks_ai/accounts/fireworks/models/deepseek-v3": { "input_cost_per_token": 9e-07, "litellm_provider": "fireworks_ai", - "max_input_tokens": 128000, + "max_input_tokens": 131072, "max_output_tokens": 8192, "max_tokens": 8192, "mode": "chat", @@ -26414,7 +26406,7 @@ "fireworks_ai/accounts/fireworks/models/glm-4p5": { "input_cost_per_token": 5.5e-07, "litellm_provider": "fireworks_ai", - "max_input_tokens": 128000, + "max_input_tokens": 131072, "max_output_tokens": 96000, "max_tokens": 96000, "mode": "chat", @@ -26428,7 +26420,7 @@ "fireworks_ai/accounts/fireworks/models/glm-4p5-air": { "input_cost_per_token": 2.2e-07, "litellm_provider": "fireworks_ai", - "max_input_tokens": 128000, + "max_input_tokens": 131072, "max_output_tokens": 96000, "max_tokens": 96000, "mode": "chat", @@ -26443,7 +26435,7 @@ "input_cost_per_token": 5.5e-07, "output_cost_per_token": 2.19e-06, "litellm_provider": "fireworks_ai", - "max_input_tokens": 202800, + "max_input_tokens": 202752, "max_output_tokens": 202800, "max_tokens": 202800, "mode": "chat", @@ -26457,7 +26449,7 @@ "cache_read_input_token_cost": 3e-07, "input_cost_per_token": 6e-07, "litellm_provider": "fireworks_ai", - "max_input_tokens": 202800, + "max_input_tokens": 202752, "max_output_tokens": 202800, "max_tokens": 202800, "mode": "chat", @@ -26472,7 +26464,7 @@ "cache_read_input_token_cost": 2.6e-07, "input_cost_per_token": 1.4e-06, "litellm_provider": "fireworks_ai", - "max_input_tokens": 202800, + "max_input_tokens": 202752, "max_output_tokens": 131072, "max_tokens": 131072, "mode": "chat", @@ -26636,7 +26628,7 @@ "fireworks_ai/accounts/fireworks/models/llama-v3p1-405b-instruct": { "input_cost_per_token": 3e-06, "litellm_provider": "fireworks_ai", - "max_input_tokens": 128000, + "max_input_tokens": 131072, "max_output_tokens": 16384, "max_tokens": 16384, "mode": "chat", @@ -26649,7 +26641,7 @@ "fireworks_ai/accounts/fireworks/models/llama-v3p1-8b-instruct": { "input_cost_per_token": 1e-07, "litellm_provider": "fireworks_ai", - "max_input_tokens": 16384, + "max_input_tokens": 131072, "max_output_tokens": 16384, "max_tokens": 16384, "mode": "chat", @@ -26662,7 +26654,7 @@ "fireworks_ai/accounts/fireworks/models/llama-v3p2-11b-vision-instruct": { "input_cost_per_token": 2e-07, "litellm_provider": "fireworks_ai", - "max_input_tokens": 16384, + "max_input_tokens": 131072, "max_output_tokens": 16384, "max_tokens": 16384, "mode": "chat", @@ -26676,7 +26668,7 @@ "fireworks_ai/accounts/fireworks/models/llama-v3p2-1b-instruct": { "input_cost_per_token": 1e-07, "litellm_provider": "fireworks_ai", - "max_input_tokens": 16384, + "max_input_tokens": 131072, "max_output_tokens": 16384, "max_tokens": 16384, "mode": "chat", @@ -26689,7 +26681,7 @@ "fireworks_ai/accounts/fireworks/models/llama-v3p2-3b-instruct": { "input_cost_per_token": 1e-07, "litellm_provider": "fireworks_ai", - "max_input_tokens": 16384, + "max_input_tokens": 131072, "max_output_tokens": 16384, "max_tokens": 16384, "mode": "chat", @@ -26702,7 +26694,7 @@ "fireworks_ai/accounts/fireworks/models/llama-v3p2-90b-vision-instruct": { "input_cost_per_token": 9e-07, "litellm_provider": "fireworks_ai", - "max_input_tokens": 16384, + "max_input_tokens": 131072, "max_output_tokens": 16384, "max_tokens": 16384, "mode": "chat", @@ -26740,7 +26732,7 @@ "cache_read_input_token_cost": 3e-08, "input_cost_per_token": 3e-07, "litellm_provider": "fireworks_ai", - "max_input_tokens": 204800, + "max_input_tokens": 196608, "max_output_tokens": 204800, "max_tokens": 204800, "mode": "chat", @@ -26841,7 +26833,7 @@ "cache_read_input_token_cost": 3e-07, "input_cost_per_token": 6e-07, "litellm_provider": "fireworks_ai", - "max_input_tokens": 202800, + "max_input_tokens": 202752, "max_output_tokens": 202800, "max_tokens": 202800, "mode": "chat", @@ -26856,7 +26848,7 @@ "cache_read_input_token_cost": 2.6e-07, "input_cost_per_token": 1.4e-06, "litellm_provider": "fireworks_ai", - "max_input_tokens": 202800, + "max_input_tokens": 202752, "max_output_tokens": 131072, "max_tokens": 131072, "mode": "chat", @@ -27031,7 +27023,7 @@ "cache_read_input_token_cost": 3e-08, "input_cost_per_token": 3e-07, "litellm_provider": "fireworks_ai", - "max_input_tokens": 204800, + "max_input_tokens": 196608, "max_output_tokens": 204800, "max_tokens": 204800, "mode": "chat", @@ -45602,6 +45594,7 @@ "supports_tool_choice": true }, "together_ai/meta-llama/Llama-3.3-70B-Instruct-Turbo": { + "deprecation_date": "2026-10-22", "input_cost_per_token": 1.04e-06, "litellm_provider": "together_ai", "max_input_tokens": 131072, @@ -45758,6 +45751,7 @@ }, "together_ai/deepseek-ai/DeepSeek-V4-Flash-0731": { "cache_read_input_token_cost": 3e-08, + "deprecation_date": "2026-10-22", "input_cost_per_token": 1.4e-07, "litellm_provider": "together_ai", "max_input_tokens": 1048576, @@ -52638,7 +52632,7 @@ }, "fireworks_ai/accounts/fireworks/models/ernie-4p5-21b-a3b-pt": { "max_tokens": 4096, - "max_input_tokens": 4096, + "max_input_tokens": 131072, "max_output_tokens": 4096, "input_cost_per_token": 1e-07, "output_cost_per_token": 1e-07, @@ -52647,7 +52641,7 @@ }, "fireworks_ai/accounts/fireworks/models/ernie-4p5-300b-a47b-pt": { "max_tokens": 4096, - "max_input_tokens": 4096, + "max_input_tokens": 131072, "max_output_tokens": 4096, "input_cost_per_token": 1e-07, "output_cost_per_token": 1e-07, @@ -53107,7 +53101,7 @@ }, "fireworks_ai/accounts/fireworks/models/minimax-m2": { "max_tokens": 4096, - "max_input_tokens": 4096, + "max_input_tokens": 196608, "max_output_tokens": 4096, "input_cost_per_token": 3e-07, "output_cost_per_token": 1.2e-06, @@ -53278,7 +53272,7 @@ }, "fireworks_ai/accounts/fireworks/models/nemotron-nano-v2-12b-vl": { "max_tokens": 4096, - "max_input_tokens": 4096, + "max_input_tokens": 131072, "max_output_tokens": 4096, "input_cost_per_token": 1e-07, "output_cost_per_token": 1e-07, @@ -53341,7 +53335,7 @@ }, "fireworks_ai/accounts/fireworks/models/nvidia-nemotron-nano-12b-v2": { "max_tokens": 131072, - "max_input_tokens": 131072, + "max_input_tokens": 128000, "max_output_tokens": 131072, "input_cost_per_token": 2e-07, "output_cost_per_token": 2e-07, @@ -53350,7 +53344,7 @@ }, "fireworks_ai/accounts/fireworks/models/nvidia-nemotron-nano-9b-v2": { "max_tokens": 131072, - "max_input_tokens": 131072, + "max_input_tokens": 128000, "max_output_tokens": 131072, "input_cost_per_token": 2e-07, "output_cost_per_token": 2e-07, @@ -53946,7 +53940,7 @@ }, "fireworks_ai/accounts/fireworks/models/qwen3-coder-480b-instruct-bf16": { "max_tokens": 4096, - "max_input_tokens": 4096, + "max_input_tokens": 262144, "max_output_tokens": 4096, "input_cost_per_token": 9e-07, "output_cost_per_token": 9e-07, @@ -54064,7 +54058,7 @@ }, "fireworks_ai/accounts/fireworks/models/qwen3-vl-8b-instruct": { "max_tokens": 4096, - "max_input_tokens": 4096, + "max_input_tokens": 262144, "max_output_tokens": 4096, "input_cost_per_token": 2e-07, "output_cost_per_token": 2e-07, @@ -59480,16 +59474,16 @@ }, "tencent/deepseek-v4-pro": { "cache_creation_input_token_cost": 0.0, - "cache_read_input_token_cost": 3.625e-09, - "input_cost_per_token": 4.35e-07, - "input_cost_per_token_cache_hit": 3.625e-09, + "cache_read_input_token_cost": 1.45e-07, + "input_cost_per_token": 1.74e-06, + "input_cost_per_token_cache_hit": 1.45e-07, "litellm_provider": "tencent", "max_input_tokens": 1000000, "max_output_tokens": 384000, "max_tokens": 384000, "mode": "chat", - "output_cost_per_token": 8.7e-07, - "source": "https://www.tencentcloud.com/products/tokenhub", + "output_cost_per_token": 3.48e-06, + "source": "https://www.tencentcloud.com/document/product/1300/78937", "supported_endpoints": [ "/v1/chat/completions" ], @@ -59515,7 +59509,7 @@ "max_tokens": 384000, "mode": "chat", "output_cost_per_token": 2.8e-07, - "source": "https://www.tencentcloud.com/products/tokenhub", + "source": "https://www.tencentcloud.com/document/product/1300/78937", "supported_endpoints": [ "/v1/chat/completions" ], @@ -59530,6 +59524,310 @@ "supports_reasoning": true, "supports_vision": false }, + "tencent/deepseek-v4-pro-0813": { + "cache_creation_input_token_cost": 0.0, + "cache_read_input_token_cost": 4.4e-08, + "input_cost_per_token": 1.32e-06, + "input_cost_per_token_cache_hit": 4.4e-08, + "litellm_provider": "tencent", + "max_input_tokens": 1000000, + "max_output_tokens": 384000, + "max_tokens": 384000, + "mode": "chat", + "off_peak_pricing": { + "cache_read_input_token_cost": 2.2e-08, + "input_cost_per_token": 6.6e-07, + "output_cost_per_token": 1.98e-06, + "weekday_timezone": "Asia/Shanghai", + "windows": [ + { + "hours_utc": [ + "00:00-01:00", + "04:00-06:00", + "10:00-00:00" + ], + "weekdays": [ + 1, + 2, + 3, + 4, + 5 + ] + }, + { + "hours_utc": "00:00-00:00", + "weekdays": [ + 6, + 7 + ] + } + ] + }, + "output_cost_per_token": 3.96e-06, + "source": "https://www.tencentcloud.com/document/product/1300/78937", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_assistant_prefill": true, + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_parallel_function_calling": true, + "supports_prompt_caching": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_reasoning": true, + "supports_vision": false + }, + "tencent/deepseek-v4.1-flash": { + "cache_creation_input_token_cost": 0.0, + "cache_read_input_token_cost": 6e-09, + "input_cost_per_token": 3e-07, + "input_cost_per_token_cache_hit": 6e-09, + "litellm_provider": "tencent", + "max_input_tokens": 1000000, + "max_output_tokens": 384000, + "max_tokens": 384000, + "mode": "chat", + "off_peak_pricing": { + "cache_read_input_token_cost": 3e-09, + "input_cost_per_token": 1.5e-07, + "output_cost_per_token": 6e-07, + "weekday_timezone": "Asia/Shanghai", + "windows": [ + { + "hours_utc": [ + "00:00-01:00", + "04:00-06:00", + "10:00-00:00" + ], + "weekdays": [ + 1, + 2, + 3, + 4, + 5 + ] + }, + { + "hours_utc": "00:00-00:00", + "weekdays": [ + 6, + 7 + ] + } + ] + }, + "output_cost_per_token": 1.2e-06, + "source": "https://www.tencentcloud.com/document/product/1300/78937", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_assistant_prefill": true, + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_parallel_function_calling": true, + "supports_prompt_caching": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_reasoning": true, + "supports_vision": true + }, + "tencent/glm-5.3-flashx": { + "cache_creation_input_token_cost": 0.0, + "cache_read_input_token_cost": 7.5e-08, + "input_cost_per_token": 3.7e-07, + "input_cost_per_token_cache_hit": 7.5e-08, + "litellm_provider": "tencent", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 1.25e-06, + "source": "https://www.tencentcloud.com/document/product/1300/78937", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_video_input": true, + "supports_vision": true + }, + "tencent/glm-5.3-flash": { + "cache_creation_input_token_cost": 0.0, + "cache_read_input_token_cost": 3e-08, + "input_cost_per_token": 1.5e-07, + "input_cost_per_token_cache_hit": 3e-08, + "litellm_provider": "tencent", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 5e-07, + "source": "https://www.tencentcloud.com/document/product/1300/78937", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_video_input": true, + "supports_vision": true + }, + "tencent/glm-5.3": { + "cache_creation_input_token_cost": 0.0, + "cache_read_input_token_cost": 2.6e-07, + "input_cost_per_token": 1.4e-06, + "input_cost_per_token_cache_hit": 2.6e-07, + "litellm_provider": "tencent", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 4.4e-06, + "source": "https://www.tencentcloud.com/document/product/1300/78937", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "tencent/glm-5.2": { + "cache_creation_input_token_cost": 0.0, + "cache_read_input_token_cost": 2.6e-07, + "input_cost_per_token": 1.4e-06, + "input_cost_per_token_cache_hit": 2.6e-07, + "litellm_provider": "tencent", + "max_input_tokens": 1000000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 4.4e-06, + "source": "https://www.tencentcloud.com/document/product/1300/78937", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "tencent/kimi-k3": { + "cache_creation_input_token_cost": 0.0, + "cache_read_input_token_cost": 3e-07, + "input_cost_per_token": 3e-06, + "input_cost_per_token_cache_hit": 3e-07, + "litellm_provider": "tencent", + "max_input_tokens": 1000000, + "max_output_tokens": 1000000, + "max_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 1.5e-05, + "source": "https://www.tencentcloud.com/document/product/1300/78937", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "tencent/kimi-k2.8-preview": { + "cache_creation_input_token_cost": 0.0, + "cache_read_input_token_cost": 2.5e-07, + "input_cost_per_token": 1e-06, + "input_cost_per_token_cache_hit": 2.5e-07, + "litellm_provider": "tencent", + "max_input_tokens": 1000000, + "max_output_tokens": 1000000, + "max_tokens": 1000000, + "mode": "chat", + "output_cost_per_token": 4e-06, + "source": "https://www.tencentcloud.com/document/product/1300/78937", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "tencent/kimi-k2.7-code-highspeed": { + "cache_creation_input_token_cost": 0.0, + "cache_read_input_token_cost": 3.8e-07, + "input_cost_per_token": 1.9e-06, + "input_cost_per_token_cache_hit": 3.8e-07, + "litellm_provider": "tencent", + "max_input_tokens": 256000, + "max_output_tokens": 256000, + "max_tokens": 256000, + "mode": "chat", + "output_cost_per_token": 8e-06, + "source": "https://www.tencentcloud.com/document/product/1300/78937", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, + "tencent/kimi-k2.7-code": { + "cache_creation_input_token_cost": 0.0, + "cache_read_input_token_cost": 1.9e-07, + "input_cost_per_token": 9.5e-07, + "input_cost_per_token_cache_hit": 1.9e-07, + "litellm_provider": "tencent", + "max_input_tokens": 256000, + "max_output_tokens": 256000, + "max_tokens": 256000, + "mode": "chat", + "output_cost_per_token": 4e-06, + "source": "https://www.tencentcloud.com/document/product/1300/78937", + "supported_endpoints": [ + "/v1/chat/completions" + ], + "supports_function_calling": true, + "supports_native_streaming": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_system_messages": true, + "supports_tool_choice": true, + "supports_vision": false + }, "tencent/minimax-m3": { "cache_creation_input_token_cost": 0.0, "cache_read_input_token_cost": 6e-08, @@ -59539,7 +59837,7 @@ "max_input_tokens": 1000000, "mode": "chat", "output_cost_per_token": 1.2e-06, - "source": "https://www.tencentcloud.com/products/tokenhub", + "source": "https://www.tencentcloud.com/document/product/1300/78937", "supported_endpoints": [ "/v1/chat/completions" ], @@ -66399,7 +66697,7 @@ "source": "https://api.together.ai/v1/models" }, "together_ai/google/gemma-4-31B-it": { - "deprecation_date": "2026-09-15", + "deprecation_date": "2026-09-14", "input_cost_per_token": 3.9e-07, "litellm_provider": "together_ai", "max_input_tokens": 262144, @@ -66542,7 +66840,7 @@ "source": "https://api.together.ai/v1/models" }, "together_ai/openai/gpt-oss-20b": { - "deprecation_date": "2026-09-15", + "deprecation_date": "2026-09-14", "input_cost_per_token": 5e-08, "litellm_provider": "together_ai", "max_input_tokens": 131072, diff --git a/tests/unit/test_model_prices_schema.py b/tests/unit/test_model_prices_schema.py index 50c9643683b..314a401e88e 100644 --- a/tests/unit/test_model_prices_schema.py +++ b/tests/unit/test_model_prices_schema.py @@ -605,6 +605,26 @@ DEEPSEEK_OFF_PEAK_WINDOWS: Final = ( {"hours_utc": "00:00-00:00", "weekdays": [6, 7]}, ) DEEPSEEK_HALVED_RATES: Final = ("input_cost_per_token", "output_cost_per_token", "cache_read_input_token_cost") +TENCENT_TOKENHUB_DEEPSEEK_PRICED_ROWS: Final = ( + "tencent/deepseek-v4-pro-0813", + "tencent/deepseek-v4.1-flash", +) +TENCENT_TOKENHUB_GLM_ROWS: Final = MappingProxyType( + { + "tencent/glm-5.3-flashx": (3.7e-07, 1.25e-06, 7.5e-08, True, True), + "tencent/glm-5.3-flash": (1.5e-07, 5e-07, 3e-08, True, True), + "tencent/glm-5.3": (1.4e-06, 4.4e-06, 2.6e-07, False, False), + "tencent/glm-5.2": (1.4e-06, 4.4e-06, 2.6e-07, False, False), + } +) +TENCENT_TOKENHUB_KIMI_ROWS: Final = MappingProxyType( + { + "tencent/kimi-k3": (3e-06, 1.5e-05, 3e-07, 1000000, False, False), + "tencent/kimi-k2.8-preview": (1e-06, 4e-06, 2.5e-07, 1000000, False, False), + "tencent/kimi-k2.7-code-highspeed": (1.9e-06, 8e-06, 3.8e-07, 256000, False, False), + "tencent/kimi-k2.7-code": (9.5e-07, 4e-06, 1.9e-07, 256000, False, False), + } +) def deepseek_off_peak_drift(entry: Mapping[str, object]) -> str | None: @@ -636,6 +656,133 @@ def test_deepseek_rows_bill_half_rate_outside_weekday_peak_hours(path: Path): assert all(name in rows for name in DEEPSEEK_PRICED_ROWS) +@pytest.mark.parametrize("path", (PRICES_PATH, BACKUP_PRICES_PATH), ids=("main", "backup")) +def test_tencent_tokenhub_deepseek_rows_bill_half_rate_outside_weekday_peak_hours(path: Path): + """Tencent TokenHub applies the DeepSeek weekday peak windows and half-rate off-peak prices + to these models (tencentcloud.com/document/product/1300/78937, read 2026-10-13).""" + rows: Mapping[str, object] = json.loads(path.read_text()) + drifted: Final = { + name: deepseek_off_peak_drift(entry) + for name in TENCENT_TOKENHUB_DEEPSEEK_PRICED_ROWS + if isinstance(entry := rows.get(name), dict) and deepseek_off_peak_drift(entry) is not None + } + invalid_timezones: Final = tuple( + name + for name in TENCENT_TOKENHUB_DEEPSEEK_PRICED_ROWS + if isinstance(entry := rows.get(name), dict) + and isinstance(block := entry.get("off_peak_pricing"), dict) + and block.get("weekday_timezone") != "Asia/Shanghai" + ) + assert drifted == {} + assert all(name in rows for name in TENCENT_TOKENHUB_DEEPSEEK_PRICED_ROWS) + assert invalid_timezones == () + + +@pytest.mark.parametrize("path", (PRICES_PATH, BACKUP_PRICES_PATH), ids=("main", "backup")) +def test_tencent_tokenhub_glm_rows_match_published_metadata(path: Path): + """TokenHub publishes these prices and capabilities in its official model catalog and rate card + (tencentcloud.com/document/product/1300/78934 and /78937, read 2026-10-13).""" + rows: Mapping[str, object] = json.loads(path.read_text()) + actual: Final = MappingProxyType( + { + name: ( + entry.get("input_cost_per_token"), + entry.get("output_cost_per_token"), + entry.get("cache_read_input_token_cost"), + entry.get("supports_vision", False), + entry.get("supports_video_input", False), + ) + for name in TENCENT_TOKENHUB_GLM_ROWS + if isinstance(entry := rows.get(name), dict) + } + ) + invalid_metadata: Final = tuple( + name + for name in TENCENT_TOKENHUB_GLM_ROWS + if not isinstance(entry := rows.get(name), dict) + or entry.get("litellm_provider") != "tencent" + or entry.get("max_input_tokens") != 1000000 + or entry.get("max_output_tokens") != 128000 + or entry.get("max_tokens") != 128000 + or entry.get("input_cost_per_token_cache_hit") != entry.get("cache_read_input_token_cost") + ) + assert actual == TENCENT_TOKENHUB_GLM_ROWS + assert invalid_metadata == () + + +@pytest.mark.parametrize("path", (PRICES_PATH, BACKUP_PRICES_PATH), ids=("main", "backup")) +def test_tencent_tokenhub_kimi_rows_match_published_metadata(path: Path): + """TokenHub publishes these Kimi prices and capabilities in its official model catalog and rate card + (tencentcloud.com/document/product/1300/78934 and /78937, read 2026-10-13).""" + rows: Mapping[str, object] = json.loads(path.read_text()) + actual: Final = MappingProxyType( + { + name: ( + entry.get("input_cost_per_token"), + entry.get("output_cost_per_token"), + entry.get("cache_read_input_token_cost"), + entry.get("max_tokens"), + entry.get("supports_vision", False), + entry.get("supports_video_input", False), + ) + for name in TENCENT_TOKENHUB_KIMI_ROWS + if isinstance(entry := rows.get(name), dict) + } + ) + invalid_metadata: Final = tuple( + name + for name, expected in TENCENT_TOKENHUB_KIMI_ROWS.items() + if not isinstance(entry := rows.get(name), dict) + or entry.get("litellm_provider") != "tencent" + or entry.get("max_input_tokens") != expected[3] + or entry.get("max_output_tokens") != expected[3] + or entry.get("input_cost_per_token_cache_hit") != entry.get("cache_read_input_token_cost") + or not entry.get("supports_reasoning") + or not entry.get("supports_response_schema") + or not entry.get("supports_function_calling") + or not entry.get("supports_prompt_caching") + ) + assert actual == TENCENT_TOKENHUB_KIMI_ROWS + assert invalid_metadata == () + + +class TestBedrockClaude35SonnetContextWindow: + @pytest.mark.parametrize("path", (PRICES_PATH, BACKUP_PRICES_PATH), ids=("main", "backup")) + def test_bare_model_ids_match_us_and_eu_siblings(self, path: Path): + rows = json.loads(path.read_text()) + for model in ( + "anthropic.claude-3-5-sonnet-20240620-v1:0", + "anthropic.claude-3-5-sonnet-20241022-v2:0", + ): + assert rows[model]["max_input_tokens"] == rows[f"us.{model}"]["max_input_tokens"] + assert rows[model]["max_input_tokens"] == rows[f"eu.{model}"]["max_input_tokens"] + + @pytest.mark.parametrize("path", (PRICES_PATH, BACKUP_PRICES_PATH), ids=("main", "backup")) + def test_bare_model_ids_have_200k_context_window(self, path: Path): + rows = json.loads(path.read_text()) + # Claude 3.5 Sonnet context window is 200K tokens, https://www.anthropic.com/news/claude-3-5-sonnet (accessed 2026-10-13) + for model in ( + "anthropic.claude-3-5-sonnet-20240620-v1:0", + "anthropic.claude-3-5-sonnet-20241022-v2:0", + ): + assert rows[model]["max_input_tokens"] == 200000 + + @pytest.mark.parametrize("path", (PRICES_PATH, BACKUP_PRICES_PATH), ids=("main", "backup")) + def test_bare_model_ids_have_no_above_200k_pricing(self, path: Path): + rows = json.loads(path.read_text()) + above_200k_fields = ( + "input_cost_per_token_above_200k_tokens", + "output_cost_per_token_above_200k_tokens", + "cache_creation_input_token_cost_above_200k_tokens", + "cache_read_input_token_cost_above_200k_tokens", + ) + for model in ( + "anthropic.claude-3-5-sonnet-20240620-v1:0", + "anthropic.claude-3-5-sonnet-20241022-v2:0", + ): + assert not set(above_200k_fields).intersection(rows[model]) + + PROVIDER_LABELS_WITHOUT_A_MODEL_SET: Final = frozenset({"sagemaker", "bedrock_converse"}) MODES_SERVED_OUTSIDE_THE_LLM_PROVIDER_REGISTRY: Final = frozenset({"search", "decisions", "evaluation"}) VERTEX_FAMILIES_A_VERTEX_WILDCARD_GRANT_DOES_NOT_LIST: Final = frozenset(