Fixes#16810
## Problem
When using completion() with models that have mode: "responses" (like o3-pro,
gpt-5-codex), the response_format parameter with JSON schemas was being ignored
or incorrectly handled, causing:
- Large schemas (>512 chars) to fail with "metadata.schema_dict_json: string too long" error
- Structured outputs to be silently dropped
- Users' code to break unexpectedly
## Root Cause
The completion -> responses bridge in
litellm/completion_extras/litellm_responses_transformation/transformation.py
was missing the conversion of response_format (Chat Completion format) to
text.format (Responses API format).
The inverse bridge (responses -> completion) already had this conversion
implemented in commit 29f0ed223a, but the completion -> responses direction
was incomplete.
## Solution
Added _transform_response_format_to_text_format() method that converts:
- response_format with json_schema → text.format with json_schema
- response_format with json_object → text.format with json_object
- response_format with text → text.format with text
Updated transform_request() to detect and convert response_format parameter
before sending to litellm.responses().
## Changes
- Added _transform_response_format_to_text_format() method (lines 592-647)
- Modified transform_request() to handle response_format (lines 199-203)
- Added comprehensive tests to validate the conversion
## Testing
- 5 new unit tests covering all conversion scenarios
- Real API test with OpenAI confirming large schemas (>512 chars) work
- No more metadata.schema_dict_json errors
## Impact
Users can now use completion() with models that have mode: "responses" and:
- Use large JSON schemas without hitting metadata 512 char limit
- Get proper structured outputs
- Have their existing code continue working
* fix(spend-logs): trim logged response strings
- route spend-log responses through the existing string sanitizer so oversized base64/text fields are truncated before persistence
- add unit tests covering the truncation path and the feature flag
Note: embeddings-specific truncation (numeric vectors) is still pending and will be handled separately.
* remove unnecessary comment
* add: sanitization unit test for embeddings
* fix: simplify sanatization logic
I overcomplicated a simple change for lack of understanding, fixed.
* fix: Add support for GPT-5.1 reasoning.effort='none' parameter
- Override Reasoning type to include 'none' effort value
- Maintains compatibility with semantic-router (requires openai <2.0.0)
- GPT-5.1 defaults to reasoning.effort='none' as of OpenAI SDK 2.8.0
- Override can be removed once semantic-router supports OpenAI SDK 2.x
Fixes#16741
* feat: Update to OpenAI SDK 2.8+ and Python 3.9+
- Update minimum Python version from 3.8.1 to 3.9 (3.8 EOL Oct 2024)
- Update OpenAI SDK requirement from >=1.99.5 to >=2.8.0
- Update semantic-router to >=0.1.12 with Python >=3.9,<3.14 constraint
- Update resend to >=0.8.0 (allows 2.x versions)
- Revert custom Reasoning TypedDict - now using native type from OpenAI SDK 2.8+
OpenAI SDK 2.8.0 natively supports reasoning.effort='none' for GPT-5.1,
eliminating the need for our custom type override.
* chore: Update poetry.lock with OpenAI SDK 2.8.1 and dependencies
Cost tracking was failing for Responses API when using custom deployment names
with base_model configuration. The issue occurred because:
- Chat Completions API stores model_info in 'metadata'
- Responses API stores model_info in 'litellm_metadata'
- Cost calculator only checked 'metadata', missing Responses API costs
Changes:
- Updated _get_base_model_from_metadata() to check both metadata locations
- Added comprehensive unit tests covering all scenarios
- Maintains backward compatibility (metadata takes precedence)
Fixes#16772
* chore: remove development setup files from repository
Removes VERTEX_ENV_SETUP.md and setup_vertex_env.sh from the
repository as they are not referenced in documentation or tests.
These files were added in PR #15824 alongside the VertexAI Search
feature. The setup information is already well-documented in the
official docs at:
docs/my-website/docs/pass_through/vertex_ai_search_datastores.md
* docs: add poetry run python usage to CLAUDE.md and AGENTS.md
- Add gpt-5.1, gpt-5.1-codex, and gpt-5.1-codex-mini to OpenAI Chat Completion Models table
- Add gpt-5.1-codex and gpt-5.1-codex-mini to reasoning_effort supported models table
- Clarify that GPT-5-Codex models (gpt-5-codex, gpt-5.1-codex, gpt-5.1-codex-mini) do NOT support verbosity parameter
- Update verbosity section to exclude Codex variants from supported models list
Note: Model configurations already exist in model_prices_and_context_window.json