From e3d160f158ac33348699f4196e09d19401bbcc41 Mon Sep 17 00:00:00 2001 From: Utsab Dahal <250059@softwarica.edu.np> Date: Sun, 12 Apr 2026 08:24:19 +0545 Subject: [PATCH] fix(embedding): omit null encoding_format for openai requests (#25395) --- litellm/main.py | 3 -- .../test_openai_embeddings_encoding_format.py | 34 +++++++++++++++++++ 2 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 tests/test_litellm/llms/openai/embeddings/test_openai_embeddings_encoding_format.py diff --git a/litellm/main.py b/litellm/main.py index ddd37b47536..cf360855d11 100644 --- a/litellm/main.py +++ b/litellm/main.py @@ -4913,9 +4913,6 @@ def embedding( # noqa: PLR0915 if encoding_format is not None: optional_params["encoding_format"] = encoding_format - else: - # Omiting causes openai sdk to add default value of "float" - optional_params["encoding_format"] = None api_version = None diff --git a/tests/test_litellm/llms/openai/embeddings/test_openai_embeddings_encoding_format.py b/tests/test_litellm/llms/openai/embeddings/test_openai_embeddings_encoding_format.py new file mode 100644 index 00000000000..617037865c0 --- /dev/null +++ b/tests/test_litellm/llms/openai/embeddings/test_openai_embeddings_encoding_format.py @@ -0,0 +1,34 @@ +from unittest.mock import patch + +import litellm + + +@patch("litellm.main.openai_chat_completions.embedding", return_value={"ok": True}) +def test_openai_embedding_does_not_send_encoding_format_when_unset(mock_embedding): + """Regression test: do not send encoding_format=null to OpenAI-compatible APIs.""" + litellm.embedding( + model="text-embedding-3-small", + input=["hello"], + api_base="https://example.com/v1", + api_key="test-key", + custom_llm_provider="openai", + ) + + optional_params = mock_embedding.call_args.kwargs["optional_params"] + assert "encoding_format" not in optional_params + + +@patch("litellm.main.openai_chat_completions.embedding", return_value={"ok": True}) +def test_openai_embedding_preserves_explicit_encoding_format(mock_embedding): + """Explicit encoding_format should still be forwarded.""" + litellm.embedding( + model="text-embedding-3-small", + input=["hello"], + api_base="https://example.com/v1", + api_key="test-key", + custom_llm_provider="openai", + encoding_format="float", + ) + + optional_params = mock_embedding.call_args.kwargs["optional_params"] + assert optional_params["encoding_format"] == "float"