fix(litellm): convert message content to strings for providers requiring plain text format #582
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.
Description
Fix message formatting issues when using
LiteLLMModel
with providers that require plain string content instead of content block arrays. These providers (OpenRouter, Ollama, Together AI, etc.) reject requests with validation errors likemessages.1.content.0.text.text: Input should be a valid string
.Changes:
src/strands/models/litellm.py
format_request_tool_message
– converts tool response content from arrays to plain stringsformat_request_messages
– converts assistant messages with tool_calls to use string/None contentNo changes to base classes; only overrides in
LiteLLMModel
to handle provider-specific requirements.Related Issues
N/A - Identified the issue and raised the PR
Documentation PR
N/A — Existing LiteLLM examples continue to work. The fix is transparent to users.
Type of Change
Testing
Verified the fix resolves the validation errors:
Also confirmed:
All unit tests pass (787 passed)
LiteLLM integration tests pass (Bedrock compatibility maintained)
Manually tested with OpenRouter: Claude 3 Haiku, Claude 3.5 Sonnet, GPT-4o Mini, Llama 3.3 70B, Nova Lite
No warnings or regressions in existing functionality
I ran
hatch run prepare
Checklist
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.