#29756 [Bug]: anthropic_messages: Inconsistent part-key normalization in gen_ai.input.messages OTel span attribute
## What happened?
When proxying requests to `/v1/messages` (Anthropic Messages API), the OTel span attributes on the `litellm_request` span have two serialization issues.
### 1. Input message parts use `text` key instead of `content` for multimodal content arrays
When the Anthropic API request sends `content` as an array of content blocks: ```json {"role": "user", "content": [{"type": "text", "text": "hello"}]} ```
LiteLLM normalizes the message-level `content` array to `parts`, but does **not** rename the inner `text` key to `content`: ```json {"role": "user", "parts": [{"type": "text", "text": "hello"}]} ```
When `content` is a plain string, LiteLLM correctly wraps it as: ```json {"role": "user", "parts": [{"type": "text", "content": "hello"}]} ```
The inconsistency also exists **within the same span** — `gen_ai.output.messages` correctly uses `content`: ```json {"role": "assistant", "parts": [{"type": "text", "content": "Hi! How can I help?"}], "finish_reason": "stop"} ```
### 2. `gen_ai.system_instructions` has empty content strings
PR #26670 (merged via staging #27256) fixed the **reading** side — LiteLLM now reads the `system` kwarg from Anthropic requests. However, t…