litellm/tests/test_litellm/llms/bedrock
Mateo Wang 761ab19209
fix(bedrock): sanitize batch metadata to prevent Pydantic ValidationError (#28202)
* fix(bedrock): sanitize batch metadata to prevent Pydantic ValidationError

Proxy guardrail hooks (Model Armor, OpenAI Moderations) and internal
processing inject non-string values (dicts, floats) into the request
metadata. When the Bedrock batch handler passes this metadata directly
to LiteLLMBatch (which inherits OpenAI's Batch Pydantic model with
metadata: Dict[str, str]), Pydantic raises a ValidationError. This
causes the router retry loop to re-submit the same Bedrock job
multiple times before ultimately failing.

Add _get_openai_compatible_batch_metadata() that serializes non-string
values to JSON strings via safe_dumps, skips None values and internal
logging keys, ensuring the response object always validates.

* test(bedrock): add tests for batch metadata sanitization

Covers _get_openai_compatible_batch_metadata: string passthrough, dict/float
serialization, None/internal key exclusion, and LiteLLMBatch compatibility.

---------

Co-authored-by: Noah Nistler <60981020+noahnistler@users.noreply.github.com>
2026-05-18 18:00:18 -07:00
..
batches fix(bedrock): sanitize batch metadata to prevent Pydantic ValidationError (#28202) 2026-05-18 18:00:18 -07:00
chat refactor: remove unnecessary comments from #27074 2026-05-04 19:34:56 +00:00
count_tokens fix: encode upstream URL path identifiers 2026-04-29 22:02:39 -07:00
embed fix(bedrock/cohere): send embedding_types as JSON array, not string (#28172) 2026-05-18 12:16:20 -07:00
files harden cloud file compatibility path 2026-05-01 18:14:36 -07:00
image style: run black formatter on files from main merge 2026-04-17 13:02:59 -07:00
image_edit Litellm ishaan april1 try2 (#25110) 2026-04-03 14:57:44 -07:00
invoke_agent fix: cover provider path traversal variants 2026-04-29 22:29:09 -07:00
messages/invoke_transformations fix(bedrock/messages): preserve compact_20260112 context_management on /v1/messages (#27534) 2026-05-09 20:26:37 +00:00
passthrough style: run black formatter on files from main merge 2026-04-17 13:02:59 -07:00
realtime style: run black formatter on files from main merge 2026-04-17 13:02:59 -07:00
rerank style: run black formatter on files from main merge 2026-04-17 13:02:59 -07:00
vector_stores fix: encode upstream URL path identifiers 2026-04-29 22:02:39 -07:00
test_anthropic_beta_support.py fix(bedrock): allowlist Bedrock Invoke body fields and filter all anthropic-beta values 2026-04-21 11:26:15 -07:00
test_base_aws_llm.py refactor(BaseAWSLLM): implement shared IAM cache and static credentia… (#27125) 2026-05-05 16:47:47 -07:00
test_bedrock_common_utils.py Refactor Bedrock response stream shape handling (#27257) 2026-05-06 17:39:38 -07:00
test_bedrock_ssl_verify.py style: run black formatter on files from main merge 2026-04-17 13:02:59 -07:00
test_claude_platform_provider.py Add Bedrock Claude Platform route (#27678) 2026-05-11 15:50:54 -07:00
test_cross_region_inference_profile_mapping.py style: run black formatter on files from main merge 2026-04-17 13:02:59 -07:00
test_mantle.py fix(bedrock-mantle): use /anthropic/v1/messages path for Mantle endpo… (#27976) 2026-05-15 13:31:59 -07:00