diff --git a/litellm/__init__.py b/litellm/__init__.py index 1784deeb797..bce90181f7c 100644 --- a/litellm/__init__.py +++ b/litellm/__init__.py @@ -680,6 +680,7 @@ moonshot_models: Set = set() publicai_models: Set = set() darkbloom_models: Set = set() openinfer_models: Final[Set[str]] = set() +streamlake_models: Final[Set[str]] = set() v0_models: Set = set() morph_models: Set = set() lambda_ai_models: Set = set() @@ -966,6 +967,8 @@ def _populate_provider_model_sets(model_cost_map: Mapping[str, Mapping[str, obje darkbloom_models.add(key) elif value.get("litellm_provider") == "openinfer": openinfer_models.add(key) + elif value.get("litellm_provider") == "streamlake": + streamlake_models.add(key) elif value.get("litellm_provider") == "v0": v0_models.add(key) elif value.get("litellm_provider") == "morph": @@ -1135,6 +1138,7 @@ model_list = list( | publicai_models | darkbloom_models | openinfer_models + | streamlake_models | v0_models | morph_models | lambda_ai_models @@ -1252,6 +1256,7 @@ def _build_models_by_provider() -> dict: "publicai": publicai_models, "darkbloom": darkbloom_models, "openinfer": openinfer_models, + "streamlake": streamlake_models, "v0": v0_models, "morph": morph_models, "lambda_ai": lambda_ai_models, diff --git a/litellm/llms/openai_like/providers.json b/litellm/llms/openai_like/providers.json index b40ff25cff0..bb7e6a7d3e1 100644 --- a/litellm/llms/openai_like/providers.json +++ b/litellm/llms/openai_like/providers.json @@ -257,6 +257,10 @@ "param_mappings": { "max_completion_tokens": "max_tokens" }, + "provider_info": { + "supports_function_calling": true, + "supports_reasoning": true + }, "supported_endpoints": ["/v1/chat/completions"] } } diff --git a/litellm/model_prices_and_context_window_backup.json b/litellm/model_prices_and_context_window_backup.json index f44e7512e50..3761172b079 100644 --- a/litellm/model_prices_and_context_window_backup.json +++ b/litellm/model_prices_and_context_window_backup.json @@ -62179,21 +62179,21 @@ "cache_read_input_token_cost": 1.4e-08, "input_cost_per_token": 4.4e-07, "litellm_provider": "streamlake", + "max_input_tokens": 1048576, "max_output_tokens": 384000, "max_tokens": 384000, "mode": "chat", "output_cost_per_token": 1.32e-06, - "rpm": 60, "supports_function_calling": true, "supports_reasoning": true, "supports_response_schema": true, - "tpm": 600000, "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" }, "streamlake/DeepSeek-V4-Pro-0813": { "cache_read_input_token_cost": 4.4e-08, "input_cost_per_token": 1.32e-06, "litellm_provider": "streamlake", + "max_input_tokens": 1048576, "max_output_tokens": 384000, "max_tokens": 384000, "mode": "chat", @@ -62202,8 +62202,6 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, - "rpm": 30, - "tpm": 600000, "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" }, "streamlake/DeepSeek-V3": { @@ -62216,6 +62214,7 @@ "mode": "chat", "output_cost_per_token": 1.143e-06, "supports_function_calling": true, + "supports_reasoning": false, "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" }, "streamlake/GLM-5.3": { @@ -62230,10 +62229,8 @@ "supports_function_calling": true, "supports_reasoning": true, "supports_response_schema": true, - "rpm": 10, "supports_assistant_prefill": true, "supports_prompt_caching": true, - "tpm": 300000, "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" }, "streamlake/GLM-5.3-Flash": { @@ -62249,54 +62246,8 @@ "supports_reasoning": true, "supports_response_schema": true, "supports_vision": true, - "rpm": 30, "supports_assistant_prefill": true, "supports_prompt_caching": true, - "tpm": 300000, - "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" - }, - "streamlake/KAT-Coder-Air-V2.5": { - "cache_read_input_token_cost": 3e-08, - "input_cost_per_token": 1.5e-07, - "litellm_provider": "streamlake", - "max_output_tokens": 80000, - "max_tokens": 80000, - "mode": "chat", - "output_cost_per_token": 6e-07, - "supports_function_calling": true, - "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" - }, - "streamlake/KAT-Coder-Pro-V1": { - "cache_read_input_token_cost": 6e-08, - "input_cost_per_token": 3e-07, - "litellm_provider": "streamlake", - "max_input_tokens": 256000, - "max_output_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 1.2e-06, - "supports_function_calling": true, - "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" - }, - "streamlake/KAT-Coder-Pro-V2": { - "cache_read_input_token_cost": 6e-08, - "input_cost_per_token": 3e-07, - "litellm_provider": "streamlake", - "max_output_tokens": 80000, - "max_tokens": 80000, - "mode": "chat", - "output_cost_per_token": 1.2e-06, - "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" - }, - "streamlake/KAT-Coder-Pro-V2.5": { - "cache_read_input_token_cost": 1.5e-07, - "input_cost_per_token": 7.4e-07, - "litellm_provider": "streamlake", - "max_output_tokens": 80000, - "max_tokens": 80000, - "mode": "chat", - "output_cost_per_token": 2.96e-06, - "supports_function_calling": true, "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" }, "streamlake/Kimi-K2-Instruct-0905": { @@ -62309,64 +62260,210 @@ "mode": "chat", "output_cost_per_token": 2.286e-06, "supports_function_calling": true, + "supports_reasoning": false, "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" }, - "streamlake/Qwen3-235B-A22B-Instruct-2507": { - "cache_read_input_token_cost": 7e-08, - "input_cost_per_token": 3.5e-07, + "streamlake/deepseek-r1": { + "cache_read_input_token_cost": 2.29e-07, + "input_cost_per_token": 5.71e-07, "litellm_provider": "streamlake", - "max_input_tokens": 126000, + "max_input_tokens": 112000, + "max_output_tokens": 16000, + "max_tokens": 16000, + "mode": "chat", + "output_cost_per_token": 2.286e-06, + "supports_function_calling": true, + "supports_reasoning": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/deepseek-v3.1": { + "cache_read_input_token_cost": 2.29e-07, + "input_cost_per_token": 5.71e-07, + "litellm_provider": "streamlake", + "max_input_tokens": 96000, "max_output_tokens": 32000, "max_tokens": 32000, "mode": "chat", - "output_cost_per_token": 1.4e-06, + "output_cost_per_token": 1.714e-06, "supports_function_calling": true, + "supports_reasoning": true, "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" }, - "streamlake/Qwen3-30B-A3B": { - "cache_read_input_token_cost": 4.3e-08, - "input_cost_per_token": 1.07e-07, + "streamlake/deepseek-v4-flash": { + "cache_read_input_token_cost": 2.8e-08, + "input_cost_per_token": 1.4e-07, "litellm_provider": "streamlake", - "max_input_tokens": 30000, - "max_output_tokens": 8000, - "max_tokens": 8000, + "max_input_tokens": 1048576, + "max_output_tokens": 384000, + "max_tokens": 384000, "mode": "chat", - "output_cost_per_token": 1.071e-06, + "output_cost_per_token": 2.8e-07, "supports_function_calling": true, + "supports_reasoning": true, "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" }, - "streamlake/Qwen3-30B-A3B-Instruct-2507": { - "cache_read_input_token_cost": 2.2e-08, - "input_cost_per_token": 1.07e-07, + "streamlake/deepseek-v4-pro": { + "cache_read_input_token_cost": 1.45e-07, + "input_cost_per_token": 1.74e-06, "litellm_provider": "streamlake", - "max_input_tokens": 126000, - "max_output_tokens": 32000, - "max_tokens": 32000, + "max_input_tokens": 1048576, + "max_output_tokens": 384000, + "max_tokens": 384000, "mode": "chat", - "output_cost_per_token": 4.29e-07, + "output_cost_per_token": 3.48e-06, "supports_function_calling": true, + "supports_reasoning": true, "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" }, - "streamlake/Qwen3-Coder-480B-A35B-Instruct-FP8": { - "cache_read_input_token_cost": 1.8e-07, - "input_cost_per_token": 9e-07, - "litellm_provider": "streamlake", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 4.5e-06, - "supports_function_calling": true, - "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" - }, - "streamlake/Qwen3-Coder-Next": { - "cache_read_input_token_cost": 6e-08, + "streamlake/deepseek-v4.1-flash-1017": { + "cache_read_input_token_cost": 6e-09, "input_cost_per_token": 3e-07, "litellm_provider": "streamlake", + "max_input_tokens": 1048576, + "max_output_tokens": 384000, + "max_tokens": 384000, + "mode": "chat", + "output_cost_per_token": 1.2e-06, + "supports_function_calling": true, + "supports_reasoning": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/deepseek-v4.1-flash-260910": { + "cache_read_input_token_cost": 6e-09, + "input_cost_per_token": 3e-07, + "litellm_provider": "streamlake", + "max_input_tokens": 1048576, + "max_output_tokens": 384000, + "max_tokens": 384000, + "mode": "chat", + "output_cost_per_token": 1.2e-06, + "supports_function_calling": true, + "supports_reasoning": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/glm-5": { + "cache_read_input_token_cost": 2e-07, + "input_cost_per_token": 1e-06, + "litellm_provider": "streamlake", + "max_input_tokens": 200000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 3.2e-06, + "supports_function_calling": true, + "supports_reasoning": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/glm-5.1": { + "cache_read_input_token_cost": 2.6e-07, + "input_cost_per_token": 1.4e-06, + "litellm_provider": "streamlake", + "max_input_tokens": 200000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 4.4e-06, + "supports_function_calling": true, + "supports_reasoning": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/glm-5.2": { + "cache_read_input_token_cost": 2.6e-07, + "input_cost_per_token": 1.4e-06, + "litellm_provider": "streamlake", + "max_input_tokens": 1048576, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 4.4e-06, + "supports_function_calling": true, + "supports_reasoning": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/kimi-k2.6": { + "cache_read_input_token_cost": 1.6e-07, + "input_cost_per_token": 9.5e-07, + "litellm_provider": "streamlake", + "max_input_tokens": 256000, + "max_output_tokens": 256000, + "max_tokens": 256000, + "mode": "chat", + "output_cost_per_token": 4e-06, + "supports_function_calling": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/kimi-k2.7-code": { + "cache_read_input_token_cost": 1.9e-07, + "input_cost_per_token": 9.5e-07, + "litellm_provider": "streamlake", + "max_input_tokens": 256000, + "max_output_tokens": 32000, + "max_tokens": 32000, + "mode": "chat", + "output_cost_per_token": 4e-06, + "supports_function_calling": true, + "supports_reasoning": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/minimax-m2.5": { + "cache_creation_input_token_cost": 3.75e-07, + "cache_read_input_token_cost": 3e-08, + "input_cost_per_token": 3e-07, + "litellm_provider": "streamlake", + "max_input_tokens": 200000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 1.2e-06, + "supports_function_calling": true, + "supports_reasoning": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/qwen3.5-397b-a17b": { + "cache_read_input_token_cost": 1.2e-07, + "input_cost_per_token": 6e-07, + "litellm_provider": "streamlake", + "max_input_tokens": 252000, "max_output_tokens": 64000, "max_tokens": 64000, "mode": "chat", - "output_cost_per_token": 1.5e-06, + "output_cost_per_token": 3.6e-06, + "supports_function_calling": true, + "supports_reasoning": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/qwen3.6-27b": { + "input_cost_per_token": 6e-07, + "litellm_provider": "streamlake", + "max_input_tokens": 254000, + "max_output_tokens": 64000, + "max_tokens": 64000, + "mode": "chat", + "output_cost_per_token": 3.6e-06, + "supports_function_calling": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/qwen3.6-35b-a3b": { + "input_cost_per_token": 3.75e-07, + "litellm_provider": "streamlake", + "max_input_tokens": 254000, + "max_output_tokens": 64000, + "max_tokens": 64000, + "mode": "chat", + "output_cost_per_token": 2.25e-06, + "supports_function_calling": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/qwen3.8-2.4t-a95b": { + "input_cost_per_token": 2e-06, + "litellm_provider": "streamlake", + "max_input_tokens": 991000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 6e-06, + "supports_function_calling": true, + "supports_reasoning": true, "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" }, "deepseek-v4-flash": { diff --git a/model_prices_and_context_window.json b/model_prices_and_context_window.json index f44e7512e50..3761172b079 100644 --- a/model_prices_and_context_window.json +++ b/model_prices_and_context_window.json @@ -62179,21 +62179,21 @@ "cache_read_input_token_cost": 1.4e-08, "input_cost_per_token": 4.4e-07, "litellm_provider": "streamlake", + "max_input_tokens": 1048576, "max_output_tokens": 384000, "max_tokens": 384000, "mode": "chat", "output_cost_per_token": 1.32e-06, - "rpm": 60, "supports_function_calling": true, "supports_reasoning": true, "supports_response_schema": true, - "tpm": 600000, "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" }, "streamlake/DeepSeek-V4-Pro-0813": { "cache_read_input_token_cost": 4.4e-08, "input_cost_per_token": 1.32e-06, "litellm_provider": "streamlake", + "max_input_tokens": 1048576, "max_output_tokens": 384000, "max_tokens": 384000, "mode": "chat", @@ -62202,8 +62202,6 @@ "supports_prompt_caching": true, "supports_reasoning": true, "supports_response_schema": true, - "rpm": 30, - "tpm": 600000, "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" }, "streamlake/DeepSeek-V3": { @@ -62216,6 +62214,7 @@ "mode": "chat", "output_cost_per_token": 1.143e-06, "supports_function_calling": true, + "supports_reasoning": false, "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" }, "streamlake/GLM-5.3": { @@ -62230,10 +62229,8 @@ "supports_function_calling": true, "supports_reasoning": true, "supports_response_schema": true, - "rpm": 10, "supports_assistant_prefill": true, "supports_prompt_caching": true, - "tpm": 300000, "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" }, "streamlake/GLM-5.3-Flash": { @@ -62249,54 +62246,8 @@ "supports_reasoning": true, "supports_response_schema": true, "supports_vision": true, - "rpm": 30, "supports_assistant_prefill": true, "supports_prompt_caching": true, - "tpm": 300000, - "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" - }, - "streamlake/KAT-Coder-Air-V2.5": { - "cache_read_input_token_cost": 3e-08, - "input_cost_per_token": 1.5e-07, - "litellm_provider": "streamlake", - "max_output_tokens": 80000, - "max_tokens": 80000, - "mode": "chat", - "output_cost_per_token": 6e-07, - "supports_function_calling": true, - "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" - }, - "streamlake/KAT-Coder-Pro-V1": { - "cache_read_input_token_cost": 6e-08, - "input_cost_per_token": 3e-07, - "litellm_provider": "streamlake", - "max_input_tokens": 256000, - "max_output_tokens": 32000, - "max_tokens": 32000, - "mode": "chat", - "output_cost_per_token": 1.2e-06, - "supports_function_calling": true, - "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" - }, - "streamlake/KAT-Coder-Pro-V2": { - "cache_read_input_token_cost": 6e-08, - "input_cost_per_token": 3e-07, - "litellm_provider": "streamlake", - "max_output_tokens": 80000, - "max_tokens": 80000, - "mode": "chat", - "output_cost_per_token": 1.2e-06, - "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" - }, - "streamlake/KAT-Coder-Pro-V2.5": { - "cache_read_input_token_cost": 1.5e-07, - "input_cost_per_token": 7.4e-07, - "litellm_provider": "streamlake", - "max_output_tokens": 80000, - "max_tokens": 80000, - "mode": "chat", - "output_cost_per_token": 2.96e-06, - "supports_function_calling": true, "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" }, "streamlake/Kimi-K2-Instruct-0905": { @@ -62309,64 +62260,210 @@ "mode": "chat", "output_cost_per_token": 2.286e-06, "supports_function_calling": true, + "supports_reasoning": false, "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" }, - "streamlake/Qwen3-235B-A22B-Instruct-2507": { - "cache_read_input_token_cost": 7e-08, - "input_cost_per_token": 3.5e-07, + "streamlake/deepseek-r1": { + "cache_read_input_token_cost": 2.29e-07, + "input_cost_per_token": 5.71e-07, "litellm_provider": "streamlake", - "max_input_tokens": 126000, + "max_input_tokens": 112000, + "max_output_tokens": 16000, + "max_tokens": 16000, + "mode": "chat", + "output_cost_per_token": 2.286e-06, + "supports_function_calling": true, + "supports_reasoning": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/deepseek-v3.1": { + "cache_read_input_token_cost": 2.29e-07, + "input_cost_per_token": 5.71e-07, + "litellm_provider": "streamlake", + "max_input_tokens": 96000, "max_output_tokens": 32000, "max_tokens": 32000, "mode": "chat", - "output_cost_per_token": 1.4e-06, + "output_cost_per_token": 1.714e-06, "supports_function_calling": true, + "supports_reasoning": true, "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" }, - "streamlake/Qwen3-30B-A3B": { - "cache_read_input_token_cost": 4.3e-08, - "input_cost_per_token": 1.07e-07, + "streamlake/deepseek-v4-flash": { + "cache_read_input_token_cost": 2.8e-08, + "input_cost_per_token": 1.4e-07, "litellm_provider": "streamlake", - "max_input_tokens": 30000, - "max_output_tokens": 8000, - "max_tokens": 8000, + "max_input_tokens": 1048576, + "max_output_tokens": 384000, + "max_tokens": 384000, "mode": "chat", - "output_cost_per_token": 1.071e-06, + "output_cost_per_token": 2.8e-07, "supports_function_calling": true, + "supports_reasoning": true, "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" }, - "streamlake/Qwen3-30B-A3B-Instruct-2507": { - "cache_read_input_token_cost": 2.2e-08, - "input_cost_per_token": 1.07e-07, + "streamlake/deepseek-v4-pro": { + "cache_read_input_token_cost": 1.45e-07, + "input_cost_per_token": 1.74e-06, "litellm_provider": "streamlake", - "max_input_tokens": 126000, - "max_output_tokens": 32000, - "max_tokens": 32000, + "max_input_tokens": 1048576, + "max_output_tokens": 384000, + "max_tokens": 384000, "mode": "chat", - "output_cost_per_token": 4.29e-07, + "output_cost_per_token": 3.48e-06, "supports_function_calling": true, + "supports_reasoning": true, "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" }, - "streamlake/Qwen3-Coder-480B-A35B-Instruct-FP8": { - "cache_read_input_token_cost": 1.8e-07, - "input_cost_per_token": 9e-07, - "litellm_provider": "streamlake", - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "max_tokens": 64000, - "mode": "chat", - "output_cost_per_token": 4.5e-06, - "supports_function_calling": true, - "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" - }, - "streamlake/Qwen3-Coder-Next": { - "cache_read_input_token_cost": 6e-08, + "streamlake/deepseek-v4.1-flash-1017": { + "cache_read_input_token_cost": 6e-09, "input_cost_per_token": 3e-07, "litellm_provider": "streamlake", + "max_input_tokens": 1048576, + "max_output_tokens": 384000, + "max_tokens": 384000, + "mode": "chat", + "output_cost_per_token": 1.2e-06, + "supports_function_calling": true, + "supports_reasoning": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/deepseek-v4.1-flash-260910": { + "cache_read_input_token_cost": 6e-09, + "input_cost_per_token": 3e-07, + "litellm_provider": "streamlake", + "max_input_tokens": 1048576, + "max_output_tokens": 384000, + "max_tokens": 384000, + "mode": "chat", + "output_cost_per_token": 1.2e-06, + "supports_function_calling": true, + "supports_reasoning": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/glm-5": { + "cache_read_input_token_cost": 2e-07, + "input_cost_per_token": 1e-06, + "litellm_provider": "streamlake", + "max_input_tokens": 200000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 3.2e-06, + "supports_function_calling": true, + "supports_reasoning": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/glm-5.1": { + "cache_read_input_token_cost": 2.6e-07, + "input_cost_per_token": 1.4e-06, + "litellm_provider": "streamlake", + "max_input_tokens": 200000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 4.4e-06, + "supports_function_calling": true, + "supports_reasoning": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/glm-5.2": { + "cache_read_input_token_cost": 2.6e-07, + "input_cost_per_token": 1.4e-06, + "litellm_provider": "streamlake", + "max_input_tokens": 1048576, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 4.4e-06, + "supports_function_calling": true, + "supports_reasoning": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/kimi-k2.6": { + "cache_read_input_token_cost": 1.6e-07, + "input_cost_per_token": 9.5e-07, + "litellm_provider": "streamlake", + "max_input_tokens": 256000, + "max_output_tokens": 256000, + "max_tokens": 256000, + "mode": "chat", + "output_cost_per_token": 4e-06, + "supports_function_calling": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/kimi-k2.7-code": { + "cache_read_input_token_cost": 1.9e-07, + "input_cost_per_token": 9.5e-07, + "litellm_provider": "streamlake", + "max_input_tokens": 256000, + "max_output_tokens": 32000, + "max_tokens": 32000, + "mode": "chat", + "output_cost_per_token": 4e-06, + "supports_function_calling": true, + "supports_reasoning": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/minimax-m2.5": { + "cache_creation_input_token_cost": 3.75e-07, + "cache_read_input_token_cost": 3e-08, + "input_cost_per_token": 3e-07, + "litellm_provider": "streamlake", + "max_input_tokens": 200000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 1.2e-06, + "supports_function_calling": true, + "supports_reasoning": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/qwen3.5-397b-a17b": { + "cache_read_input_token_cost": 1.2e-07, + "input_cost_per_token": 6e-07, + "litellm_provider": "streamlake", + "max_input_tokens": 252000, "max_output_tokens": 64000, "max_tokens": 64000, "mode": "chat", - "output_cost_per_token": 1.5e-06, + "output_cost_per_token": 3.6e-06, + "supports_function_calling": true, + "supports_reasoning": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/qwen3.6-27b": { + "input_cost_per_token": 6e-07, + "litellm_provider": "streamlake", + "max_input_tokens": 254000, + "max_output_tokens": 64000, + "max_tokens": 64000, + "mode": "chat", + "output_cost_per_token": 3.6e-06, + "supports_function_calling": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/qwen3.6-35b-a3b": { + "input_cost_per_token": 3.75e-07, + "litellm_provider": "streamlake", + "max_input_tokens": 254000, + "max_output_tokens": 64000, + "max_tokens": 64000, + "mode": "chat", + "output_cost_per_token": 2.25e-06, + "supports_function_calling": true, + "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" + }, + "streamlake/qwen3.8-2.4t-a95b": { + "input_cost_per_token": 2e-06, + "litellm_provider": "streamlake", + "max_input_tokens": 991000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "chat", + "output_cost_per_token": 6e-06, + "supports_function_calling": true, + "supports_reasoning": true, "source": "https://www.streamlake.ai/document/DOC/mgrnm4xm362hvp5wyce" }, "deepseek-v4-flash": { diff --git a/provider_endpoints_support.json b/provider_endpoints_support.json index 48296d27247..eb51e76c4ff 100644 --- a/provider_endpoints_support.json +++ b/provider_endpoints_support.json @@ -2552,8 +2552,8 @@ "url": "https://docs.litellm.ai/docs/providers/openai_compatible", "endpoints": { "chat_completions": true, - "messages": false, - "responses": false, + "messages": true, + "responses": true, "embeddings": false, "image_generations": false, "audio_transcriptions": false, diff --git a/tests/unit/llms/openai_like/test_streamlake_provider.py b/tests/unit/llms/openai_like/test_streamlake_provider.py index e56495b9883..23969cf6849 100644 --- a/tests/unit/llms/openai_like/test_streamlake_provider.py +++ b/tests/unit/llms/openai_like/test_streamlake_provider.py @@ -220,6 +220,46 @@ async def test_streamlake_completion_uses_openai_compatible_http( assert response.usage.total_tokens == 5 +@pytest.mark.usefixtures("local_model_cost_map") +def test_endpoint_id_call_forwards_tools_and_reasoning_effort_to_streamlake(monkeypatch: pytest.MonkeyPatch) -> None: + tools: Final = [ + { + "type": "function", + "function": { + "name": "get_weather", + "parameters": {"type": "object", "properties": {"city": {"type": "string"}}}, + }, + } + ] + response_body: Final[dict[str, object]] = { + "id": "chatcmpl-streamlake-tools", + "object": "chat.completion", + "created": 1710000000, + "model": "glm-5.3", + "choices": [{"index": 0, "message": {"role": "assistant", "content": "ok"}, "finish_reason": "stop"}], + "usage": {"prompt_tokens": 3, "completion_tokens": 1, "total_tokens": 4}, + } + monkeypatch.setattr(litellm, "disable_aiohttp_transport", True) + litellm.in_memory_llm_clients_cache.flush_cache() + with respx.mock(assert_all_called=True) as respx_mock: + route: Final = respx_mock.post(STREAMLAKE_CHAT_URL).mock( + return_value=httpx.Response(200, json=response_body) + ) + litellm.completion( + model="streamlake/ep-test-endpoint", + messages=[{"role": "user", "content": "weather in Paris?"}], + api_key="sk-streamlake-test", + tools=tools, + tool_choice="auto", + reasoning_effort="low", + ) + + sent: Final = json.loads(route.calls.last.request.content) + assert sent["tools"] == tools + assert sent["tool_choice"] == "auto" + assert sent["reasoning_effort"] == "low" + + def _streamlake_keys(cost_map: dict[str, object]) -> tuple[str, ...]: return tuple(key for key in cost_map if key.startswith("streamlake/")) @@ -253,7 +293,7 @@ def test_endpoint_id_call_is_priced_from_the_lowercase_model_streamlake_returns( @pytest.mark.usefixtures("local_model_cost_map") -def test_tool_params_follow_the_function_calling_flag_of_the_lowercase_model_row() -> None: +def test_named_model_params_follow_the_row_and_fall_back_to_the_provider_default() -> None: provider: Final = JSONProviderRegistry.get("streamlake") assert provider is not None config: Final = create_config_class(provider)() @@ -261,6 +301,15 @@ def test_tool_params_follow_the_function_calling_flag_of_the_lowercase_model_row assert keys for key in keys: + row = litellm.model_cost[key] supported = config.get_supported_openai_params(model=key.split("/", 1)[1].lower()) - supports_function_calling = litellm.get_model_info(model=key).get("supports_function_calling") is True - assert ("tools" in supported) is supports_function_calling, key + assert ("tools" in supported) is (row.get("supports_function_calling") is not False), key + assert ("reasoning_effort" in supported) is (row.get("supports_reasoning") is not False), key + + +@pytest.mark.usefixtures("local_model_cost_map") +def test_streamlake_wildcard_expands_to_every_streamlake_row() -> None: + from litellm.proxy.auth.model_checks import get_known_models_from_wildcard + + expanded: Final = get_known_models_from_wildcard("streamlake/*") + assert set(expanded) == set(_streamlake_keys(litellm.model_cost))