fix(stackit): remove embedding support

This commit is contained in:
Syeda Haya Fatima 2026-10-20 12:54:48 +02:00
parent a401392d57
commit 9e3aedfca4
6 changed files with 5 additions and 80 deletions

View file

@ -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) | ✅ | ✅ | ✅ | | | ✅ | ✅ | ✅ | ✅ | |

View file

@ -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",

View file

@ -2232,7 +2232,7 @@
"chat_completions": true,
"messages": true,
"responses": true,
"embeddings": true,
"embeddings": false,
"image_generations": false,
"audio_transcriptions": false,
"audio_speech": false,

View file

@ -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",

View file

@ -2520,7 +2520,7 @@
"chat_completions": true,
"messages": true,
"responses": true,
"embeddings": true,
"embeddings": false,
"image_generations": false,
"audio_transcriptions": false,
"audio_speech": false,

View file

@ -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)