#33967 [Bug]: custom_openai handler does not forward prompt_tokens_details to client response
## Summary
When using a custom OpenAI-compatible provider (via `custom_openai` handler) that returns `prompt_tokens_details.cached_tokens` in the response, LiteLLM does not forward this field to the client. The `usage` object in the response only contains `completion_tokens`, `prompt_tokens`, and `total_tokens` — `prompt_tokens_details` is completely missing.
## The Bug
1. The upstream provider returns `prompt_tokens_details: { cached_tokens: 1088 }` on cache hits 2. LiteLLM's response to the client only contains top-level token fields 3. `prompt_tokens_details` is not forwarded, even though the provider returns it
This breaks: - Cache hit detection in clients - Cost tracking accuracy (cache vs. non-cache pricing) - The fixes in #19681 and #27191 which rely on `prompt_tokens_details.cached_tokens` being present
## Evidence
**Direct API call (without LiteLLM) — Request 2 (cache hit):** ```json { "usage": { "completion_tokens": 50, "prompt_tokens": 1095, "total_tokens": 1145, "prompt_tokens_details": { "cached_tokens": 1088 } } } ```
**Same request through LiteLLM (v1.93.0) — Request 2:** ```json { "usage": { "completion_tokens": 50, "pr…