From cbeba59c8e91a0e7b380349d76d9e8b81db8b552 Mon Sep 17 00:00:00 2001 From: wassel alazhar Date: Wed, 4 Nov 2026 00:40:46 +0100 Subject: [PATCH] feat(providers): drop Umans AI's retired ids, price coder and flash at DeepSeek V4.1 Flash Umans AI retired umans-deepseek-v4-flash-0731 and umans-glm-5.3-flash on 2026-11-01 (successor: umans-deepseek-v4.1-flash), so their cost map entries go. umans-coder and umans-flash now serve DeepSeek V4.1 Flash 1017 and bill at its rates ($0.15 / $0.60 / $0.028 per 1M input / output / cache read). umans-coder takes its live card's output cap (393215, the API rejects 393216 and above); umans-flash keeps its 262144 window and 32768 output. The Add Model default and the tests move to umans-ai/umans-deepseek-v4.1-flash. --- ...odel_prices_and_context_window_backup.json | 59 ++----------------- .../provider_create_fields.json | 2 +- model_prices_and_context_window.json | 59 ++----------------- .../openai_like/test_umans_ai_provider.py | 40 ++++++------- 4 files changed, 33 insertions(+), 127 deletions(-) diff --git a/litellm/model_prices_and_context_window_backup.json b/litellm/model_prices_and_context_window_backup.json index bc29db7d8f6..607738e6ddb 100644 --- a/litellm/model_prices_and_context_window_backup.json +++ b/litellm/model_prices_and_context_window_backup.json @@ -83134,29 +83134,6 @@ "supports_function_calling": true, "source": "https://tokenfactory.nebius.com/api/public/models_info" }, - "umans-ai/umans-deepseek-v4-flash-0731": { - "cache_read_input_token_cost": 2.8e-08, - "input_cost_per_token": 1.4e-07, - "litellm_provider": "umans-ai", - "max_input_tokens": 1048576, - "max_output_tokens": 393215, - "max_tokens": 393215, - "mode": "chat", - "output_cost_per_token": 2.8e-07, - "source": "https://app.umans.ai/pricing", - "supported_modalities": [ - "text" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false - }, "umans-ai/umans-deepseek-v4.1-flash": { "cache_read_input_token_cost": 2.8e-08, "input_cost_per_token": 1.5e-07, @@ -83204,30 +83181,6 @@ "supports_tool_choice": true, "supports_vision": false }, - "umans-ai/umans-glm-5.3-flash": { - "cache_read_input_token_cost": 3e-08, - "input_cost_per_token": 1.5e-07, - "litellm_provider": "umans-ai", - "max_input_tokens": 1048576, - "max_output_tokens": 131071, - "max_tokens": 131071, - "mode": "chat", - "output_cost_per_token": 5e-07, - "source": "https://app.umans.ai/pricing", - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, "umans-ai/umans-kimi-k3": { "cache_read_input_token_cost": 3e-07, "input_cost_per_token": 3e-06, @@ -83253,14 +83206,14 @@ "supports_vision": true }, "umans-ai/umans-flash": { - "cache_read_input_token_cost": 5e-08, + "cache_read_input_token_cost": 2.8e-08, "input_cost_per_token": 1.5e-07, "litellm_provider": "umans-ai", "max_input_tokens": 262144, "max_output_tokens": 32768, "max_tokens": 32768, "mode": "chat", - "output_cost_per_token": 1e-06, + "output_cost_per_token": 6e-07, "source": "https://app.umans.ai/pricing", "supported_modalities": [ "text", @@ -83277,14 +83230,14 @@ "supports_vision": true }, "umans-ai/umans-coder": { - "cache_read_input_token_cost": 3e-08, + "cache_read_input_token_cost": 2.8e-08, "input_cost_per_token": 1.5e-07, "litellm_provider": "umans-ai", "max_input_tokens": 1048576, - "max_output_tokens": 131071, - "max_tokens": 131071, + "max_output_tokens": 393215, + "max_tokens": 393215, "mode": "chat", - "output_cost_per_token": 5e-07, + "output_cost_per_token": 6e-07, "source": "https://app.umans.ai/pricing", "supported_modalities": [ "text", diff --git a/litellm/proxy/public_endpoints/provider_create_fields.json b/litellm/proxy/public_endpoints/provider_create_fields.json index 6c99bf41311..eeaf6deb606 100644 --- a/litellm/proxy/public_endpoints/provider_create_fields.json +++ b/litellm/proxy/public_endpoints/provider_create_fields.json @@ -3973,7 +3973,7 @@ "default_value": null } ], - "default_model_placeholder": "umans-ai/umans-deepseek-v4-flash-0731" + "default_model_placeholder": "umans-ai/umans-deepseek-v4.1-flash" }, { "provider": "V0", diff --git a/model_prices_and_context_window.json b/model_prices_and_context_window.json index bc29db7d8f6..607738e6ddb 100644 --- a/model_prices_and_context_window.json +++ b/model_prices_and_context_window.json @@ -83134,29 +83134,6 @@ "supports_function_calling": true, "source": "https://tokenfactory.nebius.com/api/public/models_info" }, - "umans-ai/umans-deepseek-v4-flash-0731": { - "cache_read_input_token_cost": 2.8e-08, - "input_cost_per_token": 1.4e-07, - "litellm_provider": "umans-ai", - "max_input_tokens": 1048576, - "max_output_tokens": 393215, - "max_tokens": 393215, - "mode": "chat", - "output_cost_per_token": 2.8e-07, - "source": "https://app.umans.ai/pricing", - "supported_modalities": [ - "text" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false - }, "umans-ai/umans-deepseek-v4.1-flash": { "cache_read_input_token_cost": 2.8e-08, "input_cost_per_token": 1.5e-07, @@ -83204,30 +83181,6 @@ "supports_tool_choice": true, "supports_vision": false }, - "umans-ai/umans-glm-5.3-flash": { - "cache_read_input_token_cost": 3e-08, - "input_cost_per_token": 1.5e-07, - "litellm_provider": "umans-ai", - "max_input_tokens": 1048576, - "max_output_tokens": 131071, - "max_tokens": 131071, - "mode": "chat", - "output_cost_per_token": 5e-07, - "source": "https://app.umans.ai/pricing", - "supported_modalities": [ - "text", - "image" - ], - "supported_output_modalities": [ - "text" - ], - "supports_function_calling": true, - "supports_prompt_caching": true, - "supports_reasoning": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true - }, "umans-ai/umans-kimi-k3": { "cache_read_input_token_cost": 3e-07, "input_cost_per_token": 3e-06, @@ -83253,14 +83206,14 @@ "supports_vision": true }, "umans-ai/umans-flash": { - "cache_read_input_token_cost": 5e-08, + "cache_read_input_token_cost": 2.8e-08, "input_cost_per_token": 1.5e-07, "litellm_provider": "umans-ai", "max_input_tokens": 262144, "max_output_tokens": 32768, "max_tokens": 32768, "mode": "chat", - "output_cost_per_token": 1e-06, + "output_cost_per_token": 6e-07, "source": "https://app.umans.ai/pricing", "supported_modalities": [ "text", @@ -83277,14 +83230,14 @@ "supports_vision": true }, "umans-ai/umans-coder": { - "cache_read_input_token_cost": 3e-08, + "cache_read_input_token_cost": 2.8e-08, "input_cost_per_token": 1.5e-07, "litellm_provider": "umans-ai", "max_input_tokens": 1048576, - "max_output_tokens": 131071, - "max_tokens": 131071, + "max_output_tokens": 393215, + "max_tokens": 393215, "mode": "chat", - "output_cost_per_token": 5e-07, + "output_cost_per_token": 6e-07, "source": "https://app.umans.ai/pricing", "supported_modalities": [ "text", diff --git a/tests/unit/llms/openai_like/test_umans_ai_provider.py b/tests/unit/llms/openai_like/test_umans_ai_provider.py index 8a233e778a0..0f5b86a09c0 100644 --- a/tests/unit/llms/openai_like/test_umans_ai_provider.py +++ b/tests/unit/llms/openai_like/test_umans_ai_provider.py @@ -17,13 +17,13 @@ def test_umans_ai_provider_resolution(monkeypatch: pytest.MonkeyPatch): monkeypatch.setenv("UMANS_AI_API_KEY", "umans-test-key") model, provider, api_key, api_base = get_llm_provider( - model="umans-ai/umans-deepseek-v4-flash-0731", + model="umans-ai/umans-deepseek-v4.1-flash", custom_llm_provider=None, api_base=None, api_key=None, ) - assert model == "umans-deepseek-v4-flash-0731" + assert model == "umans-deepseek-v4.1-flash" assert provider == "umans-ai" assert api_key == "umans-test-key" assert api_base == "https://api.code.umans.ai/v1" @@ -35,7 +35,7 @@ def test_umans_ai_provider_keeps_explicit_credentials(monkeypatch: pytest.Monkey monkeypatch.setenv("UMANS_AI_API_KEY", "umans-env-key") _, provider, api_key, api_base = get_llm_provider( - model="umans-ai/umans-deepseek-v4-flash-0731", + model="umans-ai/umans-deepseek-v4.1-flash", custom_llm_provider=None, api_base="https://umans.internal.example/v1", api_key="umans-explicit-key", @@ -53,7 +53,7 @@ def test_umans_ai_is_available_in_add_model_form(): assert umans["provider"] == "UMANS_AI" assert umans["provider_display_name"] == "Umans AI" - assert umans["default_model_placeholder"] == "umans-ai/umans-deepseek-v4-flash-0731" + assert umans["default_model_placeholder"] == "umans-ai/umans-deepseek-v4.1-flash" assert {field["key"]: field["required"] for field in umans["credential_fields"]} == { "api_base": False, "api_key": True, @@ -88,7 +88,7 @@ def test_umans_ai_chat_completion_request(): "id": "chatcmpl_umans", "object": "chat.completion", "created": 1_789_550_000, - "model": "umans-deepseek-v4-flash-0731", + "model": "umans-deepseek-v4.1-flash", "choices": [ { "index": 0, @@ -100,7 +100,7 @@ def test_umans_ai_chat_completion_request(): }, ) response: Final = litellm.completion( - model="umans-ai/umans-deepseek-v4-flash-0731", + model="umans-ai/umans-deepseek-v4.1-flash", messages=[{"role": "user", "content": "Say hello"}], api_key="umans-test-key", ) @@ -110,7 +110,7 @@ def test_umans_ai_chat_completion_request(): assert route.call_count == 1 assert str(request.url) == "https://api.code.umans.ai/v1/chat/completions" assert request.headers["authorization"] == "Bearer umans-test-key" - assert body["model"] == "umans-deepseek-v4-flash-0731" + assert body["model"] == "umans-deepseek-v4.1-flash" assert body["messages"] == [{"role": "user", "content": "Say hello"}] assert response.choices[0].message.content == "Hello from Umans AI" @@ -123,7 +123,7 @@ def test_umans_ai_responses_request(): "id": "resp_umans", "object": "response", "created_at": 1_789_550_000, - "model": "umans-deepseek-v4-flash-0731", + "model": "umans-deepseek-v4.1-flash", "status": "completed", "output": [ { @@ -138,7 +138,7 @@ def test_umans_ai_responses_request(): }, ) response: Final = litellm.responses( - model="umans-ai/umans-deepseek-v4-flash-0731", + model="umans-ai/umans-deepseek-v4.1-flash", input="Say hello", api_key="umans-test-key", ) @@ -148,7 +148,7 @@ def test_umans_ai_responses_request(): assert route.call_count == 1 assert str(request.url) == "https://api.code.umans.ai/v1/responses" assert request.headers["authorization"] == "Bearer umans-test-key" - assert body["model"] == "umans-deepseek-v4-flash-0731" + assert body["model"] == "umans-deepseek-v4.1-flash" assert body["input"] == "Say hello" assert response.output[0].content[0].text == "Hello from Umans AI" @@ -164,7 +164,7 @@ async def test_umans_ai_anthropic_messages_request(monkeypatch: pytest.MonkeyPat "id": "msg_umans", "type": "message", "role": "assistant", - "model": "umans-deepseek-v4-flash-0731", + "model": "umans-deepseek-v4.1-flash", "content": [{"type": "text", "text": "Hello from Umans AI"}], "stop_reason": "end_turn", "stop_sequence": None, @@ -172,7 +172,7 @@ async def test_umans_ai_anthropic_messages_request(monkeypatch: pytest.MonkeyPat }, ) response: Final = await litellm.anthropic.messages.acreate( - model="umans-ai/umans-deepseek-v4-flash-0731", + model="umans-ai/umans-deepseek-v4.1-flash", messages=[{"role": "user", "content": "Say hello"}], max_tokens=32, api_key="umans-test-key", @@ -184,7 +184,7 @@ async def test_umans_ai_anthropic_messages_request(monkeypatch: pytest.MonkeyPat assert str(request.url) == "https://api.code.umans.ai/v1/messages" assert request.headers["authorization"] == "Bearer umans-test-key" assert request.headers["anthropic-version"] == "2023-06-01" - assert body["model"] == "umans-deepseek-v4-flash-0731" + assert body["model"] == "umans-deepseek-v4.1-flash" assert body["messages"] == [{"role": "user", "content": "Say hello"}] assert response["content"][0]["text"] == "Hello from Umans AI" @@ -219,7 +219,7 @@ def test_umans_ai_default_model_is_priced(): def test_umans_ai_usage_is_billed_at_cost_map_rates(): - model: Final = "umans-ai/umans-deepseek-v4-flash-0731" + model: Final = "umans-ai/umans-deepseek-v4.1-flash" entry: Final = _umans_cost_entries()[model] input_cost: Final = entry["input_cost_per_token"] output_cost: Final = entry["output_cost_per_token"] @@ -249,7 +249,7 @@ def test_umans_ai_chat_completion_streaming_request(): "id": "chatcmpl_umans", "object": "chat.completion.chunk", "created": 1_789_550_000, - "model": "umans-deepseek-v4-flash-0731", + "model": "umans-deepseek-v4.1-flash", } stream_body: Final = _sse( { @@ -265,7 +265,7 @@ def test_umans_ai_chat_completion_streaming_request(): ) chunks: Final = list( litellm.completion( - model="umans-ai/umans-deepseek-v4-flash-0731", + model="umans-ai/umans-deepseek-v4.1-flash", messages=[{"role": "user", "content": "Say hello"}], api_key="umans-test-key", stream=True, @@ -284,7 +284,7 @@ def test_umans_ai_responses_streaming_request(): "id": "resp_umans", "object": "response", "created_at": 1_789_550_000, - "model": "umans-deepseek-v4-flash-0731", + "model": "umans-deepseek-v4.1-flash", "status": "in_progress", "output": [], } @@ -322,7 +322,7 @@ def test_umans_ai_responses_streaming_request(): ) events: Final = list( litellm.responses( - model="umans-ai/umans-deepseek-v4-flash-0731", + model="umans-ai/umans-deepseek-v4.1-flash", input="Say hello", api_key="umans-test-key", stream=True, @@ -350,7 +350,7 @@ async def test_umans_ai_anthropic_messages_streaming_request(monkeypatch: pytest "id": "msg_umans", "type": "message", "role": "assistant", - "model": "umans-deepseek-v4-flash-0731", + "model": "umans-deepseek-v4.1-flash", "content": [], "stop_reason": None, "stop_sequence": None, @@ -372,7 +372,7 @@ async def test_umans_ai_anthropic_messages_streaming_request(monkeypatch: pytest 200, content=stream_body, headers={"content-type": "text/event-stream"} ) stream: Final = await litellm.anthropic.messages.acreate( - model="umans-ai/umans-deepseek-v4-flash-0731", + model="umans-ai/umans-deepseek-v4.1-flash", messages=[{"role": "user", "content": "Say hello"}], max_tokens=32, api_key="umans-test-key",