fix(utils): normalize list content strings to OpenAI text parts#7
Open
lkapadiya-DO wants to merge 2 commits into
Open
fix(utils): normalize list content strings to OpenAI text parts#7lkapadiya-DO wants to merge 2 commits into
lkapadiya-DO wants to merge 2 commits into
Conversation
[Infra] Promote internal staging to main
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Relevant issues
Fixes an observed issue where sending an array of strings in the content block (e.g. ["what is the capital of France?"]) causes an internal AttributeError: 'str' object has no attribute 'get'. This previously bubbled up as a 500 Internal Server Error, confusingly attaching the extracted llm_provider to the crash response.
Also list content can include Pydantic BaseModel parts (not only strings/dicts), and invalid items (null, integers) should fail fast instead of passing through to downstream .get() calls.
Linear ticket
Pre-Submission checklist
Please complete all items before asking a LiteLLM maintainer to review your PR
tests/test_litellm/directory, Adding at least 1 test is a hard requirement - see detailsmake test-unit@greptileaiand received a Confidence Score of at least 4/5 before requesting a maintainer reviewDelays in PR merge?
If you're seeing a delay in your PR being merged, ping the LiteLLM Team on Slack (#pr-review).
CI (LiteLLM team)
Branch creation CI run
Link:
CI run for the last commit
Link:
Merge / cherry-pick CI run
Links:
Screenshots / Proof of Fix
Local manual verification
From the repo root, run:
Expected output:
Before:
Sending an array of strings (e.g. "content": ["what is the capital of France?"]) resulted in an internal crash that returned a 500 error containing internal proxy metadata:
After:
The array of strings is normalized into the OpenAI multimodal dict format before downstream processing:
"content": [{"type": "text", "text": "what is the capital of France?"}](Tests passing successfully locally — pytest + manual script above)
Type
🐛 Bug Fix
Changes