Merge pull request #19479 from BerriAI/litellm_sarvam_int

Add support for sarvam models
This commit is contained in:
Sameer Kankute 2026-01-21 19:03:52 +05:30 • committed by GitHub
commit 540370a1aa
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 51 additions and 2 deletions

View file

@ -71,5 +71,16 @@
"param_mappings": {
"max_completion_tokens": "max_tokens"
}
},
"sarvam": {
"base_url": "https://api.sarvam.ai/v1",
"api_key_env": "SARVAM_API_KEY",
"base_class": "openai_gpt",
"param_mappings": {
"max_completion_tokens": "max_tokens"
},
"headers": {
"api-subscription-key": "{api_key}"
}
}
}

View file

@ -34062,5 +34062,18 @@
"output_cost_per_token": 0,
"litellm_provider": "llamagate",
"mode": "embedding"
},
"sarvam/sarvam-m": {
"cache_creation_input_token_cost": 0,
"cache_creation_input_token_cost_above_1hr": 0,
"cache_read_input_token_cost": 0,
"input_cost_per_token": 0,
"litellm_provider": "sarvam",
"max_input_tokens": 8192,
"max_output_tokens": 32000,
"max_tokens": 32000,
"mode": "chat",
"output_cost_per_token": 0,
"supports_reasoning": true
}
}

View file

@ -63,6 +63,7 @@ from litellm.litellm_core_utils.credential_accessor import CredentialAccessor
from litellm.litellm_core_utils.dd_tracing import tracer
from litellm.litellm_core_utils.litellm_logging import Logging as LiteLLMLogging
from litellm.litellm_core_utils.sensitive_data_masker import SensitiveDataMasker
from litellm.llms.openai_like.json_loader import JSONProviderRegistry
from litellm.router_strategy.budget_limiter import RouterBudgetLimiting
from litellm.router_strategy.least_busy import LeastBusyLoggingHandler
from litellm.router_strategy.lowest_cost import LowestCostLoggingHandler
@ -5877,7 +5878,8 @@ class Router:
),
)
# done reading model["litellm_params"]
if custom_llm_provider not in litellm.provider_list:
# Check if provider is supported: either in enum or JSON-configured
if custom_llm_provider not in litellm.provider_list and not JSONProviderRegistry.exists(custom_llm_provider):
raise Exception(f"Unsupported provider - {custom_llm_provider}")
#### DEPLOYMENT NAMES INIT ########

View file

@ -34062,5 +34062,18 @@
"output_cost_per_token": 0,
"litellm_provider": "llamagate",
"mode": "embedding"
},
"sarvam/sarvam-m": {
"cache_creation_input_token_cost": 0,
"cache_creation_input_token_cost_above_1hr": 0,
"cache_read_input_token_cost": 0,
"input_cost_per_token": 0,
"litellm_provider": "sarvam",
"max_input_tokens": 8192,
"max_output_tokens": 32000,
"max_tokens": 32000,
"mode": "chat",
"output_cost_per_token": 0,
"supports_reasoning": true
}
}

View file

@ -2358,6 +2358,15 @@
"a2a": true,
"interactions": true
}
},
"sarvam": {
"display_name": "Sarvam (`sarvam`)",
"url": "https://docs.litellm.ai/docs/providers/sarvam",
"endpoints": {
"chat_completions": true,
"messages": true,
"responses": true
}
}
},
"endpoints": {

View file

@ -37,6 +37,7 @@ from litellm.utils import (
trim_messages,
validate_environment,
)
from litellm.llms.openai_like.json_loader import JSONProviderRegistry
from unittest.mock import AsyncMock, MagicMock, patch
@ -1383,7 +1384,7 @@ def test_models_by_provider():
providers.add(v["litellm_provider"])
for provider in providers:
assert provider in models_by_provider.keys()
assert provider in models_by_provider.keys() or JSONProviderRegistry.exists(provider)
@pytest.mark.parametrize(