Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions litellm/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ def _dev_env_hot_reload_enabled() -> bool:
from typing import (
Any,
Callable,
cast,
Dict,
Final,
get_args,
Expand Down Expand Up @@ -688,6 +689,7 @@ def identify(event_details):
publicai_models: Set = set()
darkbloom_models: Set = set()
v0_models: Set = set()
vispark_models: Set = set()
morph_models: Set = set()
lambda_ai_models: Set = set()
inception_models: Set = set()
Expand Down Expand Up @@ -954,6 +956,9 @@ def _populate_provider_model_sets(model_cost_map: Dict) -> None:
darkbloom_models.add(key)
elif value.get("litellm_provider") == "v0":
v0_models.add(key)
elif value.get("litellm_provider") == "vispark":
# cast keeps the basedpyright reportUnknownArgumentType budget flat (keys are model-name strings)
vispark_models.add(cast(str, key)) # cast-ok: model keys are strings
elif value.get("litellm_provider") == "morph":
morph_models.add(key)
elif value.get("litellm_provider") == "lambda_ai":
Expand Down Expand Up @@ -1116,6 +1121,7 @@ def add_known_models(model_cost_map: Optional[Dict] = None):
| publicai_models
| darkbloom_models
| v0_models
| vispark_models
| morph_models
| lambda_ai_models
| inception_models
Expand Down Expand Up @@ -1228,6 +1234,7 @@ def _build_models_by_provider() -> dict:
"publicai": publicai_models,
"darkbloom": darkbloom_models,
"v0": v0_models,
"vispark": vispark_models,
"morph": morph_models,
"lambda_ai": lambda_ai_models,
"inception": inception_models,
Expand Down
3 changes: 3 additions & 0 deletions litellm/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -963,6 +963,7 @@
"https://api.cognition.ai/v1",
"https://api.cortecs.ai/v1",
"https://api.scx.ai/v1",
"https://api.lab.vispark.in/v1",
"https://api.prisminference.com/v1",
"https://gigachat.devices.sberbank.ru/api/v1",
]
Expand Down Expand Up @@ -1034,6 +1035,7 @@
"ragflow",
"pinstripes", # Pinstripes - JSON-configured provider
"darkbloom",
"vispark", # Vispark Lab - JSON-configured provider

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Missing JSON provider registration

This registers vispark as a JSON-configured OpenAI-compatible provider, but there is no corresponding entry in litellm/llms/openai_like/providers.json. The shared JSON provider path therefore cannot supply Vispark's default base URL or environment-backed credentials. Calls that rely on those provider defaults can target the wrong endpoint or fail authentication. This also violates the repository directive that new OpenAI-compatible integrations follow the established provider contribution pattern.

Rule Used: Block new LLM Provider integrations if they're openai compatible and don't follow https://docs.litellm.ai/docs/contributing/adding_openai_compatible_providers (source)

"meta", # Meta Model API (Muse Spark) - JSON-configured provider
"cognition",
"cortecs",
Expand Down Expand Up @@ -1065,6 +1067,7 @@
"poe",
"chutes",
"v0",
"vispark",
"lambda_ai",
"hyperbolic",
"wandb",
Expand Down
9 changes: 9 additions & 0 deletions litellm/llms/openai_like/providers.json
Original file line number Diff line number Diff line change
Expand Up @@ -218,5 +218,14 @@
"api_key_env": "SAIL_API_KEY",
"api_base_env": "SAIL_API_BASE",
"supported_endpoints": ["/v1/chat/completions", "/v1/responses", "/v1/messages"]
},
"vispark": {
"base_url": "https://api.lab.vispark.in/v1",
"api_key_env": "VISPARK_LAB_API_KEY",
"api_base_env": "VISPARK_LAB_API_BASE",
"param_mappings": {
"max_completion_tokens": "max_tokens"
},
"supported_endpoints": ["/v1/chat/completions", "/v1/completions"]
}
}
96 changes: 96 additions & 0 deletions litellm/model_prices_and_context_window_backup.json
Original file line number Diff line number Diff line change
Expand Up @@ -47885,6 +47885,102 @@
"supports_tool_choice": true,
"supports_vision": true
},
"vispark/vision-small": {
"input_cost_per_token": 1.05e-06,
"litellm_provider": "vispark",
"max_input_tokens": 1000000,
"max_output_tokens": 65536,
"max_tokens": 65536,
"mode": "chat",
"output_cost_per_token": 3.16e-06,
"source": "https://lab.vispark.in/#vision",
"supported_endpoints": [
"/v1/chat/completions",
"/v1/completions"
],
"supported_modalities": [
"text",
"image",
"audio",
"video"
],
"supported_output_modalities": [
"text"
],
"supports_function_calling": true,
"supports_native_streaming": true,
"supports_parallel_function_calling": true,
"supports_pdf_input": true,
"supports_reasoning": true,
"supports_response_schema": true,
"supports_system_messages": true,
"supports_tool_choice": true,
"supports_vision": true
},
"vispark/vision-medium": {
"input_cost_per_token": 4.21e-06,
"litellm_provider": "vispark",
"max_input_tokens": 1000000,
"max_output_tokens": 65536,
"max_tokens": 65536,
"mode": "chat",
"output_cost_per_token": 1.263e-05,
"source": "https://lab.vispark.in/#vision",
"supported_endpoints": [
"/v1/chat/completions",
"/v1/completions"
],
"supported_modalities": [
"text",
"image",
"audio",
"video"
],
"supported_output_modalities": [
"text"
],
"supports_function_calling": true,
"supports_native_streaming": true,
"supports_parallel_function_calling": true,
"supports_pdf_input": true,
"supports_reasoning": true,
"supports_response_schema": true,
"supports_system_messages": true,
"supports_tool_choice": true,
"supports_vision": true
},
"vispark/vision-large": {
"input_cost_per_token": 7.37e-06,
"litellm_provider": "vispark",
"max_input_tokens": 1000000,
"max_output_tokens": 65536,
"max_tokens": 65536,
"mode": "chat",
"output_cost_per_token": 2.211e-05,
"source": "https://lab.vispark.in/#vision",
"supported_endpoints": [
"/v1/chat/completions",
"/v1/completions"
],
"supported_modalities": [
"text",
"image",
"audio",
"video"
],
"supported_output_modalities": [
"text"
],
"supports_function_calling": true,
"supports_native_streaming": true,
"supports_parallel_function_calling": true,
"supports_pdf_input": true,
"supports_reasoning": true,
"supports_response_schema": true,
"supports_system_messages": true,
"supports_tool_choice": true,
"supports_vision": true
},
"vercel_ai_gateway/alibaba/qwen-3-14b": {
"input_cost_per_token": 8e-08,
"litellm_provider": "vercel_ai_gateway",
Expand Down
28 changes: 28 additions & 0 deletions litellm/proxy/public_endpoints/provider_create_fields.json
Original file line number Diff line number Diff line change
Expand Up @@ -3684,5 +3684,33 @@
}
],
"default_model_placeholder": "cursor/claude-4-sonnet"
},
{
"provider": "VISPARK",
"provider_display_name": "Vispark",
"litellm_provider": "vispark",
"credential_fields": [
{
"key": "api_base",
"label": "API Base",
"placeholder": "https://api.lab.vispark.in/v1",
"tooltip": null,
"required": false,
"field_type": "text",
"options": null,
"default_value": null
},
{
"key": "api_key",
"label": "API Key",
"placeholder": null,
"tooltip": null,
"required": true,
"field_type": "password",
"options": null,
"default_value": null
}
],
"default_model_placeholder": "vispark/vision-medium"
}
]
1 change: 1 addition & 0 deletions litellm/types/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -4065,6 +4065,7 @@ class LlmProviders(str, Enum):
MOONSHOT = "moonshot"
PUBLICAI = "publicai"
V0 = "v0"
VISPARK = "vispark"
MORPH = "morph"
LAMBDA_AI = "lambda_ai"
INCEPTION = "inception"
Expand Down
96 changes: 96 additions & 0 deletions model_prices_and_context_window.json
Original file line number Diff line number Diff line change
Expand Up @@ -47885,6 +47885,102 @@
"supports_tool_choice": true,
"supports_vision": true
},
"vispark/vision-small": {
"input_cost_per_token": 1.05e-06,
"litellm_provider": "vispark",
"max_input_tokens": 1000000,
"max_output_tokens": 65536,
"max_tokens": 65536,
"mode": "chat",
"output_cost_per_token": 3.16e-06,
"source": "https://lab.vispark.in/#vision",
"supported_endpoints": [
"/v1/chat/completions",
"/v1/completions"
],
"supported_modalities": [
"text",
"image",
"audio",
"video"
],
"supported_output_modalities": [
"text"
],
"supports_function_calling": true,
"supports_native_streaming": true,
"supports_parallel_function_calling": true,
"supports_pdf_input": true,
"supports_reasoning": true,
"supports_response_schema": true,
"supports_system_messages": true,
"supports_tool_choice": true,
"supports_vision": true
},
"vispark/vision-medium": {
"input_cost_per_token": 4.21e-06,
"litellm_provider": "vispark",
"max_input_tokens": 1000000,
"max_output_tokens": 65536,
"max_tokens": 65536,
"mode": "chat",
"output_cost_per_token": 1.263e-05,
"source": "https://lab.vispark.in/#vision",
"supported_endpoints": [
"/v1/chat/completions",
"/v1/completions"
],
"supported_modalities": [
"text",
"image",
"audio",
"video"
],
"supported_output_modalities": [
"text"
],
"supports_function_calling": true,
"supports_native_streaming": true,
"supports_parallel_function_calling": true,
"supports_pdf_input": true,
"supports_reasoning": true,
"supports_response_schema": true,
"supports_system_messages": true,
"supports_tool_choice": true,
"supports_vision": true
},
"vispark/vision-large": {
"input_cost_per_token": 7.37e-06,
"litellm_provider": "vispark",
"max_input_tokens": 1000000,
"max_output_tokens": 65536,
"max_tokens": 65536,
"mode": "chat",
"output_cost_per_token": 2.211e-05,
"source": "https://lab.vispark.in/#vision",
"supported_endpoints": [
"/v1/chat/completions",
"/v1/completions"
],
"supported_modalities": [
"text",
"image",
"audio",
"video"
],
"supported_output_modalities": [
"text"
],
"supports_function_calling": true,
"supports_native_streaming": true,
"supports_parallel_function_calling": true,
"supports_pdf_input": true,
"supports_reasoning": true,
"supports_response_schema": true,
"supports_system_messages": true,
"supports_tool_choice": true,
"supports_vision": true
},
"vercel_ai_gateway/alibaba/qwen-3-14b": {
"input_cost_per_token": 8e-08,
"litellm_provider": "vercel_ai_gateway",
Expand Down
17 changes: 17 additions & 0 deletions provider_endpoints_support.json
Original file line number Diff line number Diff line change
Expand Up @@ -2626,6 +2626,23 @@
"interactions": true
}
},
"vispark": {
"display_name": "Vispark (`vispark`)",
"url": "https://lab.vispark.in/#vision",
"endpoints": {
"chat_completions": true,
"messages": false,
"responses": false,
"embeddings": false,
"image_generations": false,
"audio_transcriptions": false,
"audio_speech": false,
"moderations": false,
"batches": false,
"rerank": false,
"a2a": false
}
},
"vercel_ai_gateway": {
"display_name": "Vercel AI Gateway (`vercel_ai_gateway`)",
"url": "https://docs.litellm.ai/docs/providers/vercel_ai_gateway",
Expand Down
Loading
Loading