BerriAI/litellm · error · ValueError
Elements inside a nested input list must be strings, got {ty
Error message
Elements inside a nested input list must be strings, got {type(sub)} What it means
Validation while flattening embedding input lists: a nested list (which requests one combined multi-part embedding) contains a non-string element; combined embedding parts must be strings (text or file/data references).
Source
Thrown at litellm/llms/vertex_ai/gemini_embeddings/batch_embed_content_transformation.py:243
Examples:
input=["text", "image"] → 2 separate embeddings
input=[["text", "image"]] → 1 combined embedding
input=[["text", "image"], "x"] → 2 embeddings (1 combined + 1 separate)
"""
gemini_model_name: Final = f"models/{model}"
gemini_params: Final = _filter_embed_params(optional_params)
input_list: Final = [input] if isinstance(input, str) else input
requests: Final[list[EmbedContentRequest]] = []
for element in input_list:
if isinstance(element, list):
if not element:
raise ValueError("Nested input list must not be empty")
for sub in element:
if not isinstance(sub, str):
raise ValueError(f"Elements inside a nested input list must be strings, got {type(sub)}")
parts = [_build_part_for_input(sub, resolved_files=resolved_files) for sub in element]
else:
parts = [_build_part_for_input(element, resolved_files=resolved_files)]
request = EmbedContentRequest(
model=gemini_model_name,
content=ContentType(parts=parts),
**gemini_params,
)
requests.append(request)
return VertexAIBatchEmbeddingsRequestBody(requests=requests)
def transform_openai_input_gemini_embed_content(
input: GeminiEmbeddingInput,
model: str,
optional_params: dict,
resolved_files: dict[str, dict[str, str]] | None = None,View on GitHub (pinned to 77b7c6c40c)
Solutions
- Ensure every element inside the nested input list is a string; convert numbers or other objects with str() before passing them.
- If you meant to pass images or dicts, pass them at the top level rather than nested inside a list of strings.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at litellm/llms/vertex_ai/gemini_embeddings/batch_embed_content_transformation.py:243 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of BerriAI/litellm@77b7c6c40c (2026-08-18).
Data as JSON: /api/errors/24fee4a595e3fa2e.
Report an issue: GitHub.