mirror of
https://github.com/basicmachines-co/basic-memory
synced 2026-06-21 13:47:35 +00:00
fix(core): handle dict LiteLLM embedding items
Signed-off-by: phernandez <paul@basicmachines.co>
This commit is contained in:
@@ -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)):
|
||||
|
||||
@@ -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."""
|
||||
|
||||
Reference in New Issue
Block a user