berriai-litellm-provider-info-sync[bot]
38b310b751
chore(prices): sync OpenRouter prices: 2 models
...
openrouter/deepseek/deepseek-v4-flash: input_cost_per_token, output_cost_per_token, cache_read_input_token_cost
openrouter/qwen/qwen-plus-2025-07-28: supports_prompt_caching
2026-09-19 19:00:52 +00:00
Joshua Valluru
df7e1fe69d
chore: reconcile concurrent SDK2 E2E updates
2026-09-19 12:00:02 -07:00
Joshua Valluru
09a2e5b6ec
test(e2e): adapt OAuth acceptance to merged SDK2
2026-09-19 11:59:29 -07:00
Devin AI
46c9d60d02
Merge remote-tracking branch 'origin/litellm_mcp_oauth_happy_path_e2e' into litellm_mcp_oauth_happy_path_e2e
2026-09-19 18:57:33 +00:00
Devin AI
788e158e67
Merge remote-tracking branch 'origin/main' into litellm_mcp_oauth_happy_path_e2e
...
Co-Authored-By: bot_apk <apk@cognition.ai>
# Conflicts:
# tests/e2e/mcp/oauth_chat_client.py
2026-09-19 18:57:23 +00:00
mateo-berri
47d06d9fdd
test(unified_google_tests): use the Vertex global endpoint and retry 429s with backoff
...
The google_generate_content_endpoint_testing job went red on main when us-central1 ran out of shared gemini-2.5-flash-lite capacity for a few hours. The suite's proxy config now sends the Vertex deployment to the global endpoint and retries rate limit errors 5 times with exponential backoff, and a regression test pins that the config rides out 3 consecutive 429s
2026-09-19 11:56:02 -07:00
mateo-berri
03a63db1fd
fix(batches): keep provider timeouts as failed rows and move batch rows behind a repository
2026-09-19 11:54:57 -07:00
Yuneng Jiang
e12cbb4e13
feat(ui): configure web search interception from the Admin UI
...
Web search interception could only be switched on by editing config.yaml
and restarting the proxy, so an admin had no way to turn it on, choose
which providers it covers, or pick which configured search tool runs the
searches without a redeploy.
Adds GET/PATCH /get|update/websearch_interception_settings backed by a
WebSearchInterceptionSettings model, and an Admin Settings panel that
reads and writes them. Config/database precedence comes from the existing
settings store, so a key the config file declares is still refused here.
The stored settings apply to a running proxy: the DB poll rebuilds the
WebSearchInterceptionLogger, removing the old instance before adding the
new one, because two instances with different params hash differently in
the callback dedup key and the first to short-circuit would win. A proxy
that activates interception the existing way, through
litellm_settings.callbacks with no stored params, is left untouched.
2026-09-19 11:54:57 -07:00
joshua-berri
eda1faba14
Merge pull request #41718 from BerriAI/litellm_mcp_dependency_gate_7737
...
refactor(mcp): upgrade SDK2 while preserving legacy gateway behavior
2026-09-19 18:53:19 +00:00
mateo-berri
1aca37e513
Merge remote-tracking branch 'origin/main' into litellm_vllm_batch_runner
...
# Conflicts:
# tests/test_litellm/proxy/openai_files_endpoint/test_files_common_utils.py
2026-09-19 11:51:54 -07:00
Tin Chi Lo
4d659135b6
fix(router): preserve unavailable Fuse presets
2026-09-19 11:48:40 -07:00
kerry
c958f9db7e
test: extend cost tracking integration harness
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-19 18:44:51 +00:00
kerry-berri
c3fa53be8d
Merge pull request #41993 from BerriAI/litellm_remove_auto_merge_price_sync
...
ci: remove auto-merge-price-sync workflow, the Devin sync automation merges price PRs
2026-09-19 11:44:36 -07:00
yujonglee
f081e447a4
Merge pull request #41992 from BerriAI/litellm_deepseek_ocr_defaults
...
fix(ocr): set DeepSeek OCR sampling defaults
2026-09-19 11:42:49 -07:00
kerry-berri
b89a6fba4c
Merge pull request #41833 from BerriAI/litellm-providers/price-sync-openrouter
...
chore(prices): sync OpenRouter prices: 172 models, 2 new
2026-09-19 11:42:34 -07:00
Yujong Lee
d67d9984f7
test: expect TQ009 in the shipped quality budget
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-19 18:38:37 +00:00
kerry
d268c8b58a
feat(azure_ai): add MAI-Image-2.5-Pro image generation pricing
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-19 18:34:09 +00:00
kerry
987af6c66c
ci: remove auto-merge-price-sync workflow, the Devin sync automation merges price PRs
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-19 18:33:06 +00:00
ryan-crabbe-berri
659cef0f57
Merge pull request #40729 from BerriAI/litellm_lit7572_top_keys_user_column
...
fix(ui): show user attribution in Top Virtual Keys usage tables
2026-09-19 11:32:35 -07:00
Yujong Lee
8c21a988b7
fix(ocr): set DeepSeek OCR sampling defaults
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-19 18:31:49 +00:00
berriai-litellm-provider-info-sync[bot]
a04ba30f7d
chore(prices): sync OpenRouter prices: 172 models, 2 new
...
openrouter/~anthropic/claude-fable-latest: supports_web_search
openrouter/~anthropic/claude-haiku-latest: supports_web_search
openrouter/~anthropic/claude-opus-latest: supports_web_search
openrouter/~anthropic/claude-sonnet-latest: supports_web_search
openrouter/~deepseek/deepseek-flash-latest: max_tokens, max_output_tokens, input_cost_per_token, output_cost_per_token, cache_read_input_token_cost
openrouter/~deepseek/deepseek-v4-flash-latest: max_tokens, max_output_tokens, input_cost_per_token, output_cost_per_token, cache_read_input_token_cost
openrouter/~google/gemini-flash-latest: supports_web_search
openrouter/~google/gemini-pro-latest: supports_web_search
openrouter/~moonshotai/kimi-latest: input_cost_per_token, output_cost_per_token, cache_read_input_token_cost
openrouter/~openai/gpt-astra-latest: supports_web_search
openrouter/~openai/gpt-luna-latest: supports_web_search
openrouter/~openai/gpt-mini-latest: supports_web_search
openrouter/~openai/gpt-sol-latest: supports_web_search
openrouter/~openai/gpt-terra-latest: supports_web_search
openrouter/~x-ai/grok-latest: supports_web_search
openrouter/~z-ai/glm-latest: max_tokens, max_output_tokens, input_cost_per_token, output_cost_per_token, cache_read_input_token_cost
openrouter/anthropic/claude-3-haiku: supports_web_search
openrouter/anthropic/claude-fable-5: supports_web_search
openrouter/anthropic/claude-fable-5:batch: supports_web_search
openrouter/anthropic/claude-fable-5.1: supports_web_search
openrouter/anthropic/claude-fable-5.1:batch: supports_web_search
openrouter/anthropic/claude-haiku-4.5: supports_web_search
openrouter/anthropic/claude-haiku-4.5:batch: supports_web_search
openrouter/anthropic/claude-opus-4: supports_web_search
openrouter/anthropic/claude-opus-4.1: supports_web_search
openrouter/anthropic/claude-opus-4.1:batch: supports_web_search
openrouter/anthropic/claude-opus-4.5: supports_web_search
openrouter/anthropic/claude-opus-4.5:batch: supports_web_search
openrouter/anthropic/claude-opus-4.6: supports_web_search
openrouter/anthropic/claude-opus-4.6:batch: supports_web_search
openrouter/anthropic/claude-opus-4.7: supports_web_search
openrouter/anthropic/claude-opus-4.7:batch: supports_web_search
openrouter/anthropic/claude-opus-4.8: supports_web_search
openrouter/anthropic/claude-opus-4.8:batch: supports_web_search
openrouter/anthropic/claude-opus-5: supports_web_search
openrouter/anthropic/claude-opus-5:batch: supports_web_search
openrouter/anthropic/claude-sonnet-4: supports_web_search
openrouter/anthropic/claude-sonnet-4.5: supports_web_search
openrouter/anthropic/claude-sonnet-4.5:batch: supports_web_search
openrouter/anthropic/claude-sonnet-4.6: supports_web_search
openrouter/anthropic/claude-sonnet-4.6:batch: supports_web_search
openrouter/anthropic/claude-sonnet-5: supports_web_search
openrouter/anthropic/claude-sonnet-5:batch: supports_web_search
openrouter/deepseek/deepseek-v4-flash: input_cost_per_token, output_cost_per_token, cache_read_input_token_cost
openrouter/deepseek/deepseek-v4-flash-0731: input_cost_per_token, output_cost_per_token, cache_read_input_token_cost
openrouter/deepseek/deepseek-v4-flash-vision-exp: max_tokens, max_output_tokens
openrouter/deepseek/deepseek-v4-pro: max_tokens, max_output_tokens, input_cost_per_token, output_cost_per_token, cache_read_input_token_cost
openrouter/deepseek/deepseek-v4.1-flash: off_peak_pricing, input_cost_per_token, output_cost_per_token, cache_read_input_token_cost
openrouter/google/gemini-2.5-flash: supports_web_search
openrouter/google/gemini-2.5-flash-image: supports_web_search
openrouter/google/gemini-2.5-flash-lite: supports_web_search
openrouter/google/gemini-2.5-flash-lite:batch: supports_web_search
openrouter/google/gemini-2.5-flash:batch: supports_web_search
openrouter/google/gemini-2.5-pro: supports_web_search
openrouter/google/gemini-2.5-pro-preview: supports_web_search
openrouter/google/gemini-2.5-pro:batch: supports_web_search
openrouter/google/gemini-3-flash-preview: supports_web_search
openrouter/google/gemini-3-flash-preview:batch: supports_web_search
openrouter/google/gemini-3-pro-image: supports_web_search
openrouter/google/gemini-3-pro-image-preview: supports_web_search
2026-09-19 18:31:02 +00:00
yucheng
364d897545
fix(otel v2): map Responses API output onto the Langfuse generation output
...
Responses API calls build the generation output only from response["choices"],
which Responses payloads do not carry, so Langfuse rendered a blank output.
Fold output[] into one assistant choice (output_text parts concatenated,
function_call and custom_tool_call items as tool_calls) and derive the finish
reason from status when choices are absent. Custom tool call input is now
redacted alongside function call arguments under turn_off_message_logging.
Carries the behavior of #41604 by @moshemorad (issue #41591 ) onto current
main with typed conversion and single-message output.
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-19 18:26:59 +00:00
kerry
85a6a8e206
test(e2e): cover fal Seedance video create, poll and download
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-19 18:22:58 +00:00
Yujong Lee
cc23e5781e
refactor(rust): drop a comment that repeats the reserve doc
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-19 18:22:06 +00:00
ryan-crabbe-berri
82fd632153
test(ui): share one chart bar lookup across Top Virtual Keys tests
...
The key_exists chart test added a second direct DOM lookup for the Recharts bars, which exposes no role or label, and pushed testing-library/no-node-access over its budget (709 > 707). Both chart tests now go through one helper
2026-09-19 11:22:01 -07:00
Yujong Lee
38fa8a7f55
fix(rust): leave the fork gate untouched when a late reservation is refused
...
reserve() stored fork_only_pid before noticing the runtime already ran under that pid, so a refused reservation still reserved the process: the next enter() cleared the runtime claim and children forked afterwards inherited a dead runtime and hung. Undo the reservation on the error path so the gate is exactly as it was.
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-19 18:21:32 +00:00
kerry-berri
fc5f6c4b50
Merge pull request #41964 from BerriAI/litellm_registry_audit_20260919
...
fix(model_prices): drop anthropic deprecation floors and correct azure gpt-4.1-nano retirement date
2026-09-19 11:18:32 -07:00
Yujong Lee
18a1491bd2
test(rust): pin child interpreters to the parent's litellm and lint for it
...
Children spawned as [sys.executable, -c, ...] put the working directory first on sys.path, so under 'make test-rust-extension' a source checkout shadows the installed wheel and the child imports a litellm with no compiled extension. A shared helper spawns them with -I and asserts the child resolved the same litellm.__file__ as the parent, and a new TQ009 rule flags un-isolated sys.executable spawns.
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-19 18:17:54 +00:00
yucheng-berri
2542ea0320
Merge pull request #41787 from BerriAI/litellm_llm_guard_proxy_call_types
...
fix(llmguard): accept proxy async call types
2026-09-19 11:17:21 -07:00
Moe Khalil
3b0d32ec6f
fix(proxy): reject throttled exhausted budgets in JEV previews
...
LiteLLM Rust / rust-lint (push) Has been cancelled
LiteLLM Rust / rust-test (push) Has been cancelled
LiteLLM Rust / rust-wheel (push) Has been cancelled
Terraform Modules / fmt, validate, test (aws) (push) Has been cancelled
Terraform Modules / fmt, validate, test (gcp) (push) Has been cancelled
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-19 18:11:50 +00:00
ryan-crabbe-berri
89bf870225
fix(ui): stop Top Virtual Keys from opening keys that are not in the database
...
/user/daily/activity now reports key_exists on each api key's metadata, true
only when the key is in the active key table that /key/info reads. Top Virtual
Keys renders the Key ID as plain text with an explanatory tooltip and ignores
chart bar clicks when key_exists is false, so deleted keys and CLI/SSO session
keys no longer dead-end on a "Key not found in database" toast
2026-09-19 11:08:21 -07:00
Yujong Lee
1bcd8d704f
test: run fork-guard contract subprocesses with python -I
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-19 18:08:19 +00:00
Devin AI
107ec2706b
style(ui): format Top Virtual Keys aggregation test
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-19 11:04:46 -07:00
Devin AI
88799f6f80
fix(ui): fall back to user id in Top Virtual Keys user column
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-19 11:04:46 -07:00
Devin AI
e93fe60512
fix(ui): hide Top Virtual Keys user column when rows carry no user
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-19 11:04:26 -07:00
Devin AI
3d805e5166
fix(ui): show user attribution in Top Virtual Keys usage tables
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-19 11:04:26 -07:00
yucheng-berri
2886b8ee27
Merge pull request #41939 from BerriAI/litellm_responses_missing_input_400
...
* fix(proxy): return 400 instead of 500 for /v1/responses without input
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* fix(proxy): validate input before starting background responses polling
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* fix(proxy): validate responses input after prompt template expansion
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
---------
Co-authored-by: yucheng <yucheng@berri.ai>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-19 11:02:30 -07:00
yucheng
c38dda2b2f
fix(llmguard): drop call types the proxy never routes through moderation
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-19 17:57:47 +00:00
tin-berri
77a4624f13
Merge pull request #41920 from BerriAI/litellm_claude_auto_cache_providers
...
fix(caching): scope automatic breakpoints to supported Claude transports
2026-09-19 12:54:30 -05:00
yucheng-berri
b6758159dd
Merge pull request #41982 from BerriAI/litellm_otel_v2_langfuse_embedding_output
...
* fix(otel v2): summarize embedding vectors as Langfuse observation output
The v2 LLM span built its output only from response choices, so /v1/embeddings
rendered a Langfuse generation with input, usage and cost but a blank output.
Embedding calls now carry an EmbeddingOutput(count, dimensions) summary that the
Langfuse mapper serializes as the observation output, and they are exported with
the embedding observation type instead of generation. Chat and Responses output
mapping is unchanged.
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* fix(otel v2): keep embedding observations typed as generation in Langfuse
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
---------
Co-authored-by: yucheng <yucheng@berri.ai>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-19 10:53:13 -07:00
Moe Khalil
52aa20d138
refactor(auto-router): freeze JEV logging input mappings
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-19 17:49:55 +00:00
Joshua Valluru
78e1103bb8
fix(ci): preserve shared runner setup time allowance
2026-09-19 10:46:38 -07:00
yucheng
537cdaf487
Revert "Merge pull request #41220 from BerriAI/litellm_post_call_guardrail_context"
...
This reverts commit e40b90bbfa , reversing
changes made to d8d5437f55 .
2026-09-19 17:45:15 +00:00
Yujong Lee
752647d146
wip
2026-09-19 10:41:41 -07:00
Joshua Valluru
8f3562ed9c
ci(mcp): consolidate integration tests into shared workflow
2026-09-19 10:41:36 -07:00
yucheng
c4d6c3046e
fix(otel v2): keep embedding observations typed as generation in Langfuse
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-19 17:38:20 +00:00
Yujong Lee
bb44fe5292
wip
2026-09-19 10:36:59 -07:00
Moe Khalil
503ab0b373
Merge remote-tracking branch 'origin/main' into litellm_jev_test_budget_1789764884
2026-09-19 17:36:21 +00:00
yuneng-jiang
d0f60fcdec
Merge pull request #41985 from BerriAI/litellm_config_shadows_db_warning
...
feat(proxy): say when a stored setting is ignored because the config file owns it
2026-09-19 10:36:01 -07:00
Moe Khalil
e0545a787b
Merge remote-tracking branch 'origin/main' into litellm_jev_autorouter_launch_1789767495
2026-09-19 17:35:42 +00:00