Commit graph

29199 commits

Author SHA1 Message Date
Cesar Garcia
999ffabc39
fix(gemini): use JSON instead of form-data for image edit requests (#18012)
* fix(gemini): use JSON instead of form-data for image edit requests

Gemini's image edit API expects JSON body, not multipart/form-data.
The handler was sending form-encoded data which caused 400 errors:
"Invalid JSON payload received. Unexpected token."

Changes:
- Add use_multipart_form_data() method to BaseImageEditConfig (default True)
- Modify image_edit_handler to use json= when use_multipart_form_data() is False
- Override use_multipart_form_data() in GeminiImageEditConfig to return False

* test(gemini): add test for use_multipart_form_data
2025-12-16 07:41:02 +05:30
Shivam Rawat
c754794bc3
[fix] add qwen3-embedding-8b input per token price (#18018)
* added embedding input token price

* added embedding input token price
2025-12-16 07:38:21 +05:30
Krrish Dholakia
b0a9c85a52 fix: fix ruff linting errors 2025-12-16 07:38:07 +05:30
yuneng-jiang
9907a0d93c Tests 2025-12-15 18:04:27 -08:00
Cesar Garcia
4fdbbdfe6d
fix(anthropic): correct claude-3-7-sonnet max_tokens to 64K default (#17979)
Claude 3.7 Sonnet's default max_output_tokens is 64000, not 128000.
The 128K output limit requires the beta header 'output-128k-2025-02-19'.

This fixes the integration test failure where requests with max_tokens=128000
were being rejected by the Anthropic API.

Fixes test_multiturn_tool_calls in test_anthropic_responses_api.py
2025-12-16 07:27:40 +05:30
Ishaan Jaff
a4fb0df028
[Feat] New provider - Agent Gateway, add pydantic ai agents (#18013)
* init A2AProviderConfigManager

* move file

* move file

* add pydnatic ai folder

* init providers

* test_pydantic_ai_non_streaming

* fix import

* INIT pydantic

* use_a2a_form_fields

* TestPydanticAITransformation
2025-12-15 17:40:58 -08:00
yuneng-jiang
14feda694b Email budget alerts working 2025-12-15 16:51:25 -08:00
yuneng-jiang
7a18c81cf4 bump: version 0.1.25 → 0.1.26 2025-12-15 16:00:37 -08:00
YutaSaito
867ac17677
Merge pull request #18010 from BerriAI/litellm_fix_mcp_deepcopy_error
fix: mcp deepcopy error
2025-12-16 07:37:25 +09:00
Cesar Garcia
df19a747a2
feat(custom_llm): add image_edit and aimage_edit support (#17999)
* feat(custom_llm): add image_edit and aimage_edit support

Add support for image_edit and aimage_edit methods in CustomLLM class,
allowing users to implement custom image editing providers.

Changes:
- Add image_edit() and aimage_edit() methods to CustomLLM base class
- Add custom provider detection in litellm.image_edit() function
- Add tests for sync and async image_edit with custom handlers

* docs: add image_edit to CustomLLM documentation

- Add /v1/images/edits to supported routes
- Add Image Edit section with example
- Update Custom Handler Spec with image_edit methods
2025-12-15 14:16:36 -08:00
Yuta Saito
defea8b887 fix: mcp deepcopy error 2025-12-16 07:02:07 +09:00
Ishaan Jaff
b57b1beb61
[Feat] Guardrails - litellm content filter (#18007)
* add br ssn

* better description
2025-12-15 13:26:20 -08:00
vasilisazayka
d7e0044118
[docs] update SAP docs (#17974)
* docs(sap): update documentation

* docs(sap): update documentation

* docs(sap): update documentation

* docs(sap): update documentation
2025-12-15 13:25:26 -08:00
Alexsander Hamir
764a31f624
refactor: lazy load get_modified_max_tokens (#18002) 2025-12-15 12:33:01 -08:00
Alexsander Hamir
8f647dd25b
[Refactor] litellm/init.py: lazy load caches (#18001) 2025-12-15 12:13:51 -08:00
Alexsander Hamir
0629dcfdd5
[Refactor] litellm/init.py: lazy load http handlers (#17997) 2025-12-15 11:50:22 -08:00
Alexsander Hamir
93b1da7911
[Refactor] lazy imports: Use per-attribute lazy imports and extract shared constants (#17994) 2025-12-15 10:38:54 -08:00
yuneng-jiang
d8663efeab Revert "Base commit"
This reverts commit 1186cc6966.
2025-12-15 10:25:22 -08:00
yuneng-jiang
1186cc6966 Base commit 2025-12-15 10:24:47 -08:00
Sameer Kankute
9cd587f173 Fix test_basic_ocr_with_url[True] 2025-12-15 22:58:54 +05:30
Sameer Kankute
5a642c788a
Merge pull request #17980 from BerriAI/litellm_add_provider_specific_tools_in_responses
Add provider specific tools support in responses api
2025-12-15 22:53:08 +05:30
Sameer Kankute
174ab1fc66
Merge pull request #17967 from BerriAI/litellm_fireworks_ai_reasoning_param_support
Add support for reasoning param for fireworks AI models
2025-12-15 22:04:04 +05:30
Sameer Kankute
8a6f6385ed
Merge pull request #17966 from BerriAI/litellm_fix_gpt-1_image_cost_1
fix: cost calculation of gpt-image 1 model
2025-12-15 22:03:58 +05:30
Sameer Kankute
9866355315 Fix: Remove unused import 2025-12-15 21:59:46 +05:30
Jack Temple
9d420265ef fix: update UI path handling for non-root Docker and restructure HTML files 2025-12-15 10:09:05 -06:00
AlexsanderHamir
41b67b577b Fix: simplify PR template 2025-12-15 07:44:47 -08:00
Alexsander Hamir
debf3598f8
Add: CI/CD rules to default PR template for LiteLLM team. (#17985) 2025-12-15 07:41:17 -08:00
Alexsander Hamir
d743cde041
add: litellm team PR template (#17983) 2025-12-15 07:21:33 -08:00
Sameer Kankute
57bf6f74e8
Merge pull request #17844 from SamAcctX/patch-2
OpenRouter GPT 5.2, Mistral 3, and Devstral 2
2025-12-15 18:32:50 +05:30
Sameer Kankute
ccf3f7c5be Fix: use simpler implementation 2025-12-15 18:29:16 +05:30
Krish Dholakia
26fd6d5362
Guardrails API - support LLM tool call response checks on /chat/completions, /v1/responses, /v1/messages on regular + streaming calls (#17619)
* fix(unified_guardrails.py): send all chunks on completion of final stream

* feat(generic_guardrail_api.py): handle tool call response on streaming LLM responses

* fix(anthropic/chat/guardrail_translation): initial commit adding anthropic tool response streaming guardrails

enables guardrail checks on tool response from llm's to work via `/v1/messages`

* feat(anthropic/): working guardrail checks on tool response from LLMs

ensures guardrail checks on anthropic /v1/messages works as expected

* feat(responses/guardrail_translation): support tool call response guardrails on streaming for /v1/responses

ensures complete coverage of tool call responses

* refactor(openai.py): refactor to use consistent pydantic model for responses api tool response on streaming

enables non-openai model tool call response to work correctly with guardrail checks on /v1/responses

* test: update tests

* fix: fix linting error

* fix: fix failing tests

* fix: fix import errors

* fix(openai/chat/guardrail_transformation): fix final chunk returned on streaming
2025-12-15 18:19:52 +05:30
Sameer Kankute
54b09cab28 Add test for handling provider specific tools 2025-12-15 17:41:38 +05:30
Sameer Kankute
d3998d00dd Fix mypy errors 2025-12-15 17:41:05 +05:30
SamAcctX
6879924965
chore: GPT 5.2, Devstral 2, Mistral 3 backup json 2025-12-15 05:54:29 -06:00
Sameer Kankute
aa6d0056d3 Add anthropic programatic tool calling support for responses api 2025-12-15 17:22:57 +05:30
Sameer Kankute
f0928e1423 Add anthropic tool caching support 2025-12-15 17:21:24 +05:30
Sameer Kankute
64b12e0225 Add anthropic specific tools 2025-12-15 17:20:03 +05:30
Sameer Kankute
a108c95d1a Add gemini computer use tool support for responses api 2025-12-15 16:45:42 +05:30
Sameer Kankute
f59c2c1177 Add gemini tools support for responses api 2025-12-15 16:45:23 +05:30
Krish Dholakia
a3f5a94784
fix(openai/responses/guardrail_translation): fix basemodel import (#17977)
* fix(openai/responses/guardrail_translation): fix basemodel import

ensures /v1/responses output is correctly processed by guardrail handler

* fix: fix linting error

* fix: fix linting errors
2025-12-15 16:13:45 +05:30
Cesar Garcia
6ddc7875ea
Fix: add OpenAI-compatible API for Anthropic with modify_params=True (#17106)
* docs: add OpenAI-compatible API limitations for Anthropic thinking

Document the fundamental incompatibility between Anthropic extended
thinking and OpenAI-compatible API clients. Explains:

- Why thinking_blocks must be resent (stateless vs stateful APIs)
- OpenAI vs Anthropic architecture differences
- Solutions for client developers

* Update docs

* fix: auto-drop thinking param when thinking_blocks missing

When modify_params=True, LiteLLM now automatically drops the 'thinking'
param if the last assistant message with tool_calls is missing
thinking_blocks. This prevents the Anthropic error:
"Expected thinking or redacted_thinking, but found tool_use"

This workaround addresses the OpenAI-Anthropic API incompatibility where
OpenAI-compatible clients don't preserve thinking_blocks.
2025-12-15 13:35:46 +05:30
Sameer Kankute
f27ce1ae88 Fix: lint error 2025-12-15 12:02:23 +05:30
Sameer Kankute
d619199cee Fix: lint error 2025-12-15 12:00:04 +05:30
Sameer Kankute
858879919c Add support for ocr for vertex ai deepseek model 2025-12-15 11:45:04 +05:30
Sameer Kankute
57e75a3082 Add support for reasoning param 2025-12-15 09:12:35 +05:30
Sameer Kankute
aa578f78b9 fix: default quality cost calculation of gpt-image 1 model 2025-12-15 08:16:25 +05:30
Sameer Kankute
4f82147746 fix: cost calculation of gpt-image 1 model 2025-12-15 08:16:23 +05:30
YutaSaito
bba229f922
Merge pull request #17963 from BerriAI/litellm_feat_rest-mcp-list-tools-auth-header
add MCP auth header propagation
2025-12-15 08:20:50 +09:00
Yuta Saito
73e00c1382 fix: add MCP auth header propagation 2025-12-15 07:45:35 +09:00
Ishaan Jaffer
87ba4fabd7 docs fix 2025-12-14 14:20:47 -08:00