Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
3077 commits
Select commit Hold shift + click to select a range
157739d
[Bug]: Fix Incorrect status value in responses api with gemini (#15753)
ishaan-jaff Oct 21, 2025
60fab59
rename test files
ishaan-jaff Oct 21, 2025
92335d9
[Feat] Add Azure AVA (Speech AI) Cost Tracking (#15754)
ishaan-jaff Oct 21, 2025
8b522d8
is_llm_api_route
ishaan-jaff Oct 21, 2025
98f1d63
use correct otel logger, and normalise otel paths (#15645)
tomhaynes Oct 21, 2025
46d55bd
fix: Add response_type + PKCE parameters to OAuth authorization endpo…
talalryz Oct 21, 2025
d79bdd4
feat: add GraySwan Guardrails support (#15756)
uc4w6c Oct 21, 2025
6605aba
docs grayswan
ishaan-jaff Oct 21, 2025
a3699e2
add Azure OCR to docs
ishaan-jaff Oct 21, 2025
185182b
Revert "add Azure OCR to docs"
ishaan-jaff Oct 21, 2025
8ad9bbb
[Docs] Add Azure AI - OCR to docs (#15768)
ishaan-jaff Oct 21, 2025
3741c43
docs fix
ishaan-jaff Oct 21, 2025
1e03685
refactor: cleanup
Oct 21, 2025
d4aadda
Auth Header Fix for MCP Tool Call (#15736)
1vinodsingh1 Oct 21, 2025
39641e7
chore: rename GraySwan to Gray Swan (#15771)
uc4w6c Oct 21, 2025
353dfb1
Add AWS us-gov-west-1 Claude 3.7 Sonnet costs (#15775)
nuernber Oct 21, 2025
2a1dbb5
docs(creating_adapters.md): document how to write an adapter
Oct 21, 2025
1fcadd6
feat(ollama): set 'think' to False when reasoning effort is not high/…
kowyo Oct 21, 2025
1cfc462
[Feat] Add SENTRY_ENVIRONMENT configuration for Sentry integration (#…
Thomas-Mildner Oct 21, 2025
b0a3a7c
Add details in docs (#15721)
javiergarciapleo Oct 21, 2025
9135e74
[Feat ] /ocr - Add mode + Health check support for OCR models (#15767)
ishaan-jaff Oct 21, 2025
e1cb928
[Feat] Add def search() APIs for Web Search - Perplexity API (#15769)
ishaan-jaff Oct 21, 2025
b0ccc35
fix(ollama): Enhance chunk parsing for empty responses without 'think…
lshgdut Oct 21, 2025
b9f3f9f
[Feat] Add Tavily Search API (#15770)
ishaan-jaff Oct 21, 2025
208f76f
[Feat] Add Parallel AI - Search API (#15772)
ishaan-jaff Oct 22, 2025
7b939b4
[Feat] Add EXA AI Search API to LiteLLM (#15774)
ishaan-jaff Oct 22, 2025
8cbaec0
feat: Add imageConfig parameter for gemini-2.5-flash-image (#15530)
kk-op-sys Oct 22, 2025
bea8e13
fix: GuardrailConfigModel
ishaan-jaff Oct 22, 2025
d9b85ab
fix: rename search_provider
ishaan-jaff Oct 22, 2025
f5a8011
[Feat] Add /search endpoint on LiteLLM Gateway (#15780)
ishaan-jaff Oct 22, 2025
adc503c
bump: version 1.78.6 β†’ 1.78.7
ishaan-jaff Oct 22, 2025
bd0a8a0
docs search_tools
ishaan-jaff Oct 22, 2025
02e34a5
anthropic.claude-3-7-sonnet-20240620-v1:0
ishaan-jaff Oct 22, 2025
29a9778
(feat) Passthrough - set auth on passthrough endpoints, on the UI (#1…
Oct 22, 2025
44495c0
fix encrypted content error (#15782)
Sameerlite Oct 22, 2025
5f7a6b4
Feat: Allow prompt caching to be used for Anthropic Claude on Databri…
anthonyivn2 Oct 22, 2025
69946bb
fix the date for sonnet 3.7 in govcloud (#15800)
nuernber Oct 22, 2025
8050995
fix: Rename configured_cold_storage_logger to cold_storage_custom_log…
hula-la Oct 22, 2025
03e1d93
fix: Apply max_connections configuration to Redis async client (#15797)
hula-la Oct 22, 2025
e80bba8
test fix
ishaan-jaff Oct 22, 2025
eac3cba
Support for embeddings_by_type Response Format in Bedrock Cohere Embe…
romanglo Oct 22, 2025
57a2ec3
fix: _extract_fields_recursive
ishaan-jaff Oct 22, 2025
abe67df
refactor large func
ishaan-jaff Oct 22, 2025
2ab2d15
Fix Token Spend is under budget for passthrough (#15805)
Sameerlite Oct 22, 2025
d91efa7
[Bug Fix]: ErrorEvent ValidationError when OpenAI Responses API retur…
ishaan-jaff Oct 22, 2025
ec6a5ff
[Fix] Azure AI Speech - Ensure `voice` is mapped from request body ->…
ishaan-jaff Oct 22, 2025
799a2b6
use proper bedrock model name in health check (#15808)
nuernber Oct 22, 2025
ad62a6d
[Feat] Add DataforSEO Search API (#15817)
ishaan-jaff Oct 22, 2025
143e314
[Feat] Add Google PSE Search Provider (#15816)
ishaan-jaff Oct 22, 2025
3e4b5ef
[Feat] Add cost tracking for Search API requests - Google PSE, Tavily…
ishaan-jaff Oct 23, 2025
573306f
(feat) Vector Stores: support Vertex AI Search API as vector store th…
Oct 23, 2025
cc63cf2
fix(responses-api): simplify reasoning item handling for gpt-5-codex …
AlexsanderHamir Oct 23, 2025
bfe4167
bump: version 1.78.7 β†’ 1.78.8
ishaan-jaff Oct 23, 2025
74b8a1d
test_aaamodel_prices_and_context_window_json_is_valid
ishaan-jaff Oct 23, 2025
5498a8b
test_ensure_initialize_azure_sdk_client_always_used
ishaan-jaff Oct 23, 2025
8e65f99
test fix TTS
ishaan-jaff Oct 23, 2025
ae7b135
test_models_by_provider
ishaan-jaff Oct 23, 2025
d53a8b3
Revert "fix(responses-api): simplify reasoning item handling for gpt-…
ishaan-jaff Oct 23, 2025
8c51181
fix: replace deprecated gemini-1.5-pro-preview-0514 with gemini-2.5-f…
AlexsanderHamir Oct 23, 2025
511d435
[Bug Fix]: Hooks broken on /bedrock passthrough due to missing metada…
ishaan-jaff Oct 23, 2025
6d947d7
[Bug Fix] Exa Search API - ensure request params are sent to Exa AI (…
ishaan-jaff Oct 23, 2025
0644c20
fix(vertex-ai): cost tracking for search spend (#15859)
mythral Oct 23, 2025
e0c4baf
fix(ui/): fix routing for custom server root path (#15701)
Oct 23, 2025
bf47c25
[fix] Pass user-defined headers and extra_headers to image-edit calls…
byrongrogan Oct 23, 2025
d8ea166
[Feat] - [Backend] Search APIs - Allow storing configured Search APIs…
ishaan-jaff Oct 24, 2025
fc9aba2
[Feat] UI - Search Tools, allow adding search tools on UI + testing s…
ishaan-jaff Oct 24, 2025
5de9123
[Feat] UI - Add logos for search providers (#15872)
ishaan-jaff Oct 24, 2025
76d658e
fix linting
ishaan-jaff Oct 24, 2025
f4e98f7
fix linting
ishaan-jaff Oct 24, 2025
ea8a604
fix to .debug
ishaan-jaff Oct 24, 2025
09c1ad1
docs: add tip openai page (#15866)
mubashirosmani Oct 24, 2025
c5fee97
docs: add OpenAI responses api (#15868)
mubashirosmani Oct 24, 2025
9338727
feat(proxy): support absolute RPM/TPM in priority_reservation (#15813)
AlexsanderHamir Oct 24, 2025
b9585b1
Update documentation for enable_caching_on_provider_specific_optional…
Sameerlite Oct 24, 2025
c638f45
Implement Bedrock Guardrail apply_guardrail endpoint support (#15892)
Sameerlite Oct 24, 2025
c793bd5
Lasso Security Guardrail: Add v3 API Support (#12452)
oroxenberg Oct 24, 2025
0f9996a
Litellm sameer oct staging (#15806)
Sameerlite Oct 24, 2025
8b14241
attempt to avoid/minimize deadlocks (#15281)
CAFxX Oct 24, 2025
a173232
Fix MLFlow tags - split request_tags into (key, val) if request_tag h…
reflection Oct 24, 2025
bd76d86
Add mistral medium 3 and Codestral 2 on vertex (#15887)
superpoussin22 Oct 24, 2025
8a5ff84
fixed lasso import config, redis cluster hash tags for test keys (#15…
shadielfares Oct 24, 2025
6dee76c
UI fix linting errors
ishaan-jaff Oct 24, 2025
a07ed76
fix linting error
ishaan-jaff Oct 24, 2025
68b8b66
update vertex ai gemini costs (#15911)
otaviofbrito Oct 25, 2025
e4d5f00
[Feat] New Guardrail - Dynamo AI Guardrail (#15920)
ishaan-jaff Oct 25, 2025
9ef54ab
ci/cd run again
ishaan-jaff Oct 25, 2025
0bedf1c
fix tests
ishaan-jaff Oct 25, 2025
caa7da9
TestAzureAIOCR
ishaan-jaff Oct 25, 2025
778e101
test_azure_img_gen_health_check
ishaan-jaff Oct 25, 2025
d8e5938
test_azure_img_gen_health_check
ishaan-jaff Oct 25, 2025
1feb13e
test_audio_speech_litellm
ishaan-jaff Oct 25, 2025
77a12f1
test audio fixes
ishaan-jaff Oct 25, 2025
eb42555
test responses API fixes
ishaan-jaff Oct 25, 2025
79258d5
ui fix
ishaan-jaff Oct 25, 2025
9218640
remove bloat files
ishaan-jaff Oct 25, 2025
0b41432
remove bloat files
ishaan-jaff Oct 25, 2025
6ef9029
remove log.txt
ishaan-jaff Oct 25, 2025
bbd9d71
remove bloat file
ishaan-jaff Oct 25, 2025
e9466dc
pt tests fix
ishaan-jaff Oct 25, 2025
ec6c166
_add_azure_related_dynamic_params
ishaan-jaff Oct 25, 2025
ddacaf6
(feat) Organizations: allow org admins to create teams on UI + (feat)…
Oct 25, 2025
c0555c8
1.78.0-stable
ishaan-jaff Oct 25, 2025
3dffb6b
test fixes
ishaan-jaff Oct 25, 2025
a3febef
test_azure_ai_request_format
ishaan-jaff Oct 25, 2025
c06098c
test_databricks_embeddings
ishaan-jaff Oct 25, 2025
7410658
test_completion_azure_ai_gpt_4o_with_flexible_api_base
ishaan-jaff Oct 25, 2025
e227e8c
mv test_whisper
ishaan-jaff Oct 25, 2025
8c8e53c
whisper test fix
ishaan-jaff Oct 25, 2025
d475557
test_azure_transcribe_model_mapping
ishaan-jaff Oct 25, 2025
214c10f
test_completion_cost_databricks_embedding
ishaan-jaff Oct 25, 2025
f8d6a6e
fix(managed_files.py): don't raise error if managed object is not fou…
Oct 25, 2025
1543891
Responses API - support tags in metadata
Oct 25, 2025
2b16731
TestAzureOpenAIO3Mini
ishaan-jaff Oct 25, 2025
cff70ec
test_azure_astreaming_and_function_calling
ishaan-jaff Oct 25, 2025
6350c20
test_azure_streaming_and_function_calling
ishaan-jaff Oct 25, 2025
b90e916
build: squash merge litellm_dev_10_10_2025_p1
Oct 25, 2025
762053a
test_model_function_invoke
ishaan-jaff Oct 25, 2025
e6b6121
test_completion_azure_deployment_id
ishaan-jaff Oct 25, 2025
0bf3d1f
test_aaaaazure_tenant_id_auth
ishaan-jaff Oct 25, 2025
964e683
test_databricks_anthropic_function_call_with_no_schema
ishaan-jaff Oct 25, 2025
747ae49
fix missing IBM_GUARDRAILS_API_BASE, IBM_GUARDRAILS_AUTH_TOKEN vars
ishaan-jaff Oct 25, 2025
44d0cfc
TestAzureOpenAIO3Mini
ishaan-jaff Oct 25, 2025
c9bc6d5
TestAzureOpenAIDalle3
ishaan-jaff Oct 25, 2025
42eb862
fix(main.py): only return mock model response stream if stream is true
Oct 25, 2025
2acedb4
test_bedrock_apply_guardrail_with_masking
ishaan-jaff Oct 25, 2025
e96c61a
test_completion_azure_deployment_id
ishaan-jaff Oct 25, 2025
818c44b
test_databricks_anthropic_function_call_with_no_schema
ishaan-jaff Oct 25, 2025
86524fc
VertexAI Search Vector Store - Passthrough endpoint support + Vector …
Oct 25, 2025
65ef9b2
fix(mcp_server_manager.py): support static headers
Oct 5, 2025
eb67cef
docs(mcp.md): add docs
Oct 5, 2025
2bd41dc
Guardrails - Responses API, Image Gen, Text completions, Audio transc…
Oct 25, 2025
6bb1d77
Org level tpm/rpm limits + Team tpm/rpm validation when assigned to o…
Oct 25, 2025
72bbdfd
(security) Responses API - prevent User A from retrieving User B's re…
Oct 25, 2025
346e036
fix(opentelemetry.py): fix issue where headers were not being split c…
Oct 25, 2025
d3e482f
fix: fix tuple
Oct 25, 2025
b4aac2e
build: build new ui
Oct 25, 2025
61ed655
tests: azure ai services are terrible round3
ishaan-jaff Oct 25, 2025
667f261
TestAzureOpenAIVectorStore
ishaan-jaff Oct 25, 2025
2c52791
test_model_function_invoke
ishaan-jaff Oct 25, 2025
5cca4c8
test_image_generation_openai
ishaan-jaff Oct 25, 2025
e67e4b8
test_completion_azure_ai_gpt_4o_with_flexible_api_base
ishaan-jaff Oct 25, 2025
e878f2b
test_router_get_available_deployments
ishaan-jaff Oct 25, 2025
20d8345
test: fixes because azure deactivated our account
ishaan-jaff Oct 25, 2025
ab0fc0a
test_aimg_gen_on_router
ishaan-jaff Oct 25, 2025
679374f
test_img_gen_on_router
ishaan-jaff Oct 25, 2025
a9c7fbb
test_router_init
ishaan-jaff Oct 25, 2025
8ac9990
Revert "fix(main.py): only return mock model response stream if strea…
Oct 25, 2025
3be40e8
fix(main.py): retain mock fix
Oct 25, 2025
da3988b
fix: fix test
Oct 25, 2025
3bd42b7
test_image_generation_azure_dall_e_3
ishaan-jaff Oct 25, 2025
4145f8c
fix: regression responses_id_security
ishaan-jaff Oct 25, 2025
a6b6e56
fixes azure
ishaan-jaff Oct 25, 2025
4341495
search test fix credits
ishaan-jaff Oct 25, 2025
f0ae2be
TestAzureResponsesAPITest
ishaan-jaff Oct 25, 2025
3c0df6a
test: update unit testing
Oct 25, 2025
0f7e1ac
test: update tests
Oct 25, 2025
ef2c50c
fix: fix linting errors
Oct 25, 2025
a1d3790
TestAzureResponsesAPITest
ishaan-jaff Oct 25, 2025
6ac21dd
fix build and test gpt-3.5-turbo
ishaan-jaff Oct 25, 2025
8a12e01
fix code qa
ishaan-jaff Oct 25, 2025
3441b7b
qa fix
ishaan-jaff Oct 25, 2025
bbfddd0
test fix
ishaan-jaff Oct 25, 2025
04ff660
fixes exception handling
ishaan-jaff Oct 25, 2025
cbadcd4
TestPerplexityIntegration
ishaan-jaff Oct 26, 2025
cd0db19
unstable test
ishaan-jaff Oct 26, 2025
3ef6ff8
bump: version 1.78.8 β†’ 1.78.9
ishaan-jaff Oct 26, 2025
869ff08
bump: version 1.78.9 β†’ 1.79.0
ishaan-jaff Oct 26, 2025
4fc692d
TestGooglePSESearch
ishaan-jaff Oct 26, 2025
d6b0c11
test fixes, fk azure
ishaan-jaff Oct 26, 2025
06a17ac
1-79-0 docs (#15936)
ishaan-jaff Oct 26, 2025
a75e75a
feat(lasso): Upgrade to Lasso API v3 and fix ULID generation (#15941)
oroxenberg Oct 26, 2025
d8b44f4
Enable OpenTelemetry context propagation by external tracers (#15940)
eycjur Oct 26, 2025
70650a0
Add all sora models (#15937)
Sameerlite Oct 26, 2025
75b5624
Fix duplicate trace (#15931)
eycjur Oct 26, 2025
c0890e7
[Feat] add support for dynamic client registration (#15921) (enables …
uc4w6c Oct 26, 2025
e1f54ef
docs: refactor placement of adding guardrails to endpoints doc
Oct 27, 2025
49b9bd3
Update IBM Guardrails implementation to correctly registrer SSL Verif…
RobGeada Oct 27, 2025
4758e29
feat: support during_call for model armor guardrails (#15970)
bjornjee Oct 27, 2025
4535b58
docs(openrouter): add base_url config with environment variables (#15…
shanto12 Oct 27, 2025
20f9e18
[Buf fix] - Azure OpenAI, fix ContextWindowExceededError is not mappe…
ishaan-jaff Oct 27, 2025
02df4c6
[Fix] DD logging - ensure key's metadata + guardrail is logged on DD …
ishaan-jaff Oct 27, 2025
17f6238
[Feat] OTEL - Ensure error information is logged on OTEL (#15978)
ishaan-jaff Oct 27, 2025
65afdda
fix exception triggered only when not logging (#15982)
ishaan-jaff Oct 27, 2025
0bb53f5
[Fix] Azure OpenAI - Add handling for `v1` under azure api versions …
ishaan-jaff Oct 27, 2025
59df752
Fix: Respect `LiteLLM-Disable-Message-Redaction` header for Responses…
Sameerlite Oct 27, 2025
cb57455
test_foward_litellm_user_info_to_backend_llm_call
ishaan-jaff Oct 27, 2025
2d836df
test_basic_moderations_on_proxy_with_model
ishaan-jaff Oct 27, 2025
1acc321
test_router_amoderation
ishaan-jaff Oct 27, 2025
4ed9c7d
[Feat] UI - Changed API Base from Select to Input in New LLM Credenti…
yuneng-jiang Oct 27, 2025
64167b7
Remove limit from admin UI numerical input fix (#15991)
yuneng-jiang Oct 28, 2025
de6fffe
bump: version 1.79.0 β†’ 1.79.1
ishaan-jaff Oct 28, 2025
d5f48c7
get_metadata_variable_name_from_kwargs
ishaan-jaff Oct 28, 2025
0e23f89
fix ModelArmorGuardrail
ishaan-jaff Oct 28, 2025
a3d64fb
fix omni-moderation-latest
ishaan-jaff Oct 28, 2025
43af45a
Key Already Exist Error Notification (#15993)
yuneng-jiang Oct 28, 2025
4cef208
[Fix] - Responses API - add /openai routes for responses API. (Azure …
ishaan-jaff Oct 28, 2025
c5c37bf
Add models missing deprecation dates (#15976)
dima-hx430 Oct 28, 2025
5ad108b
:memo: updated `ibm_guardrails.md` to better indicate how detectors c…
m-misiura Oct 28, 2025
8b33328
Perf speed up pytest (#15951)
uc4w6c Oct 28, 2025
2bef7c3
fix: Preserve Bedrock inference profile IDs in health checks (#15947)
ylgibby Oct 28, 2025
2074b4d
Fix: Support tool usage messages with Langfuse OTEL integration (#15932)
eycjur Oct 28, 2025
2e7dc56
Add Haiku 4.5 pricing for open router (#15909)
Somtom Oct 28, 2025
e27bab3
fix(opik): enhance requester metadata retrieval from API key auth (#1…
Thomas-Mildner Oct 28, 2025
647f2f5
[feat]: graceful degradation for pillar service when using litellm (#…
afogel Oct 28, 2025
3a7c498
Add GitlabPromptCache and enable subfolder access (#15712)
deepanshululla Oct 28, 2025
59189c0
fix errors in videos documentation (#15996)
Sameerlite Oct 28, 2025
12de66d
Config Models should not be editable (#16020)
yuneng-jiang Oct 28, 2025
5c375b2
[Fix] Guardrails - Ensure Key Guardrails are applied (#16025)
ishaan-jaff Oct 28, 2025
95dd216
[UI] Feature - Add Apply Guardrail Testing Playground (#16030)
ishaan-jaff Oct 28, 2025
ab8a3a5
[Fix] SQS Logger - Add Base64 handling (#16028)
ishaan-jaff Oct 28, 2025
25f1292
Fix deletion of original request (#16002)
Sameerlite Oct 28, 2025
8f2becd
Fix: Redact reasoning summaries in ResponsesAPI output when message l…
Sameerlite Oct 28, 2025
cf78b34
fix linting
ishaan-jaff Oct 28, 2025
23b1f1a
fix _process_messages
ishaan-jaff Oct 28, 2025
74e4d3f
fixes for mock tests
ishaan-jaff Oct 29, 2025
1b49dba
fix claude-sonnet-4-5
ishaan-jaff Oct 29, 2025
d32890b
fix _redact_base64
ishaan-jaff Oct 29, 2025
b0a2e08
fixes test
ishaan-jaff Oct 29, 2025
29f0ed2
fix: Support text.format parameter in Responses API for providers wit…
rodolfo-nobrega Oct 29, 2025
33371d1
test fix claude-sonnet-4-5-20250929
ishaan-jaff Oct 29, 2025
36f0ee6
Remove unnecessary model variable assignment (#16008)
Mte90 Oct 29, 2025
f28e6fc
ui new build
ishaan-jaff Oct 29, 2025
a5b7259
fix merge
ishaan-jaff Oct 29, 2025
d89990e
Add license metadata to health/readiness endpoint. (#15997)
bernata Oct 29, 2025
3319bbf
chore(deps): bump hono from 4.9.7 to 4.10.3 in /litellm-js/spend-logs…
dependabot[bot] Oct 29, 2025
e8e91ac
docs: improve Grayswan guardrail documentation (#15875)
TeddyAmkie Oct 29, 2025
e6a7cae
fix(apscheduler): prevent memory leaks from jitter and frequent job i…
jatorre Oct 29, 2025
559ae96
Python entry-point for CustomLLM subclasses (#15881)
AlbertDeFusco Oct 29, 2025
1dfdcb0
Allow using ARNs when generation images via Bedrock (#15789)
komarovd95 Oct 29, 2025
5bba1e8
Added fallback logic for detecting file content-type when S3 returns …
langpingxue Oct 29, 2025
4939793
fix: prevent httpx DeprecationWarning memory leak in AsyncHTTPHandler…
AlexsanderHamir Oct 29, 2025
99feefd
[Feat] Add FAL AI Image Generations on LiteLLM (#16067)
ishaan-jaff Oct 29, 2025
abbb147
feat: add codestral-embed-2505 (#16071)
ishaan-jaff Oct 29, 2025
06449df
fix codestral-embed
ishaan-jaff Oct 29, 2025
a10b0b8
docs fix rbac improvements
ishaan-jaff Oct 30, 2025
5f52533
Fix spend tracking for OCR/aOCR requests (log `pages_processed` + rec…
OrionCodeDev Oct 30, 2025
a3e70b8
fix model by provider test
ishaan-jaff Oct 30, 2025
f538caa
fix proxy_build_from_pip_tests
ishaan-jaff Oct 30, 2025
8a7f39d
tes numeric constants
ishaan-jaff Oct 30, 2025
aea78b8
[Feat] Add support for Batch API Rate limiting - PR1 adds support for…
ishaan-jaff Oct 30, 2025
044e260
test_get_request_body_nova_canvas_inference_profile_arn
ishaan-jaff Oct 30, 2025
5c71455
Validation for Proxy Base URL in SSO Settings (#16082)
yuneng-jiang Oct 30, 2025
cd6d6cf
Test Key UI Embeddings (#16065)
yuneng-jiang Oct 30, 2025
1b23410
[Feature] UI - Add Key Type Select in Key Settings (#16034)
yuneng-jiang Oct 30, 2025
6672250
feat(guardrails): Add per-request profile overrides to PANW Prisma AI…
jroberts2600 Oct 30, 2025
eb0e4f3
docs: use custom-llm-provider header in examples (#16055)
tlecomte Oct 30, 2025
5e10ea4
Improve(mcp): respect X-Forwarded- headers in OAuth endpoints (#16036)
talalryz Oct 30, 2025
1929351
Add OpenAI-compatible annotations support for Cohere v2 citations
Sameerlite Oct 30, 2025
6fc33ad
Opik user auth key metadata Documentation (#16004)
Thomas-Mildner Oct 30, 2025
448d72f
sync: merge upstream/main for v1.78.5-stable
Oct 30, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
571 changes: 474 additions & 97 deletions .circleci/config.yml

Large diffs are not rendered by default.

5 changes: 3 additions & 2 deletions .circleci/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# used by CI/CD testing
openai==1.81.0
openai==1.100.1
python-dotenv
tiktoken
importlib_metadata
Expand All @@ -14,4 +14,5 @@ google-cloud-iam==2.19.1
fastapi-sso==0.16.0
uvloop==0.21.0
mcp==1.10.1 # for MCP server
semantic_router==0.1.10 # for auto-routing with litellm
semantic_router==0.1.10 # for auto-routing with litellm
fastuuid==0.12.0
11 changes: 8 additions & 3 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,12 @@
// },

// Features to add to the dev container. More info: https://containers.dev/features.
// "features": {},
"features": {
"ghcr.io/devcontainers/features/node:1": {
"version": "lts"
},
"ghcr.io/devcontainers/features/docker-in-docker:2": {}
},

// Configure tool-specific properties.
"customizations": {
Expand All @@ -30,7 +35,7 @@

// Use 'forwardPorts' to make a list of ports inside the container available locally.
"forwardPorts": [4000],

"containerEnv": {
"LITELLM_LOG": "DEBUG"
},
Expand All @@ -48,5 +53,5 @@
// "remoteUser": "litellm",

// Use 'postCreateCommand' to run commands after the container is created.
"postCreateCommand": "pipx install poetry && poetry install -E extra_proxy -E proxy"
"postCreateCommand": "bash ./.devcontainer/post-create.sh"
}
17 changes: 17 additions & 0 deletions .devcontainer/post-create.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/usr/bin/env bash
set -e

echo "[post-create] Installing poetry via pip"
python -m pip install --upgrade pip
python -m pip install poetry

echo "[post-create] Installing Python dependencies (poetry)"
poetry install --with dev --extras proxy

echo "[post-create] Generating Prisma client"
poetry run prisma generate

echo "[post-create] Installing npm dependencies"
cd ui/litellm-dashboard && npm install --no-audit --no-fund

echo "[post-create] Done"
133 changes: 133 additions & 0 deletions .github/scripts/scan_keywords.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
#!/usr/bin/env python3
import json
import os
import sys
import urllib.request
import urllib.error


def read_event_payload() -> dict:
event_path = os.environ.get("GITHUB_EVENT_PATH")
if not event_path or not os.path.exists(event_path):
return {}
with open(event_path, "r", encoding="utf-8") as f:
return json.load(f)


def get_issue_text(event: dict) -> tuple[str, str, int, str, str]:
issue = event.get("issue") or {}
title = (issue.get("title") or "").strip()
body = (issue.get("body") or "").strip()
number = issue.get("number") or 0
html_url = issue.get("html_url") or ""
author = ((issue.get("user") or {}).get("login") or "").strip()
return title, body, number, html_url, author


def detect_keywords(text: str, keywords: list[str]) -> list[str]:
lowered = text.lower()
matches = []
for keyword in keywords:
k = keyword.strip().lower()
if not k:
continue
if k in lowered:
matches.append(keyword.strip())
# Deduplicate while preserving order
seen = set()
unique_matches = []
for m in matches:
if m not in seen:
unique_matches.append(m)
seen.add(m)
return unique_matches


def send_webhook(webhook_url: str, payload: dict) -> None:
if not webhook_url:
return
data = json.dumps(payload).encode("utf-8")
req = urllib.request.Request(
webhook_url,
data=data,
headers={"Content-Type": "application/json"},
method="POST",
)
try:
with urllib.request.urlopen(req, timeout=10) as resp:
resp.read()
except urllib.error.HTTPError as e:
print(f"Webhook HTTP error: {e.code} {e.reason}", file=sys.stderr)
except urllib.error.URLError as e:
print(f"Webhook URL error: {e.reason}", file=sys.stderr)
except Exception as e:
print(f"Webhook unexpected error: {e}", file=sys.stderr)


def _excerpt(text: str, max_len: int = 400) -> str:
if not text:
return ""

# Keep original formatting
if len(text) <= max_len:
return text
return text[: max_len - 1] + "…"



def main() -> int:
event = read_event_payload()
if not event:
print("::warning::No event payload found; exiting without labeling.")
return 0

# Read issue details
title, body, number, html_url, author = get_issue_text(event)
combined_text = f"{title}\n\n{body}".strip()

# Keywords from env or defaults
keywords_env = os.environ.get("KEYWORDS", "")
default_keywords = ["azure", "openai", "bedrock", "vertexai", "vertex ai", "anthropic"]
keywords = [k.strip() for k in keywords_env.split(",")] if keywords_env else default_keywords

matches = detect_keywords(combined_text, keywords)
found = bool(matches)

# Emit outputs
github_output = os.environ.get("GITHUB_OUTPUT")
if github_output:
with open(github_output, "a", encoding="utf-8") as fh:
fh.write(f"found={'true' if found else 'false'}\n")
fh.write(f"matches={','.join(matches)}\n")

# Optional webhook notification
webhook_url = os.environ.get("PROVIDER_ISSUE_WEBHOOK_URL", "").strip()
if found and webhook_url:
repo_full = (event.get("repository") or {}).get("full_name", "")
title_part = f"*{title}*" if title else "New issue"
author_part = f" by @{author}" if author else ""
body_preview = _excerpt(body)
preview_block = f"\n{body_preview}" if body_preview else ""
payload = {
"text": (
f"New issue 🚨\n"
f"{title_part}\n\n{preview_block}\n"
f"<{html_url}|View issue>\n"
f"Author: {author}"
)
}
send_webhook(webhook_url, payload)

# Print a short log line for Actions UI
if found:
print(f"Detected provider keywords: {', '.join(matches)}")
else:
print("No provider keywords detected.")

return 0


if __name__ == "__main__":
raise SystemExit(main())


62 changes: 50 additions & 12 deletions .github/workflows/auto_update_price_and_context_window_file.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ def write_to_file(file_path, data):
# Print an error message if writing to file fails
print("Error updating JSON file:", e)

# Update the existing models and add the missing models
def transform_remote_data(data):
# Update the existing models and add the missing models for OpenRouter
def transform_openrouter_data(data):
transformed = {}
for row in data:
# Add the fields 'max_tokens' and 'input_cost_per_token'
Expand Down Expand Up @@ -81,6 +81,34 @@ def transform_remote_data(data):

return transformed

# Update the existing models and add the missing models for Vercel AI Gateway
def transform_vercel_ai_gateway_data(data):
transformed = {}
for row in data:
obj = {
"max_tokens": row["context_window"],
"input_cost_per_token": float(row["pricing"]["input"]),
"output_cost_per_token": float(row["pricing"]["output"]),
'max_output_tokens': row['max_tokens'],
'max_input_tokens': row["context_window"],
}

# Handle cache pricing if available
if "pricing" in row:
if "input_cache_read" in row["pricing"] and row["pricing"]["input_cache_read"] is not None:
obj['cache_read_input_token_cost'] = float(f"{float(row['pricing']['input_cache_read']):e}")

if "input_cache_write" in row["pricing"] and row["pricing"]["input_cache_write"] is not None:
obj['cache_creation_input_token_cost'] = float(f"{float(row['pricing']['input_cache_write']):e}")

mode = "embedding" if "embedding" in row["id"].lower() else "chat"

obj.update({"litellm_provider": "vercel_ai_gateway", "mode": mode})

transformed[f'vercel_ai_gateway/{row["id"]}'] = obj

return transformed


# Load local data from a specified file
def load_local_data(file_path):
Expand All @@ -100,22 +128,32 @@ def load_local_data(file_path):

def main():
local_file_path = "model_prices_and_context_window.json" # Path to the local data file
url = "https://openrouter.ai/api/v1/models" # URL to fetch remote data
openrouter_url = "https://openrouter.ai/api/v1/models" # URL to fetch OpenRouter data
vercel_ai_gateway_url = "https://ai-gateway.vercel.sh/v1/models" # URL to fetch Vercel AI Gateway data

# Load local data from file
local_data = load_local_data(local_file_path)
# Fetch remote data asynchronously
remote_data = asyncio.run(fetch_data(url))
# Transform the fetched remote data
remote_data = transform_remote_data(remote_data)

# If both local and remote data are available, synchronize and save
if local_data and remote_data:
sync_local_data_with_remote(local_data, remote_data)

# Fetch OpenRouter data
openrouter_data = asyncio.run(fetch_data(openrouter_url))
# Transform the fetched OpenRouter data
openrouter_data = transform_openrouter_data(openrouter_data)

# Fetch Vercel AI Gateway data
vercel_data = asyncio.run(fetch_data(vercel_ai_gateway_url))
# Transform the fetched Vercel AI Gateway data
vercel_data = transform_vercel_ai_gateway_data(vercel_data)

# Combine both datasets
all_remote_data = {**openrouter_data, **vercel_data}

# If both local and openrouter data are available, synchronize and save
if local_data and all_remote_data:
sync_local_data_with_remote(local_data, all_remote_data)
write_to_file(local_file_path, local_data)
else:
print("Failed to fetch model data from either local file or URL.")

# Entry point of the script
if __name__ == "__main__":
main()
main()
1 change: 1 addition & 0 deletions .github/workflows/interpret_load_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ def get_docker_run_command(release_version):


if __name__ == "__main__":
return
csv_file = "load_test_stats.csv" # Change this to the path of your CSV file
markdown_table = interpret_results(csv_file)

Expand Down
64 changes: 64 additions & 0 deletions .github/workflows/issue-keyword-labeler.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
name: Issue Keyword Labeler

on:
issues:
types:
- opened

jobs:
scan-and-label:
runs-on: ubuntu-latest
permissions:
issues: write
contents: read
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Scan for provider keywords
id: scan
env:
PROVIDER_ISSUE_WEBHOOK_URL: ${{ secrets.PROVIDER_ISSUE_WEBHOOK_URL }}
KEYWORDS: azure,openai,bedrock,vertexai,vertex ai,anthropic
run: python3 .github/scripts/scan_keywords.py

- name: Ensure label exists
if: steps.scan.outputs.found == 'true'
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const labelName = 'llm translation';
try {
await github.rest.issues.getLabel({
owner: context.repo.owner,
repo: context.repo.repo,
name: labelName
});
} catch (error) {
if (error.status === 404) {
await github.rest.issues.createLabel({
owner: context.repo.owner,
repo: context.repo.repo,
name: labelName,
color: 'c1ff72',
description: 'Issues related to LLM provider translation/mapping'
});
} else {
throw error;
}
}

- name: Add label to the issue
if: steps.scan.outputs.found == 'true'
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
labels: ['llm translation']
});

Loading
Loading