fix(core): handle dict LiteLLM embedding items

Signed-off-by: phernandez <paul@basicmachines.co>
This commit is contained in:
phernandez
2026-06-06 12:50:13 -05:00
parent 750c7c9920
commit bfb63724d4
2 changed files with 25 additions and 2 deletions
@@ -155,12 +155,17 @@ class LiteLLMEmbeddingProvider(EmbeddingProvider):
vectors_by_index: dict[int, list[float]] = {}
for item in response.data:
response_index = int(item.index)
if isinstance(item, dict):
response_index = int(item["index"])
embedding = item["embedding"]
else:
response_index = int(item.index)
embedding = item.embedding
if response_index in vectors_by_index:
raise RuntimeError(
"LiteLLM embedding response returned duplicate vector indexes."
)
vectors_by_index[response_index] = [float(v) for v in item.embedding]
vectors_by_index[response_index] = [float(v) for v in embedding]
ordered_vectors: list[list[float]] = []
for index in range(len(batch)):
+18
View File
@@ -444,6 +444,24 @@ async def test_litellm_provider_zero_vector_does_not_raise(monkeypatch):
assert result == [[0.0, 0.0, 0.0]]
@pytest.mark.asyncio
async def test_litellm_provider_accepts_dict_response_items(monkeypatch):
"""LiteLLM providers may return embedding data as dict items."""
async def _aembedding(**kwargs):
data = [{"index": i, "embedding": [1.0, 0.0, 0.0]} for i in range(len(kwargs["input"]))]
return SimpleNamespace(data=data)
module = type(sys)("litellm")
setattr(module, "aembedding", _aembedding)
monkeypatch.setitem(sys.modules, "litellm", module)
provider = LiteLLMEmbeddingProvider(dimensions=3)
result = await provider.embed_documents(["first", "second"])
assert result == [[1.0, 0.0, 0.0], [1.0, 0.0, 0.0]]
@pytest.mark.asyncio
async def test_litellm_provider_duplicate_index_raises_error(monkeypatch):
"""A backend returning duplicate indexes is malformed and must fail fast."""