mirror of
https://github.com/BerriAI/litellm.git
synced 2026-11-12 08:42:18 +00:00
* refactor(litellm): migrate private usage in llms Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * fix(litellm): preserve Bedrock batch signature marker Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * refactor(litellm): migrate llms private usage symbols Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * fix(litellm): preserve UUID Watsonx project IDs Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * test(litellm): retarget llms mocks to public names Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * refactor(litellm): limit llms changes to renames and forwarders Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * fix(litellm): keep GCS mock client patching private Vertex auth methods Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * test(litellm): assert forwarder arguments and type forwarder signatures Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> --------- Co-authored-by: mateo <mateo@berri.ai> Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
100 lines
3.4 KiB
Python
100 lines
3.4 KiB
Python
import os
|
|
from unittest.mock import patch
|
|
|
|
NEOSANTARA_API_BASE = "https://api.neosantara.xyz/v1"
|
|
|
|
|
|
def test_neosantara_json_registry():
|
|
import litellm
|
|
from litellm.llms.openai_like.json_loader import JSONProviderRegistry
|
|
|
|
assert litellm.LlmProviders.NEOSANTARA.value == "neosantara"
|
|
assert litellm.LlmProviders("neosantara") == litellm.LlmProviders.NEOSANTARA
|
|
assert JSONProviderRegistry.exists("neosantara")
|
|
config = JSONProviderRegistry.get("neosantara")
|
|
assert config is not None
|
|
assert config.base_url == NEOSANTARA_API_BASE
|
|
assert config.api_key_env == "NEOSANTARA_API_KEY"
|
|
assert config.api_base_env == "NEOSANTARA_API_BASE"
|
|
assert config.param_mappings["max_completion_tokens"] == "max_tokens"
|
|
assert "/v1/chat/completions" in config.supported_endpoints
|
|
assert "/v1/responses" in config.supported_endpoints
|
|
|
|
|
|
def test_neosantara_dynamic_config_env_vars():
|
|
from litellm.llms.openai_like.dynamic_config import create_config_class
|
|
from litellm.llms.openai_like.json_loader import JSONProviderRegistry
|
|
|
|
config = create_config_class(JSONProviderRegistry.get("neosantara"))()
|
|
|
|
with patch.dict(
|
|
os.environ,
|
|
{
|
|
"NEOSANTARA_API_KEY": "test-key",
|
|
"NEOSANTARA_API_BASE": "https://custom.neosantara.example/v1",
|
|
},
|
|
):
|
|
api_base, api_key = config.get_openai_compatible_provider_info(None, None)
|
|
|
|
assert api_base == "https://custom.neosantara.example/v1"
|
|
assert api_key == "test-key"
|
|
|
|
|
|
def test_neosantara_provider_detection_by_prefix():
|
|
from litellm.litellm_core_utils.get_llm_provider_logic import get_llm_provider
|
|
|
|
model, provider, _, api_base = get_llm_provider("neosantara/gemini-3-flash")
|
|
|
|
assert model == "gemini-3-flash"
|
|
assert provider == "neosantara"
|
|
assert api_base == NEOSANTARA_API_BASE
|
|
|
|
|
|
def test_neosantara_chat_complete_url():
|
|
from litellm.llms.openai_like.dynamic_config import create_config_class
|
|
from litellm.llms.openai_like.json_loader import JSONProviderRegistry
|
|
|
|
config = create_config_class(JSONProviderRegistry.get("neosantara"))()
|
|
|
|
assert (
|
|
config.get_complete_url(
|
|
api_base=None,
|
|
api_key=None,
|
|
model="gemini-3-flash",
|
|
optional_params={},
|
|
litellm_params={},
|
|
)
|
|
== "https://api.neosantara.xyz/v1/chat/completions"
|
|
)
|
|
|
|
|
|
def test_neosantara_maps_max_completion_tokens_to_max_tokens():
|
|
from litellm.llms.openai_like.dynamic_config import create_config_class
|
|
from litellm.llms.openai_like.json_loader import JSONProviderRegistry
|
|
|
|
config = create_config_class(JSONProviderRegistry.get("neosantara"))()
|
|
optional_params = config.map_openai_params(
|
|
non_default_params={"max_completion_tokens": 7},
|
|
optional_params={},
|
|
model="gemini-3-flash",
|
|
drop_params=False,
|
|
)
|
|
|
|
assert optional_params == {"max_tokens": 7}
|
|
|
|
|
|
def test_neosantara_responses_api_config():
|
|
from litellm.llms.openai.responses.transformation import OpenAIResponsesAPIConfig
|
|
from litellm.utils import ProviderConfigManager
|
|
|
|
config = ProviderConfigManager.get_provider_responses_api_config(
|
|
provider="neosantara",
|
|
model="claude-opus-4-6",
|
|
)
|
|
|
|
assert isinstance(config, OpenAIResponsesAPIConfig)
|
|
assert config.custom_llm_provider == "neosantara"
|
|
assert (
|
|
config.get_complete_url(api_base=None, litellm_params={})
|
|
== "https://api.neosantara.xyz/v1/responses"
|
|
)
|