fix: auto-normalize array of strings in message content to openai multi-modal spec

This commit is contained in:
lkapadiya-DO 2026-05-15 12:49:48 -07:00
parent 50df072d95
commit 317557c0f4
2 changed files with 25 additions and 0 deletions

View file

@ -7941,6 +7941,16 @@ def validate_and_fix_openai_messages(messages: List):
if message.get("tool_calls"):
message["tool_calls"] = jsonify_tools(tools=message["tool_calls"])
content = message.get("content")
if isinstance(content, list):
normalized_content = []
for item in content:
if isinstance(item, str):
normalized_content.append({"type": "text", "text": item})
else:
normalized_content.append(item)
message["content"] = normalized_content
convert_msg_to_dict = cast(AllMessageValues, convert_to_dict(message))
cleaned_message = cleanup_none_field_in_message(message=convert_msg_to_dict)
new_messages.append(cleaned_message)

View file

@ -4107,3 +4107,18 @@ class TestValidateAndFixThinkingParam:
validate_and_fix_thinking_param(thinking=thinking)
assert "budgetTokens" in thinking
assert "budget_tokens" not in thinking
def test_normalize_array_of_strings_in_content():
from litellm.utils import validate_and_fix_openai_messages
messages = [
{
"role": "user",
"content": ["what is the capital of France?"],
}
]
result = validate_and_fix_openai_messages(messages=messages)
assert result[0]["content"] == [
{"type": "text", "text": "what is the capital of France?"},
]