From 9e3aedfca40bf2af2de5d979a81bde987f925657 Mon Sep 17 00:00:00 2001 From: Syeda Haya Fatima Date: Tue, 20 Oct 2026 12:54:48 +0200 Subject: [PATCH] fix(stackit): remove embedding support --- README.md | 2 +- ...odel_prices_and_context_window_backup.json | 20 ---------- .../provider_endpoints_support_backup.json | 2 +- model_prices_and_context_window.json | 20 ---------- provider_endpoints_support.json | 2 +- .../llms/openai_like/test_stackit_provider.py | 39 +------------------ 6 files changed, 5 insertions(+), 80 deletions(-) diff --git a/README.md b/README.md index 42f253724a0..905a4f7b302 100644 --- a/README.md +++ b/README.md @@ -411,7 +411,7 @@ Set `LITELLM_PROXY_API_BASE` and `LITELLM_PROXY_API_KEY` and every model call th | [Sambanova (`sambanova`)](https://docs.litellm.ai/docs/providers/sambanova) | ✅ | ✅ | ✅ | | | | | | | | | [ScaleDown (`scaledown`)](https://docs.litellm.ai/docs/providers/scaledown) | ✅ | | | | | | | | | | | [Snowflake (`snowflake`)](https://docs.litellm.ai/docs/providers/snowflake) | ✅ | ✅ | ✅ | | | | | | | | -| [STACKIT (`stackit`)](https://docs.litellm.ai/docs/providers/stackit) | ✅ | ✅ | ✅ | ✅ | | | | | | | +| [STACKIT (`stackit`)](https://docs.litellm.ai/docs/providers/stackit) | ✅ | ✅ | ✅ | | | | | | | | | [Strands Decider (`strands_decider`)](https://docs.litellm.ai/docs/providers) | | | | | | | | | | | | [Text Completion Codestral (`text-completion-codestral`)](https://docs.litellm.ai/docs/providers/codestral) | ✅ | ✅ | ✅ | | | | | | | | | [Text Completion OpenAI (`text-completion-openai`)](https://docs.litellm.ai/docs/providers/text_completion_openai) | ✅ | ✅ | ✅ | | | ✅ | ✅ | ✅ | ✅ | | diff --git a/litellm/model_prices_and_context_window_backup.json b/litellm/model_prices_and_context_window_backup.json index 7934ef7d3bd..7c2421e3bef 100644 --- a/litellm/model_prices_and_context_window_backup.json +++ b/litellm/model_prices_and_context_window_backup.json @@ -67537,26 +67537,6 @@ "supports_function_calling": true, "supports_reasoning": true }, - "stackit/intfloat/e5-mistral-7b-instruct": { - "input_cost_per_token": 2e-08, - "litellm_provider": "stackit", - "max_input_tokens": 4096, - "max_tokens": 4096, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_vector_size": 4096, - "source": "https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/basics/available-shared-models/" - }, - "stackit/Qwen/Qwen3-VL-Embedding-8B": { - "input_cost_per_token": 8e-08, - "litellm_provider": "stackit", - "max_input_tokens": 32000, - "max_tokens": 32000, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_vector_size": 4096, - "source": "https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/basics/available-shared-models/" - }, "azure_ai/kimi-k2.7-code": { "cache_read_input_token_cost": 1.9e-07, "deprecation_date": "2027-04-16", diff --git a/litellm/provider_endpoints_support_backup.json b/litellm/provider_endpoints_support_backup.json index 79a3c58bda2..2bc29f2d464 100644 --- a/litellm/provider_endpoints_support_backup.json +++ b/litellm/provider_endpoints_support_backup.json @@ -2232,7 +2232,7 @@ "chat_completions": true, "messages": true, "responses": true, - "embeddings": true, + "embeddings": false, "image_generations": false, "audio_transcriptions": false, "audio_speech": false, diff --git a/model_prices_and_context_window.json b/model_prices_and_context_window.json index 7934ef7d3bd..7c2421e3bef 100644 --- a/model_prices_and_context_window.json +++ b/model_prices_and_context_window.json @@ -67537,26 +67537,6 @@ "supports_function_calling": true, "supports_reasoning": true }, - "stackit/intfloat/e5-mistral-7b-instruct": { - "input_cost_per_token": 2e-08, - "litellm_provider": "stackit", - "max_input_tokens": 4096, - "max_tokens": 4096, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_vector_size": 4096, - "source": "https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/basics/available-shared-models/" - }, - "stackit/Qwen/Qwen3-VL-Embedding-8B": { - "input_cost_per_token": 8e-08, - "litellm_provider": "stackit", - "max_input_tokens": 32000, - "max_tokens": 32000, - "mode": "embedding", - "output_cost_per_token": 0.0, - "output_vector_size": 4096, - "source": "https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/basics/available-shared-models/" - }, "azure_ai/kimi-k2.7-code": { "cache_read_input_token_cost": 1.9e-07, "deprecation_date": "2027-04-16", diff --git a/provider_endpoints_support.json b/provider_endpoints_support.json index 2c39f56d27f..0de254bd157 100644 --- a/provider_endpoints_support.json +++ b/provider_endpoints_support.json @@ -2520,7 +2520,7 @@ "chat_completions": true, "messages": true, "responses": true, - "embeddings": true, + "embeddings": false, "image_generations": false, "audio_transcriptions": false, "audio_speech": false, diff --git a/tests/unit/llms/openai_like/test_stackit_provider.py b/tests/unit/llms/openai_like/test_stackit_provider.py index 27ecd7e84f6..516058585ba 100644 --- a/tests/unit/llms/openai_like/test_stackit_provider.py +++ b/tests/unit/llms/openai_like/test_stackit_provider.py @@ -26,13 +26,6 @@ _CHAT_COMPLETION: Final = { "usage": {"prompt_tokens": 4, "completion_tokens": 3, "total_tokens": 7}, } -_EMBEDDING: Final = { - "object": "list", - "data": [{"object": "embedding", "index": 0, "embedding": [0.1, 0.2, 0.3]}], - "model": "intfloat/e5-mistral-7b-instruct", - "usage": {"prompt_tokens": 3, "total_tokens": 3}, -} - def test_stackit_is_a_registered_provider(): assert litellm.LlmProviders.STACKIT.value == "stackit" @@ -134,7 +127,7 @@ def test_stackit_supported_endpoints(): "chat_completions": True, "messages": True, "responses": True, - "embeddings": True, + "embeddings": False, "image_generations": False, "audio_transcriptions": False, "audio_speech": False, @@ -159,7 +152,7 @@ def test_stackit_cost_map_entries(): stackit = {k: v for k, v in cost_map.items() if v.get("litellm_provider") == "stackit"} assert stackit, "no stackit entries in cost map" assert all(key.startswith("stackit/") for key in stackit) - assert {v["mode"] for v in stackit.values()} == {"chat", "embedding"} + assert {v["mode"] for v in stackit.values()} == {"chat"} # STACKIT price tiers (EUR per 1M tokens): standard 0.15/0.25, plus 0.45/0.65, premium 1.50/1.75 gpt_oss_20b = stackit["stackit/openai/gpt-oss-20b"] @@ -177,16 +170,6 @@ def test_stackit_cost_map_entries(): assert qwen_vl["output_cost_per_token"] == pytest.approx(1.75e-6) assert qwen_vl["supports_vision"] is True - e5 = stackit["stackit/intfloat/e5-mistral-7b-instruct"] - assert e5["input_cost_per_token"] == pytest.approx(0.02e-6) - assert e5["output_cost_per_token"] == 0.0 - assert e5["output_vector_size"] == 4096 - - qwen_embedding = stackit["stackit/Qwen/Qwen3-VL-Embedding-8B"] - assert qwen_embedding["input_cost_per_token"] == pytest.approx(0.08e-6) - assert qwen_embedding["max_input_tokens"] == 32000 - - def test_stackit_chat_completion_request(): with respx.mock() as upstream: route: Final = upstream.post(f"{_BASE_URL}/chat/completions").respond(200, json=_CHAT_COMPLETION) @@ -219,24 +202,6 @@ def test_stackit_chat_completion_cost_uses_cost_map(): assert response._hidden_params["response_cost"] == pytest.approx(4 * 0.45e-6 + 3 * 0.65e-6) -def test_stackit_embedding_request(): - with respx.mock() as upstream: - route: Final = upstream.post(f"{_BASE_URL}/embeddings").respond(200, json=_EMBEDDING) - response: Final = litellm.embedding( - model="stackit/intfloat/e5-mistral-7b-instruct", - input=["hello"], - api_key="stackit-test-key", - ) - - request: Final = route.calls.last.request - body: Final = json.loads(request.content) - assert route.call_count == 1 - assert request.headers["authorization"] == "Bearer stackit-test-key" - assert body["model"] == "intfloat/e5-mistral-7b-instruct" - assert body["input"] == ["hello"] - assert response.data[0]["embedding"] == [0.1, 0.2, 0.3] - - def test_stackit_responses_request_is_bridged_to_chat_completions(): with respx.mock() as upstream: route: Final = upstream.post(f"{_BASE_URL}/chat/completions").respond(200, json=_CHAT_COMPLETION)