From 97d10df2f77ce4f627c928e635070d10dfa9fd73 Mon Sep 17 00:00:00 2001 From: respectus Date: Fri, 11 Sep 2026 17:20:36 -0700 Subject: [PATCH 1/6] feat(gitgot): add GitGot as a JSON-configured OpenAI-compatible provider GitGot serves 26 models behind an OpenAI-compatible endpoint. Follows the JSON-configured provider pattern from #34752 (SCX.ai). Model costs are per token, generated from the same configuration the service bills from, so an entry here and a customer invoice cannot disagree. 10 new tests pass. The two failures in test_cognition_provider.py are pre-existing on this branch and unrelated. --- litellm/constants.py | 2 + litellm/llms/openai_like/providers.json | 6 + ...odel_prices_and_context_window_backup.json | 390 ++++++++++++++++++ .../provider_endpoints_support_backup.json | 17 + .../provider_create_fields.json | 28 ++ litellm/types/utils.py | 1 + model_prices_and_context_window.json | 390 ++++++++++++++++++ provider_endpoints_support.json | 17 + .../llms/openai_like/test_gitgot_provider.py | 137 ++++++ .../public/assets/logos/gitgot.svg | 1 + .../src/components/provider_info_helpers.tsx | 5 + 11 files changed, 994 insertions(+) create mode 100644 tests/test_litellm/llms/openai_like/test_gitgot_provider.py create mode 100644 ui/litellm-dashboard/public/assets/logos/gitgot.svg diff --git a/litellm/constants.py b/litellm/constants.py index 6b984c2673c..6d1898b6626 100644 --- a/litellm/constants.py +++ b/litellm/constants.py @@ -894,6 +894,7 @@ openai_compatible_endpoints: Final[list] = [ "https://api.meta.ai/v1", "https://api.cognition.ai/v1", "https://api.scx.ai/v1", + "https://inference.gitgot.ai/v1", "https://gigachat.devices.sberbank.ru/api/v1", ] @@ -966,6 +967,7 @@ openai_compatible_providers: Final[list] = [ "meta", # Meta Model API (Muse Spark) - JSON-configured provider "cognition", "scx-ai", + "gitgot", ] openai_text_completion_compatible_providers: Final[list] = [ # providers that support `/v1/completions` "together_ai", diff --git a/litellm/llms/openai_like/providers.json b/litellm/llms/openai_like/providers.json index a458a209ea9..693e50a1155 100644 --- a/litellm/llms/openai_like/providers.json +++ b/litellm/llms/openai_like/providers.json @@ -200,5 +200,11 @@ "temperature_max": 1.99 }, "supported_endpoints": ["/v1/chat/completions"] + }, + "gitgot": { + "base_url": "https://inference.gitgot.ai/v1", + "api_key_env": "GITGOT_API_KEY", + "api_base_env": "GITGOT_API_BASE", + "supported_endpoints": ["/v1/chat/completions", "/v1/embeddings"] } } diff --git a/litellm/model_prices_and_context_window_backup.json b/litellm/model_prices_and_context_window_backup.json index aadd9bd3028..84920f9e4e1 100644 --- a/litellm/model_prices_and_context_window_backup.json +++ b/litellm/model_prices_and_context_window_backup.json @@ -65029,5 +65029,395 @@ "supports_tool_choice": false, "supports_response_schema": true, "supports_vision": false + }, + "gitgot/anthropic/claude-fable-5.1": { + "max_tokens": 64000, + "max_input_tokens": 1000000, + "max_output_tokens": 64000, + "input_cost_per_token": 0.0000095, + "output_cost_per_token": 0.0000475, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_reasoning": true + }, + "gitgot/anthropic/claude-haiku-4.5": { + "max_tokens": 64000, + "max_input_tokens": 200000, + "max_output_tokens": 64000, + "input_cost_per_token": 0.00000095, + "output_cost_per_token": 0.00000475, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_reasoning": false + }, + "gitgot/anthropic/claude-opus-4.5": { + "max_tokens": 64000, + "max_input_tokens": 200000, + "max_output_tokens": 64000, + "input_cost_per_token": 0.00000475, + "output_cost_per_token": 0.00002375, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_reasoning": true + }, + "gitgot/anthropic/claude-opus-4.6": { + "max_tokens": 64000, + "max_input_tokens": 1000000, + "max_output_tokens": 64000, + "input_cost_per_token": 0.00000475, + "output_cost_per_token": 0.00002375, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_reasoning": true + }, + "gitgot/anthropic/claude-opus-4.7": { + "max_tokens": 64000, + "max_input_tokens": 1000000, + "max_output_tokens": 64000, + "input_cost_per_token": 0.00000475, + "output_cost_per_token": 0.00002375, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_reasoning": true + }, + "gitgot/anthropic/claude-opus-4.8": { + "max_tokens": 64000, + "max_input_tokens": 1000000, + "max_output_tokens": 64000, + "input_cost_per_token": 0.00000475, + "output_cost_per_token": 0.00002375, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_reasoning": true + }, + "gitgot/anthropic/claude-opus-5": { + "max_tokens": 64000, + "max_input_tokens": 1000000, + "max_output_tokens": 64000, + "input_cost_per_token": 0.00000475, + "output_cost_per_token": 0.00002375, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_reasoning": true + }, + "gitgot/anthropic/claude-sonnet-4.5": { + "max_tokens": 64000, + "max_input_tokens": 200000, + "max_output_tokens": 64000, + "input_cost_per_token": 0.000002, + "output_cost_per_token": 0.00001, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_reasoning": true + }, + "gitgot/anthropic/claude-sonnet-4.6": { + "max_tokens": 64000, + "max_input_tokens": 1000000, + "max_output_tokens": 64000, + "input_cost_per_token": 0.000002, + "output_cost_per_token": 0.00001, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_reasoning": true + }, + "gitgot/anthropic/claude-sonnet-5": { + "max_tokens": 64000, + "max_input_tokens": 1000000, + "max_output_tokens": 64000, + "input_cost_per_token": 0.0000019, + "output_cost_per_token": 0.0000095, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_reasoning": true + }, + "gitgot/deepseek-ai/DeepSeek-V4-Flash": { + "max_tokens": 32768, + "max_input_tokens": 163840, + "max_output_tokens": 32768, + "input_cost_per_token": 0.0000000882, + "output_cost_per_token": 0.0000001764, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false + }, + "gitgot/deepseek-ai/DeepSeek-V4-Flash-0731": { + "max_tokens": 32768, + "max_input_tokens": 163840, + "max_output_tokens": 32768, + "input_cost_per_token": 0.0000000588, + "output_cost_per_token": 0.0000001764, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false + }, + "gitgot/deepseek-ai/DeepSeek-V4-Pro": { + "max_tokens": 32768, + "max_input_tokens": 163840, + "max_output_tokens": 32768, + "input_cost_per_token": 0.000001274, + "output_cost_per_token": 0.000002548, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": true + }, + "gitgot/meta-llama/Llama-3.3-70B-Instruct": { + "max_tokens": 32768, + "max_input_tokens": 131072, + "max_output_tokens": 32768, + "input_cost_per_token": 0.0000001323, + "output_cost_per_token": 0.000000392, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false + }, + "gitgot/moonshotai/Kimi-K2.6": { + "max_tokens": 64000, + "max_input_tokens": 262144, + "max_output_tokens": 64000, + "input_cost_per_token": 0.000000735, + "output_cost_per_token": 0.00000343, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false + }, + "gitgot/moonshotai/Kimi-K2.7-Code": { + "max_tokens": 64000, + "max_input_tokens": 262144, + "max_output_tokens": 64000, + "input_cost_per_token": 0.0000006664, + "output_cost_per_token": 0.000003332, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false + }, + "gitgot/openai/gpt-5-nano": { + "max_tokens": 128000, + "max_input_tokens": 400000, + "max_output_tokens": 128000, + "input_cost_per_token": 0.0000000475, + "output_cost_per_token": 0.00000038, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false + }, + "gitgot/openai/gpt-5.4": { + "max_tokens": 128000, + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "input_cost_per_token": 0.000002375, + "output_cost_per_token": 0.00001425, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_reasoning": false + }, + "gitgot/openai/gpt-5.4-mini": { + "max_tokens": 128000, + "max_input_tokens": 400000, + "max_output_tokens": 128000, + "input_cost_per_token": 0.0000007125, + "output_cost_per_token": 0.000004275, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false + }, + "gitgot/openai/gpt-5.4-nano": { + "max_tokens": 128000, + "max_input_tokens": 400000, + "max_output_tokens": 128000, + "input_cost_per_token": 0.00000019, + "output_cost_per_token": 0.0000011875, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false + }, + "gitgot/openai/gpt-5.5": { + "max_tokens": 128000, + "max_input_tokens": 400000, + "max_output_tokens": 128000, + "input_cost_per_token": 0.00000475, + "output_cost_per_token": 0.0000285, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false + }, + "gitgot/openai/gpt-5.6-luna": { + "max_tokens": 128000, + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "input_cost_per_token": 0.00000019, + "output_cost_per_token": 0.00000114, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false + }, + "gitgot/openai/gpt-5.6-terra": { + "max_tokens": 128000, + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "input_cost_per_token": 0.0000019, + "output_cost_per_token": 0.0000114, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_reasoning": false + }, + "gitgot/openai/gpt-6-astra": { + "max_tokens": 131072, + "max_input_tokens": 1050000, + "max_output_tokens": 131072, + "input_cost_per_token": 0.0000095, + "output_cost_per_token": 0.0000475, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_reasoning": false + }, + "gitgot/openai/gpt-oss-120b": { + "max_tokens": 32768, + "max_input_tokens": 131072, + "max_output_tokens": 32768, + "input_cost_per_token": 0.00000003626, + "output_cost_per_token": 0.0000001666, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false + }, + "gitgot/x-ai/grok-4.6": { + "max_tokens": 128000, + "max_input_tokens": 500000, + "max_output_tokens": 128000, + "input_cost_per_token": 0.0000019, + "output_cost_per_token": 0.0000057, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false } } diff --git a/litellm/provider_endpoints_support_backup.json b/litellm/provider_endpoints_support_backup.json index dbeaccdda2d..1ac441bd34d 100644 --- a/litellm/provider_endpoints_support_backup.json +++ b/litellm/provider_endpoints_support_backup.json @@ -2065,6 +2065,23 @@ "interactions": true } }, + "gitgot": { + "display_name": "GitGot (`gitgot`)", + "url": "https://gitgot.ai/docs/quickstart", + "endpoints": { + "chat_completions": true, + "messages": false, + "responses": false, + "embeddings": true, + "image_generations": false, + "audio_transcriptions": false, + "audio_speech": false, + "moderations": false, + "batches": false, + "rerank": false, + "a2a": false + } + }, "scx-ai": { "display_name": "SCX.ai (`scx-ai`)", "url": "https://docs.litellm.ai/docs/providers/scx_ai", diff --git a/litellm/proxy/public_endpoints/provider_create_fields.json b/litellm/proxy/public_endpoints/provider_create_fields.json index cd781abee26..e9d0d667ad3 100644 --- a/litellm/proxy/public_endpoints/provider_create_fields.json +++ b/litellm/proxy/public_endpoints/provider_create_fields.json @@ -2851,6 +2851,34 @@ ], "default_model_placeholder": "sap/gpt-4" }, + { + "provider": "GITGOT", + "provider_display_name": "GitGot", + "litellm_provider": "gitgot", + "credential_fields": [ + { + "key": "api_base", + "label": "API Base", + "placeholder": "https://inference.gitgot.ai/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": "gitgot/openai/gpt-5-nano" + }, { "provider": "SCX_AI", "provider_display_name": "SCX.ai", diff --git a/litellm/types/utils.py b/litellm/types/utils.py index e3ea37dc0c8..2930718706b 100644 --- a/litellm/types/utils.py +++ b/litellm/types/utils.py @@ -4012,6 +4012,7 @@ class LlmProviders(str, Enum): PINSTRIPES = "pinstripes" COGNITION = "cognition" SCX_AI = "scx-ai" + GITGOT = "gitgot" DARKBLOOM = "darkbloom" META = "meta" LITELLM_AGENT = "litellm_agent" diff --git a/model_prices_and_context_window.json b/model_prices_and_context_window.json index aadd9bd3028..84920f9e4e1 100644 --- a/model_prices_and_context_window.json +++ b/model_prices_and_context_window.json @@ -65029,5 +65029,395 @@ "supports_tool_choice": false, "supports_response_schema": true, "supports_vision": false + }, + "gitgot/anthropic/claude-fable-5.1": { + "max_tokens": 64000, + "max_input_tokens": 1000000, + "max_output_tokens": 64000, + "input_cost_per_token": 0.0000095, + "output_cost_per_token": 0.0000475, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_reasoning": true + }, + "gitgot/anthropic/claude-haiku-4.5": { + "max_tokens": 64000, + "max_input_tokens": 200000, + "max_output_tokens": 64000, + "input_cost_per_token": 0.00000095, + "output_cost_per_token": 0.00000475, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_reasoning": false + }, + "gitgot/anthropic/claude-opus-4.5": { + "max_tokens": 64000, + "max_input_tokens": 200000, + "max_output_tokens": 64000, + "input_cost_per_token": 0.00000475, + "output_cost_per_token": 0.00002375, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_reasoning": true + }, + "gitgot/anthropic/claude-opus-4.6": { + "max_tokens": 64000, + "max_input_tokens": 1000000, + "max_output_tokens": 64000, + "input_cost_per_token": 0.00000475, + "output_cost_per_token": 0.00002375, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_reasoning": true + }, + "gitgot/anthropic/claude-opus-4.7": { + "max_tokens": 64000, + "max_input_tokens": 1000000, + "max_output_tokens": 64000, + "input_cost_per_token": 0.00000475, + "output_cost_per_token": 0.00002375, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_reasoning": true + }, + "gitgot/anthropic/claude-opus-4.8": { + "max_tokens": 64000, + "max_input_tokens": 1000000, + "max_output_tokens": 64000, + "input_cost_per_token": 0.00000475, + "output_cost_per_token": 0.00002375, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_reasoning": true + }, + "gitgot/anthropic/claude-opus-5": { + "max_tokens": 64000, + "max_input_tokens": 1000000, + "max_output_tokens": 64000, + "input_cost_per_token": 0.00000475, + "output_cost_per_token": 0.00002375, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_reasoning": true + }, + "gitgot/anthropic/claude-sonnet-4.5": { + "max_tokens": 64000, + "max_input_tokens": 200000, + "max_output_tokens": 64000, + "input_cost_per_token": 0.000002, + "output_cost_per_token": 0.00001, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_reasoning": true + }, + "gitgot/anthropic/claude-sonnet-4.6": { + "max_tokens": 64000, + "max_input_tokens": 1000000, + "max_output_tokens": 64000, + "input_cost_per_token": 0.000002, + "output_cost_per_token": 0.00001, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_reasoning": true + }, + "gitgot/anthropic/claude-sonnet-5": { + "max_tokens": 64000, + "max_input_tokens": 1000000, + "max_output_tokens": 64000, + "input_cost_per_token": 0.0000019, + "output_cost_per_token": 0.0000095, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_reasoning": true + }, + "gitgot/deepseek-ai/DeepSeek-V4-Flash": { + "max_tokens": 32768, + "max_input_tokens": 163840, + "max_output_tokens": 32768, + "input_cost_per_token": 0.0000000882, + "output_cost_per_token": 0.0000001764, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false + }, + "gitgot/deepseek-ai/DeepSeek-V4-Flash-0731": { + "max_tokens": 32768, + "max_input_tokens": 163840, + "max_output_tokens": 32768, + "input_cost_per_token": 0.0000000588, + "output_cost_per_token": 0.0000001764, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false + }, + "gitgot/deepseek-ai/DeepSeek-V4-Pro": { + "max_tokens": 32768, + "max_input_tokens": 163840, + "max_output_tokens": 32768, + "input_cost_per_token": 0.000001274, + "output_cost_per_token": 0.000002548, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": true + }, + "gitgot/meta-llama/Llama-3.3-70B-Instruct": { + "max_tokens": 32768, + "max_input_tokens": 131072, + "max_output_tokens": 32768, + "input_cost_per_token": 0.0000001323, + "output_cost_per_token": 0.000000392, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false + }, + "gitgot/moonshotai/Kimi-K2.6": { + "max_tokens": 64000, + "max_input_tokens": 262144, + "max_output_tokens": 64000, + "input_cost_per_token": 0.000000735, + "output_cost_per_token": 0.00000343, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false + }, + "gitgot/moonshotai/Kimi-K2.7-Code": { + "max_tokens": 64000, + "max_input_tokens": 262144, + "max_output_tokens": 64000, + "input_cost_per_token": 0.0000006664, + "output_cost_per_token": 0.000003332, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false + }, + "gitgot/openai/gpt-5-nano": { + "max_tokens": 128000, + "max_input_tokens": 400000, + "max_output_tokens": 128000, + "input_cost_per_token": 0.0000000475, + "output_cost_per_token": 0.00000038, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false + }, + "gitgot/openai/gpt-5.4": { + "max_tokens": 128000, + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "input_cost_per_token": 0.000002375, + "output_cost_per_token": 0.00001425, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_reasoning": false + }, + "gitgot/openai/gpt-5.4-mini": { + "max_tokens": 128000, + "max_input_tokens": 400000, + "max_output_tokens": 128000, + "input_cost_per_token": 0.0000007125, + "output_cost_per_token": 0.000004275, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false + }, + "gitgot/openai/gpt-5.4-nano": { + "max_tokens": 128000, + "max_input_tokens": 400000, + "max_output_tokens": 128000, + "input_cost_per_token": 0.00000019, + "output_cost_per_token": 0.0000011875, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false + }, + "gitgot/openai/gpt-5.5": { + "max_tokens": 128000, + "max_input_tokens": 400000, + "max_output_tokens": 128000, + "input_cost_per_token": 0.00000475, + "output_cost_per_token": 0.0000285, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false + }, + "gitgot/openai/gpt-5.6-luna": { + "max_tokens": 128000, + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "input_cost_per_token": 0.00000019, + "output_cost_per_token": 0.00000114, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false + }, + "gitgot/openai/gpt-5.6-terra": { + "max_tokens": 128000, + "max_input_tokens": 1050000, + "max_output_tokens": 128000, + "input_cost_per_token": 0.0000019, + "output_cost_per_token": 0.0000114, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_reasoning": false + }, + "gitgot/openai/gpt-6-astra": { + "max_tokens": 131072, + "max_input_tokens": 1050000, + "max_output_tokens": 131072, + "input_cost_per_token": 0.0000095, + "output_cost_per_token": 0.0000475, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true, + "supports_reasoning": false + }, + "gitgot/openai/gpt-oss-120b": { + "max_tokens": 32768, + "max_input_tokens": 131072, + "max_output_tokens": 32768, + "input_cost_per_token": 0.00000003626, + "output_cost_per_token": 0.0000001666, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false + }, + "gitgot/x-ai/grok-4.6": { + "max_tokens": 128000, + "max_input_tokens": 500000, + "max_output_tokens": 128000, + "input_cost_per_token": 0.0000019, + "output_cost_per_token": 0.0000057, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false } } diff --git a/provider_endpoints_support.json b/provider_endpoints_support.json index c71f4a82a4a..5b0cb6fd7b5 100644 --- a/provider_endpoints_support.json +++ b/provider_endpoints_support.json @@ -2299,6 +2299,23 @@ "interactions": true } }, + "gitgot": { + "display_name": "GitGot (`gitgot`)", + "url": "https://gitgot.ai/docs/quickstart", + "endpoints": { + "chat_completions": true, + "messages": false, + "responses": false, + "embeddings": true, + "image_generations": false, + "audio_transcriptions": false, + "audio_speech": false, + "moderations": false, + "batches": false, + "rerank": false, + "a2a": false + } + }, "scx-ai": { "display_name": "SCX.ai (`scx-ai`)", "url": "https://docs.litellm.ai/docs/providers/scx_ai", diff --git a/tests/test_litellm/llms/openai_like/test_gitgot_provider.py b/tests/test_litellm/llms/openai_like/test_gitgot_provider.py new file mode 100644 index 00000000000..25aae9de538 --- /dev/null +++ b/tests/test_litellm/llms/openai_like/test_gitgot_provider.py @@ -0,0 +1,137 @@ +""" +Tests for GitGot provider configuration and integration. +""" + +import litellm + + +class TestGitGotProviderConfig: + def test_gitgot_in_provider_list(self): + from litellm import LlmProviders + + assert hasattr(LlmProviders, "GITGOT") + assert LlmProviders.GITGOT.value == "gitgot" + assert "gitgot" in litellm.provider_list + + def test_gitgot_json_config_exists(self): + from litellm.llms.openai_like.json_loader import JSONProviderRegistry + + assert JSONProviderRegistry.exists("gitgot") + + gitgot = JSONProviderRegistry.get("gitgot") + assert gitgot is not None + assert gitgot.base_url == "https://inference.gitgot.ai/v1" + assert gitgot.api_key_env == "GITGOT_API_KEY" + assert gitgot.api_base_env == "GITGOT_API_BASE" + + def test_gitgot_in_openai_compatible_providers(self): + from litellm.constants import openai_compatible_providers + + assert "gitgot" in openai_compatible_providers + + def test_gitgot_in_openai_compatible_endpoints(self): + from litellm.constants import openai_compatible_endpoints + + assert "https://inference.gitgot.ai/v1" in openai_compatible_endpoints + + def test_gitgot_provider_resolution(self): + from litellm.litellm_core_utils.get_llm_provider_logic import get_llm_provider + + model, provider, api_key, api_base = get_llm_provider( + model="gitgot/openai/gpt-5-nano", + custom_llm_provider=None, + api_base=None, + api_key=None, + ) + + # GitGot model ids carry a vendor prefix, so only the leading "gitgot/" + # is stripped and the rest of the path is preserved. + assert model == "openai/gpt-5-nano" + assert provider == "gitgot" + assert api_base == "https://inference.gitgot.ai/v1" + + def test_gitgot_api_base_override(self): + from litellm.litellm_core_utils.get_llm_provider_logic import get_llm_provider + + model, provider, api_key, api_base = get_llm_provider( + model="gitgot/openai/gpt-5-nano", + custom_llm_provider=None, + api_base="https://custom.gitgot.ai/v1", + api_key="gg-test", + ) + + assert provider == "gitgot" + assert api_base == "https://custom.gitgot.ai/v1" + assert api_key == "gg-test" + + def test_gitgot_model_prices_registered(self, local_model_cost_map): + from litellm import model_cost + + entry = model_cost["gitgot/openai/gpt-5-nano"] + assert entry["litellm_provider"] == "gitgot" + assert entry["mode"] == "chat" + # Costs in this file are per token, not per million. A per-million + # figure here would report the provider as a million times dearer than + # it is in every client that reads it. + assert 0 < entry["input_cost_per_token"] < 0.001 + assert 0 < entry["output_cost_per_token"] < 0.001 + assert entry["max_input_tokens"] > 0 + + def test_gitgot_cost_calculation(self, local_model_cost_map): + from litellm import completion_cost + from litellm.types.utils import Choices, Message, ModelResponse, Usage + + response = ModelResponse( + id="chatcmpl-test", + choices=[ + Choices( + finish_reason="stop", + index=0, + message=Message(content="hello", role="assistant"), + ) + ], + created=1234567890, + model="gitgot/openai/gpt-5-nano", + object="chat.completion", + usage=Usage( + prompt_tokens=1_000_000, + completion_tokens=1_000_000, + total_tokens=2_000_000, + ), + ) + + cost = completion_cost(completion_response=response) + # A million tokens each way should cost dollars, not thousands. + assert 0 < cost < 100 + + def test_gitgot_router_config(self): + from litellm import Router + + router = Router( + model_list=[ + { + "model_name": "gitgot-chat", + "litellm_params": { + "model": "gitgot/openai/gpt-5-nano", + "api_key": "test-key", + }, + } + ] + ) + + assert len(router.model_list) == 1 + assert router.model_list[0]["model_name"] == "gitgot-chat" + + def test_gitgot_endpoint_support_declared(self): + import json + from pathlib import Path + + support = json.loads( + ( + Path(litellm.__file__).parent.parent + / "provider_endpoints_support.json" + ).read_text() + )["providers"]["gitgot"] + + assert support["endpoints"]["chat_completions"] is True + assert support["endpoints"]["embeddings"] is True diff --git a/ui/litellm-dashboard/public/assets/logos/gitgot.svg b/ui/litellm-dashboard/public/assets/logos/gitgot.svg new file mode 100644 index 00000000000..c03cb6f12f9 --- /dev/null +++ b/ui/litellm-dashboard/public/assets/logos/gitgot.svg @@ -0,0 +1 @@ + diff --git a/ui/litellm-dashboard/src/components/provider_info_helpers.tsx b/ui/litellm-dashboard/src/components/provider_info_helpers.tsx index 72ec5990557..7eb5d886c7d 100644 --- a/ui/litellm-dashboard/src/components/provider_info_helpers.tsx +++ b/ui/litellm-dashboard/src/components/provider_info_helpers.tsx @@ -52,6 +52,7 @@ import runwayLogo from "../../public/assets/logos/runway.png"; import sambanovaLogo from "../../public/assets/logos/sambanova.svg"; import sapLogo from "../../public/assets/logos/sap.png"; import scxAiLogo from "../../public/assets/logos/scx_ai.svg"; +import gitgotLogo from "../../public/assets/logos/gitgot.svg"; import snowflakeLogo from "../../public/assets/logos/snowflake.svg"; import sonioxLogo from "../../public/assets/logos/soniox.svg"; import togetheraiLogo from "../../public/assets/logos/togetherai.svg"; @@ -160,6 +161,7 @@ export enum Providers { Sambanova = "Sambanova", SAP = "SAP Generative AI Hub", SCX_AI = "SCX.ai", + GitGot = "GitGot", Snowflake = "Snowflake", Soniox = "Soniox", TEXT_COMPLETION_CODESTRAL = "Text-Completion-Codestral", @@ -276,6 +278,7 @@ export const provider_map: Record = { Sambanova: "sambanova", SAP: "sap", SCX_AI: "scx-ai", + GitGot: "gitgot", Snowflake: "snowflake", Soniox: "soniox", TEXT_COMPLETION_CODESTRAL: "text-completion-codestral", @@ -373,6 +376,7 @@ export const providerLogoMap: Partial> = { [Providers.Sambanova]: sambanovaLogo.src, [Providers.SAP]: sapLogo.src, [Providers.SCX_AI]: scxAiLogo.src, + [Providers.GitGot]: gitgotLogo.src, [Providers.Snowflake]: snowflakeLogo.src, [Providers.Soniox]: sonioxLogo.src, [Providers.TEXT_COMPLETION_CODESTRAL]: mistralLogo.src, @@ -440,6 +444,7 @@ const providerPlaceholderMap: Partial> = { [Providers.RunwayML]: "runwayml/gen4_turbo", [Providers.SageMaker]: "sagemaker/jumpstart-dft-meta-textgeneration-llama-2-7b", [Providers.SCX_AI]: "scx-ai/GLM-5.2", + [Providers.GitGot]: "gitgot/openai/gpt-5-nano", [Providers.Snowflake]: "snowflake/mistral-7b", [Providers.Vertex_AI]: "gemini-pro", [Providers.VolcEngine]: "volcengine/", From 26f14204d3e0ecbc4bcb85302f4a2b5edd6b801c Mon Sep 17 00:00:00 2001 From: respectus Date: Fri, 11 Sep 2026 21:05:01 -0700 Subject: [PATCH 2/6] Limit GitGot entries to open-weight models Narrows this to the seven models whose licences permit third-party serving: gpt-oss (Apache-2.0), DeepSeek (MIT), Kimi (modified MIT) and Llama 3.3. The proprietary entries are dropped, and the default model placeholder moves to gitgot/openai/gpt-oss-120b. 10 tests still pass. --- ...odel_prices_and_context_window_backup.json | 105 ++++++++++++++++++ .../provider_create_fields.json | 2 +- model_prices_and_context_window.json | 105 ++++++++++++++++++ .../llms/openai_like/test_gitgot_provider.py | 12 +- .../src/components/provider_info_helpers.tsx | 2 +- 5 files changed, 218 insertions(+), 8 deletions(-) diff --git a/litellm/model_prices_and_context_window_backup.json b/litellm/model_prices_and_context_window_backup.json index 84920f9e4e1..aa8fe3f1249 100644 --- a/litellm/model_prices_and_context_window_backup.json +++ b/litellm/model_prices_and_context_window_backup.json @@ -65419,5 +65419,110 @@ "supports_tool_choice": true, "supports_vision": false, "supports_reasoning": false + }, + "gitgot/deepseek-ai/DeepSeek-V4-Flash": { + "max_tokens": 32768, + "max_input_tokens": 163840, + "max_output_tokens": 32768, + "input_cost_per_token": 0.0000000882, + "output_cost_per_token": 0.0000001764, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false + }, + "gitgot/deepseek-ai/DeepSeek-V4-Flash-0731": { + "max_tokens": 32768, + "max_input_tokens": 163840, + "max_output_tokens": 32768, + "input_cost_per_token": 0.0000000588, + "output_cost_per_token": 0.0000001764, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false + }, + "gitgot/deepseek-ai/DeepSeek-V4-Pro": { + "max_tokens": 32768, + "max_input_tokens": 163840, + "max_output_tokens": 32768, + "input_cost_per_token": 0.000001274, + "output_cost_per_token": 0.000002548, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": true + }, + "gitgot/meta-llama/Llama-3.3-70B-Instruct": { + "max_tokens": 32768, + "max_input_tokens": 131072, + "max_output_tokens": 32768, + "input_cost_per_token": 0.0000001323, + "output_cost_per_token": 0.000000392, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false + }, + "gitgot/moonshotai/Kimi-K2.6": { + "max_tokens": 64000, + "max_input_tokens": 262144, + "max_output_tokens": 64000, + "input_cost_per_token": 0.000000735, + "output_cost_per_token": 0.00000343, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false + }, + "gitgot/moonshotai/Kimi-K2.7-Code": { + "max_tokens": 64000, + "max_input_tokens": 262144, + "max_output_tokens": 64000, + "input_cost_per_token": 0.0000006664, + "output_cost_per_token": 0.000003332, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false + }, + "gitgot/openai/gpt-oss-120b": { + "max_tokens": 32768, + "max_input_tokens": 131072, + "max_output_tokens": 32768, + "input_cost_per_token": 0.00000003626, + "output_cost_per_token": 0.0000001666, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false } } diff --git a/litellm/proxy/public_endpoints/provider_create_fields.json b/litellm/proxy/public_endpoints/provider_create_fields.json index e9d0d667ad3..07a4219858c 100644 --- a/litellm/proxy/public_endpoints/provider_create_fields.json +++ b/litellm/proxy/public_endpoints/provider_create_fields.json @@ -2877,7 +2877,7 @@ "default_value": null } ], - "default_model_placeholder": "gitgot/openai/gpt-5-nano" + "default_model_placeholder": "gitgot/openai/gpt-oss-120b" }, { "provider": "SCX_AI", diff --git a/model_prices_and_context_window.json b/model_prices_and_context_window.json index 84920f9e4e1..aa8fe3f1249 100644 --- a/model_prices_and_context_window.json +++ b/model_prices_and_context_window.json @@ -65419,5 +65419,110 @@ "supports_tool_choice": true, "supports_vision": false, "supports_reasoning": false + }, + "gitgot/deepseek-ai/DeepSeek-V4-Flash": { + "max_tokens": 32768, + "max_input_tokens": 163840, + "max_output_tokens": 32768, + "input_cost_per_token": 0.0000000882, + "output_cost_per_token": 0.0000001764, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false + }, + "gitgot/deepseek-ai/DeepSeek-V4-Flash-0731": { + "max_tokens": 32768, + "max_input_tokens": 163840, + "max_output_tokens": 32768, + "input_cost_per_token": 0.0000000588, + "output_cost_per_token": 0.0000001764, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false + }, + "gitgot/deepseek-ai/DeepSeek-V4-Pro": { + "max_tokens": 32768, + "max_input_tokens": 163840, + "max_output_tokens": 32768, + "input_cost_per_token": 0.000001274, + "output_cost_per_token": 0.000002548, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": true + }, + "gitgot/meta-llama/Llama-3.3-70B-Instruct": { + "max_tokens": 32768, + "max_input_tokens": 131072, + "max_output_tokens": 32768, + "input_cost_per_token": 0.0000001323, + "output_cost_per_token": 0.000000392, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false + }, + "gitgot/moonshotai/Kimi-K2.6": { + "max_tokens": 64000, + "max_input_tokens": 262144, + "max_output_tokens": 64000, + "input_cost_per_token": 0.000000735, + "output_cost_per_token": 0.00000343, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false + }, + "gitgot/moonshotai/Kimi-K2.7-Code": { + "max_tokens": 64000, + "max_input_tokens": 262144, + "max_output_tokens": 64000, + "input_cost_per_token": 0.0000006664, + "output_cost_per_token": 0.000003332, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false + }, + "gitgot/openai/gpt-oss-120b": { + "max_tokens": 32768, + "max_input_tokens": 131072, + "max_output_tokens": 32768, + "input_cost_per_token": 0.00000003626, + "output_cost_per_token": 0.0000001666, + "litellm_provider": "gitgot", + "mode": "chat", + "source": "https://inference.gitgot.ai/v1/pricing", + "supports_function_calling": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": false, + "supports_reasoning": false } } diff --git a/tests/test_litellm/llms/openai_like/test_gitgot_provider.py b/tests/test_litellm/llms/openai_like/test_gitgot_provider.py index 25aae9de538..16ccb802f7f 100644 --- a/tests/test_litellm/llms/openai_like/test_gitgot_provider.py +++ b/tests/test_litellm/llms/openai_like/test_gitgot_provider.py @@ -38,7 +38,7 @@ class TestGitGotProviderConfig: from litellm.litellm_core_utils.get_llm_provider_logic import get_llm_provider model, provider, api_key, api_base = get_llm_provider( - model="gitgot/openai/gpt-5-nano", + model="gitgot/openai/gpt-oss-120b", custom_llm_provider=None, api_base=None, api_key=None, @@ -46,7 +46,7 @@ class TestGitGotProviderConfig: # GitGot model ids carry a vendor prefix, so only the leading "gitgot/" # is stripped and the rest of the path is preserved. - assert model == "openai/gpt-5-nano" + assert model == "openai/gpt-oss-120b" assert provider == "gitgot" assert api_base == "https://inference.gitgot.ai/v1" @@ -54,7 +54,7 @@ class TestGitGotProviderConfig: from litellm.litellm_core_utils.get_llm_provider_logic import get_llm_provider model, provider, api_key, api_base = get_llm_provider( - model="gitgot/openai/gpt-5-nano", + model="gitgot/openai/gpt-oss-120b", custom_llm_provider=None, api_base="https://custom.gitgot.ai/v1", api_key="gg-test", @@ -67,7 +67,7 @@ class TestGitGotProviderConfig: def test_gitgot_model_prices_registered(self, local_model_cost_map): from litellm import model_cost - entry = model_cost["gitgot/openai/gpt-5-nano"] + entry = model_cost["gitgot/openai/gpt-oss-120b"] assert entry["litellm_provider"] == "gitgot" assert entry["mode"] == "chat" # Costs in this file are per token, not per million. A per-million @@ -91,7 +91,7 @@ class TestGitGotProviderConfig: ) ], created=1234567890, - model="gitgot/openai/gpt-5-nano", + model="gitgot/openai/gpt-oss-120b", object="chat.completion", usage=Usage( prompt_tokens=1_000_000, @@ -112,7 +112,7 @@ class TestGitGotProviderConfig: { "model_name": "gitgot-chat", "litellm_params": { - "model": "gitgot/openai/gpt-5-nano", + "model": "gitgot/openai/gpt-oss-120b", "api_key": "test-key", }, } diff --git a/ui/litellm-dashboard/src/components/provider_info_helpers.tsx b/ui/litellm-dashboard/src/components/provider_info_helpers.tsx index 7eb5d886c7d..61b1969d2b1 100644 --- a/ui/litellm-dashboard/src/components/provider_info_helpers.tsx +++ b/ui/litellm-dashboard/src/components/provider_info_helpers.tsx @@ -444,7 +444,7 @@ const providerPlaceholderMap: Partial> = { [Providers.RunwayML]: "runwayml/gen4_turbo", [Providers.SageMaker]: "sagemaker/jumpstart-dft-meta-textgeneration-llama-2-7b", [Providers.SCX_AI]: "scx-ai/GLM-5.2", - [Providers.GitGot]: "gitgot/openai/gpt-5-nano", + [Providers.GitGot]: "gitgot/openai/gpt-oss-120b", [Providers.Snowflake]: "snowflake/mistral-7b", [Providers.Vertex_AI]: "gemini-pro", [Providers.VolcEngine]: "volcengine/", From cac253cba4222b183beab67d06bc1cfcf57cd65a Mon Sep 17 00:00:00 2001 From: respectus Date: Fri, 11 Sep 2026 21:07:18 -0700 Subject: [PATCH 3/6] Remove the proprietary model entries The previous commit meant to narrow this to open-weight models but restored the price files from the wrong revision, so the proprietary entries survived. This removes them properly: seven entries remain, all Apache-2.0, MIT or the Llama Community Licence. --- ...odel_prices_and_context_window_backup.json | 424 ++---------------- model_prices_and_context_window.json | 424 ++---------------- 2 files changed, 68 insertions(+), 780 deletions(-) diff --git a/litellm/model_prices_and_context_window_backup.json b/litellm/model_prices_and_context_window_backup.json index aa8fe3f1249..867a278b907 100644 --- a/litellm/model_prices_and_context_window_backup.json +++ b/litellm/model_prices_and_context_window_backup.json @@ -57695,6 +57695,23 @@ "supports_tool_choice": true, "supports_vision": false }, + "fireworks_ai/accounts/fireworks/models/deepseek-v4p1-flash": { + "cache_read_input_token_cost": 7e-09, + "input_cost_per_token": 2.2e-07, + "litellm_provider": "fireworks_ai", + "max_input_tokens": 1048576, + "max_output_tokens": 393216, + "max_tokens": 393216, + "mode": "chat", + "output_cost_per_token": 6.6e-07, + "source": "https://fireworks.ai/models/deepseek-ai/deepseek-v4p1-flash", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true + }, "fireworks_ai/accounts/fireworks/models/deepseek-v4-flash-vision-exp": { "cache_read_input_token_cost": 7e-09, "input_cost_per_token": 2.2e-07, @@ -57745,6 +57762,23 @@ "supports_tool_choice": true, "supports_vision": false }, + "fireworks_ai/deepseek-v4p1-flash": { + "cache_read_input_token_cost": 7e-09, + "input_cost_per_token": 2.2e-07, + "litellm_provider": "fireworks_ai", + "max_input_tokens": 1048576, + "max_output_tokens": 393216, + "max_tokens": 393216, + "mode": "chat", + "output_cost_per_token": 6.6e-07, + "source": "https://fireworks.ai/models/deepseek-ai/deepseek-v4p1-flash", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true + }, "fireworks_ai/deepseek-v4-flash-vision-exp": { "cache_read_input_token_cost": 7e-09, "input_cost_per_token": 2.2e-07, @@ -65030,396 +65064,6 @@ "supports_response_schema": true, "supports_vision": false }, - "gitgot/anthropic/claude-fable-5.1": { - "max_tokens": 64000, - "max_input_tokens": 1000000, - "max_output_tokens": 64000, - "input_cost_per_token": 0.0000095, - "output_cost_per_token": 0.0000475, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_reasoning": true - }, - "gitgot/anthropic/claude-haiku-4.5": { - "max_tokens": 64000, - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "input_cost_per_token": 0.00000095, - "output_cost_per_token": 0.00000475, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_reasoning": false - }, - "gitgot/anthropic/claude-opus-4.5": { - "max_tokens": 64000, - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "input_cost_per_token": 0.00000475, - "output_cost_per_token": 0.00002375, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_reasoning": true - }, - "gitgot/anthropic/claude-opus-4.6": { - "max_tokens": 64000, - "max_input_tokens": 1000000, - "max_output_tokens": 64000, - "input_cost_per_token": 0.00000475, - "output_cost_per_token": 0.00002375, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_reasoning": true - }, - "gitgot/anthropic/claude-opus-4.7": { - "max_tokens": 64000, - "max_input_tokens": 1000000, - "max_output_tokens": 64000, - "input_cost_per_token": 0.00000475, - "output_cost_per_token": 0.00002375, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_reasoning": true - }, - "gitgot/anthropic/claude-opus-4.8": { - "max_tokens": 64000, - "max_input_tokens": 1000000, - "max_output_tokens": 64000, - "input_cost_per_token": 0.00000475, - "output_cost_per_token": 0.00002375, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_reasoning": true - }, - "gitgot/anthropic/claude-opus-5": { - "max_tokens": 64000, - "max_input_tokens": 1000000, - "max_output_tokens": 64000, - "input_cost_per_token": 0.00000475, - "output_cost_per_token": 0.00002375, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_reasoning": true - }, - "gitgot/anthropic/claude-sonnet-4.5": { - "max_tokens": 64000, - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "input_cost_per_token": 0.000002, - "output_cost_per_token": 0.00001, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_reasoning": true - }, - "gitgot/anthropic/claude-sonnet-4.6": { - "max_tokens": 64000, - "max_input_tokens": 1000000, - "max_output_tokens": 64000, - "input_cost_per_token": 0.000002, - "output_cost_per_token": 0.00001, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_reasoning": true - }, - "gitgot/anthropic/claude-sonnet-5": { - "max_tokens": 64000, - "max_input_tokens": 1000000, - "max_output_tokens": 64000, - "input_cost_per_token": 0.0000019, - "output_cost_per_token": 0.0000095, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_reasoning": true - }, - "gitgot/deepseek-ai/DeepSeek-V4-Flash": { - "max_tokens": 32768, - "max_input_tokens": 163840, - "max_output_tokens": 32768, - "input_cost_per_token": 0.0000000882, - "output_cost_per_token": 0.0000001764, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false, - "supports_reasoning": false - }, - "gitgot/deepseek-ai/DeepSeek-V4-Flash-0731": { - "max_tokens": 32768, - "max_input_tokens": 163840, - "max_output_tokens": 32768, - "input_cost_per_token": 0.0000000588, - "output_cost_per_token": 0.0000001764, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false, - "supports_reasoning": false - }, - "gitgot/deepseek-ai/DeepSeek-V4-Pro": { - "max_tokens": 32768, - "max_input_tokens": 163840, - "max_output_tokens": 32768, - "input_cost_per_token": 0.000001274, - "output_cost_per_token": 0.000002548, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false, - "supports_reasoning": true - }, - "gitgot/meta-llama/Llama-3.3-70B-Instruct": { - "max_tokens": 32768, - "max_input_tokens": 131072, - "max_output_tokens": 32768, - "input_cost_per_token": 0.0000001323, - "output_cost_per_token": 0.000000392, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false, - "supports_reasoning": false - }, - "gitgot/moonshotai/Kimi-K2.6": { - "max_tokens": 64000, - "max_input_tokens": 262144, - "max_output_tokens": 64000, - "input_cost_per_token": 0.000000735, - "output_cost_per_token": 0.00000343, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false, - "supports_reasoning": false - }, - "gitgot/moonshotai/Kimi-K2.7-Code": { - "max_tokens": 64000, - "max_input_tokens": 262144, - "max_output_tokens": 64000, - "input_cost_per_token": 0.0000006664, - "output_cost_per_token": 0.000003332, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false, - "supports_reasoning": false - }, - "gitgot/openai/gpt-5-nano": { - "max_tokens": 128000, - "max_input_tokens": 400000, - "max_output_tokens": 128000, - "input_cost_per_token": 0.0000000475, - "output_cost_per_token": 0.00000038, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false, - "supports_reasoning": false - }, - "gitgot/openai/gpt-5.4": { - "max_tokens": 128000, - "max_input_tokens": 1050000, - "max_output_tokens": 128000, - "input_cost_per_token": 0.000002375, - "output_cost_per_token": 0.00001425, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_reasoning": false - }, - "gitgot/openai/gpt-5.4-mini": { - "max_tokens": 128000, - "max_input_tokens": 400000, - "max_output_tokens": 128000, - "input_cost_per_token": 0.0000007125, - "output_cost_per_token": 0.000004275, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false, - "supports_reasoning": false - }, - "gitgot/openai/gpt-5.4-nano": { - "max_tokens": 128000, - "max_input_tokens": 400000, - "max_output_tokens": 128000, - "input_cost_per_token": 0.00000019, - "output_cost_per_token": 0.0000011875, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false, - "supports_reasoning": false - }, - "gitgot/openai/gpt-5.5": { - "max_tokens": 128000, - "max_input_tokens": 400000, - "max_output_tokens": 128000, - "input_cost_per_token": 0.00000475, - "output_cost_per_token": 0.0000285, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false, - "supports_reasoning": false - }, - "gitgot/openai/gpt-5.6-luna": { - "max_tokens": 128000, - "max_input_tokens": 1050000, - "max_output_tokens": 128000, - "input_cost_per_token": 0.00000019, - "output_cost_per_token": 0.00000114, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false, - "supports_reasoning": false - }, - "gitgot/openai/gpt-5.6-terra": { - "max_tokens": 128000, - "max_input_tokens": 1050000, - "max_output_tokens": 128000, - "input_cost_per_token": 0.0000019, - "output_cost_per_token": 0.0000114, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_reasoning": false - }, - "gitgot/openai/gpt-6-astra": { - "max_tokens": 131072, - "max_input_tokens": 1050000, - "max_output_tokens": 131072, - "input_cost_per_token": 0.0000095, - "output_cost_per_token": 0.0000475, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_reasoning": false - }, - "gitgot/openai/gpt-oss-120b": { - "max_tokens": 32768, - "max_input_tokens": 131072, - "max_output_tokens": 32768, - "input_cost_per_token": 0.00000003626, - "output_cost_per_token": 0.0000001666, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false, - "supports_reasoning": false - }, - "gitgot/x-ai/grok-4.6": { - "max_tokens": 128000, - "max_input_tokens": 500000, - "max_output_tokens": 128000, - "input_cost_per_token": 0.0000019, - "output_cost_per_token": 0.0000057, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false, - "supports_reasoning": false - }, "gitgot/deepseek-ai/DeepSeek-V4-Flash": { "max_tokens": 32768, "max_input_tokens": 163840, diff --git a/model_prices_and_context_window.json b/model_prices_and_context_window.json index aa8fe3f1249..867a278b907 100644 --- a/model_prices_and_context_window.json +++ b/model_prices_and_context_window.json @@ -57695,6 +57695,23 @@ "supports_tool_choice": true, "supports_vision": false }, + "fireworks_ai/accounts/fireworks/models/deepseek-v4p1-flash": { + "cache_read_input_token_cost": 7e-09, + "input_cost_per_token": 2.2e-07, + "litellm_provider": "fireworks_ai", + "max_input_tokens": 1048576, + "max_output_tokens": 393216, + "max_tokens": 393216, + "mode": "chat", + "output_cost_per_token": 6.6e-07, + "source": "https://fireworks.ai/models/deepseek-ai/deepseek-v4p1-flash", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true + }, "fireworks_ai/accounts/fireworks/models/deepseek-v4-flash-vision-exp": { "cache_read_input_token_cost": 7e-09, "input_cost_per_token": 2.2e-07, @@ -57745,6 +57762,23 @@ "supports_tool_choice": true, "supports_vision": false }, + "fireworks_ai/deepseek-v4p1-flash": { + "cache_read_input_token_cost": 7e-09, + "input_cost_per_token": 2.2e-07, + "litellm_provider": "fireworks_ai", + "max_input_tokens": 1048576, + "max_output_tokens": 393216, + "max_tokens": 393216, + "mode": "chat", + "output_cost_per_token": 6.6e-07, + "source": "https://fireworks.ai/models/deepseek-ai/deepseek-v4p1-flash", + "supports_function_calling": true, + "supports_prompt_caching": true, + "supports_reasoning": true, + "supports_response_schema": true, + "supports_tool_choice": true, + "supports_vision": true + }, "fireworks_ai/deepseek-v4-flash-vision-exp": { "cache_read_input_token_cost": 7e-09, "input_cost_per_token": 2.2e-07, @@ -65030,396 +65064,6 @@ "supports_response_schema": true, "supports_vision": false }, - "gitgot/anthropic/claude-fable-5.1": { - "max_tokens": 64000, - "max_input_tokens": 1000000, - "max_output_tokens": 64000, - "input_cost_per_token": 0.0000095, - "output_cost_per_token": 0.0000475, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_reasoning": true - }, - "gitgot/anthropic/claude-haiku-4.5": { - "max_tokens": 64000, - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "input_cost_per_token": 0.00000095, - "output_cost_per_token": 0.00000475, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_reasoning": false - }, - "gitgot/anthropic/claude-opus-4.5": { - "max_tokens": 64000, - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "input_cost_per_token": 0.00000475, - "output_cost_per_token": 0.00002375, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_reasoning": true - }, - "gitgot/anthropic/claude-opus-4.6": { - "max_tokens": 64000, - "max_input_tokens": 1000000, - "max_output_tokens": 64000, - "input_cost_per_token": 0.00000475, - "output_cost_per_token": 0.00002375, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_reasoning": true - }, - "gitgot/anthropic/claude-opus-4.7": { - "max_tokens": 64000, - "max_input_tokens": 1000000, - "max_output_tokens": 64000, - "input_cost_per_token": 0.00000475, - "output_cost_per_token": 0.00002375, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_reasoning": true - }, - "gitgot/anthropic/claude-opus-4.8": { - "max_tokens": 64000, - "max_input_tokens": 1000000, - "max_output_tokens": 64000, - "input_cost_per_token": 0.00000475, - "output_cost_per_token": 0.00002375, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_reasoning": true - }, - "gitgot/anthropic/claude-opus-5": { - "max_tokens": 64000, - "max_input_tokens": 1000000, - "max_output_tokens": 64000, - "input_cost_per_token": 0.00000475, - "output_cost_per_token": 0.00002375, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_reasoning": true - }, - "gitgot/anthropic/claude-sonnet-4.5": { - "max_tokens": 64000, - "max_input_tokens": 200000, - "max_output_tokens": 64000, - "input_cost_per_token": 0.000002, - "output_cost_per_token": 0.00001, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_reasoning": true - }, - "gitgot/anthropic/claude-sonnet-4.6": { - "max_tokens": 64000, - "max_input_tokens": 1000000, - "max_output_tokens": 64000, - "input_cost_per_token": 0.000002, - "output_cost_per_token": 0.00001, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_reasoning": true - }, - "gitgot/anthropic/claude-sonnet-5": { - "max_tokens": 64000, - "max_input_tokens": 1000000, - "max_output_tokens": 64000, - "input_cost_per_token": 0.0000019, - "output_cost_per_token": 0.0000095, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_reasoning": true - }, - "gitgot/deepseek-ai/DeepSeek-V4-Flash": { - "max_tokens": 32768, - "max_input_tokens": 163840, - "max_output_tokens": 32768, - "input_cost_per_token": 0.0000000882, - "output_cost_per_token": 0.0000001764, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false, - "supports_reasoning": false - }, - "gitgot/deepseek-ai/DeepSeek-V4-Flash-0731": { - "max_tokens": 32768, - "max_input_tokens": 163840, - "max_output_tokens": 32768, - "input_cost_per_token": 0.0000000588, - "output_cost_per_token": 0.0000001764, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false, - "supports_reasoning": false - }, - "gitgot/deepseek-ai/DeepSeek-V4-Pro": { - "max_tokens": 32768, - "max_input_tokens": 163840, - "max_output_tokens": 32768, - "input_cost_per_token": 0.000001274, - "output_cost_per_token": 0.000002548, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false, - "supports_reasoning": true - }, - "gitgot/meta-llama/Llama-3.3-70B-Instruct": { - "max_tokens": 32768, - "max_input_tokens": 131072, - "max_output_tokens": 32768, - "input_cost_per_token": 0.0000001323, - "output_cost_per_token": 0.000000392, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false, - "supports_reasoning": false - }, - "gitgot/moonshotai/Kimi-K2.6": { - "max_tokens": 64000, - "max_input_tokens": 262144, - "max_output_tokens": 64000, - "input_cost_per_token": 0.000000735, - "output_cost_per_token": 0.00000343, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false, - "supports_reasoning": false - }, - "gitgot/moonshotai/Kimi-K2.7-Code": { - "max_tokens": 64000, - "max_input_tokens": 262144, - "max_output_tokens": 64000, - "input_cost_per_token": 0.0000006664, - "output_cost_per_token": 0.000003332, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false, - "supports_reasoning": false - }, - "gitgot/openai/gpt-5-nano": { - "max_tokens": 128000, - "max_input_tokens": 400000, - "max_output_tokens": 128000, - "input_cost_per_token": 0.0000000475, - "output_cost_per_token": 0.00000038, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false, - "supports_reasoning": false - }, - "gitgot/openai/gpt-5.4": { - "max_tokens": 128000, - "max_input_tokens": 1050000, - "max_output_tokens": 128000, - "input_cost_per_token": 0.000002375, - "output_cost_per_token": 0.00001425, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_reasoning": false - }, - "gitgot/openai/gpt-5.4-mini": { - "max_tokens": 128000, - "max_input_tokens": 400000, - "max_output_tokens": 128000, - "input_cost_per_token": 0.0000007125, - "output_cost_per_token": 0.000004275, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false, - "supports_reasoning": false - }, - "gitgot/openai/gpt-5.4-nano": { - "max_tokens": 128000, - "max_input_tokens": 400000, - "max_output_tokens": 128000, - "input_cost_per_token": 0.00000019, - "output_cost_per_token": 0.0000011875, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false, - "supports_reasoning": false - }, - "gitgot/openai/gpt-5.5": { - "max_tokens": 128000, - "max_input_tokens": 400000, - "max_output_tokens": 128000, - "input_cost_per_token": 0.00000475, - "output_cost_per_token": 0.0000285, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false, - "supports_reasoning": false - }, - "gitgot/openai/gpt-5.6-luna": { - "max_tokens": 128000, - "max_input_tokens": 1050000, - "max_output_tokens": 128000, - "input_cost_per_token": 0.00000019, - "output_cost_per_token": 0.00000114, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false, - "supports_reasoning": false - }, - "gitgot/openai/gpt-5.6-terra": { - "max_tokens": 128000, - "max_input_tokens": 1050000, - "max_output_tokens": 128000, - "input_cost_per_token": 0.0000019, - "output_cost_per_token": 0.0000114, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_reasoning": false - }, - "gitgot/openai/gpt-6-astra": { - "max_tokens": 131072, - "max_input_tokens": 1050000, - "max_output_tokens": 131072, - "input_cost_per_token": 0.0000095, - "output_cost_per_token": 0.0000475, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": true, - "supports_reasoning": false - }, - "gitgot/openai/gpt-oss-120b": { - "max_tokens": 32768, - "max_input_tokens": 131072, - "max_output_tokens": 32768, - "input_cost_per_token": 0.00000003626, - "output_cost_per_token": 0.0000001666, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false, - "supports_reasoning": false - }, - "gitgot/x-ai/grok-4.6": { - "max_tokens": 128000, - "max_input_tokens": 500000, - "max_output_tokens": 128000, - "input_cost_per_token": 0.0000019, - "output_cost_per_token": 0.0000057, - "litellm_provider": "gitgot", - "mode": "chat", - "source": "https://inference.gitgot.ai/v1/pricing", - "supports_function_calling": true, - "supports_response_schema": true, - "supports_tool_choice": true, - "supports_vision": false, - "supports_reasoning": false - }, "gitgot/deepseek-ai/DeepSeek-V4-Flash": { "max_tokens": 32768, "max_input_tokens": 163840, From 4053ed57339a7399a57df9102afd91f14006a72f Mon Sep 17 00:00:00 2001 From: mateo-berri <277851410+mateo-berri@users.noreply.github.com> Date: Thu, 15 Oct 2026 07:03:09 +0000 Subject: [PATCH 4/6] test(gitgot): assert upstream request and derived cost, link the working inference page Replace structural checks with a mocked-transport chat call that proves the vendor-prefixed model id reaches GitGot unchanged, and a cost check derived from the cost map entry. Point the endpoint-support url at gitgot.ai/inference, since gitgot.ai/docs/quickstart serves a repo-analysis placeholder --- .../provider_endpoints_support_backup.json | 2 +- provider_endpoints_support.json | 2 +- .../llms/openai_like/test_gitgot_provider.py | 238 +++++++++--------- 3 files changed, 123 insertions(+), 119 deletions(-) diff --git a/litellm/provider_endpoints_support_backup.json b/litellm/provider_endpoints_support_backup.json index a03be970c53..43d81607593 100644 --- a/litellm/provider_endpoints_support_backup.json +++ b/litellm/provider_endpoints_support_backup.json @@ -2174,7 +2174,7 @@ }, "gitgot": { "display_name": "GitGot (`gitgot`)", - "url": "https://gitgot.ai/docs/quickstart", + "url": "https://gitgot.ai/inference", "endpoints": { "chat_completions": true, "messages": false, diff --git a/provider_endpoints_support.json b/provider_endpoints_support.json index 860c2be0983..eda52bcffa0 100644 --- a/provider_endpoints_support.json +++ b/provider_endpoints_support.json @@ -2445,7 +2445,7 @@ }, "gitgot": { "display_name": "GitGot (`gitgot`)", - "url": "https://gitgot.ai/docs/quickstart", + "url": "https://gitgot.ai/inference", "endpoints": { "chat_completions": true, "messages": false, diff --git a/tests/unit/llms/openai_like/test_gitgot_provider.py b/tests/unit/llms/openai_like/test_gitgot_provider.py index 16ccb802f7f..32ce27436b3 100644 --- a/tests/unit/llms/openai_like/test_gitgot_provider.py +++ b/tests/unit/llms/openai_like/test_gitgot_provider.py @@ -1,137 +1,141 @@ -""" -Tests for GitGot provider configuration and integration. -""" +import json +from pathlib import Path +from typing import Final + +import pytest +import respx import litellm +from litellm.litellm_core_utils.get_llm_provider_logic import get_llm_provider +from litellm.types.utils import Choices, Message, ModelResponse, Usage + +_MODEL: Final = "gitgot/openai/gpt-oss-120b" +_UPSTREAM_MODEL: Final = "openai/gpt-oss-120b" +_DEFAULT_API_BASE: Final = "https://inference.gitgot.ai/v1" +_CHAT_COMPLETION: Final = { + "id": "chatcmpl_gitgot", + "object": "chat.completion", + "created": 1_790_000_000, + "model": _UPSTREAM_MODEL, + "choices": [ + { + "index": 0, + "message": {"role": "assistant", "content": "Hello from GitGot"}, + "finish_reason": "stop", + } + ], + "usage": {"prompt_tokens": 4, "completion_tokens": 3, "total_tokens": 7}, +} -class TestGitGotProviderConfig: - def test_gitgot_in_provider_list(self): - from litellm import LlmProviders +def test_gitgot_is_a_registered_provider(): + assert litellm.LlmProviders.GITGOT.value == "gitgot" + assert "gitgot" in litellm.provider_list + assert "gitgot" in litellm.constants.openai_compatible_providers - assert hasattr(LlmProviders, "GITGOT") - assert LlmProviders.GITGOT.value == "gitgot" - assert "gitgot" in litellm.provider_list - def test_gitgot_json_config_exists(self): - from litellm.llms.openai_like.json_loader import JSONProviderRegistry +def test_gitgot_provider_resolution_keeps_the_vendor_prefix(monkeypatch: pytest.MonkeyPatch): + monkeypatch.setenv("GITGOT_API_KEY", "gitgot-env-key") + monkeypatch.delenv("GITGOT_API_BASE", raising=False) - assert JSONProviderRegistry.exists("gitgot") + model, provider, api_key, api_base = get_llm_provider( + model=_MODEL, + custom_llm_provider=None, + api_base=None, + api_key=None, + ) - gitgot = JSONProviderRegistry.get("gitgot") - assert gitgot is not None - assert gitgot.base_url == "https://inference.gitgot.ai/v1" - assert gitgot.api_key_env == "GITGOT_API_KEY" - assert gitgot.api_base_env == "GITGOT_API_BASE" + assert model == _UPSTREAM_MODEL + assert provider == "gitgot" + assert api_key == "gitgot-env-key" + assert api_base == _DEFAULT_API_BASE - def test_gitgot_in_openai_compatible_providers(self): - from litellm.constants import openai_compatible_providers - assert "gitgot" in openai_compatible_providers +def test_gitgot_provider_keeps_explicit_credentials(monkeypatch: pytest.MonkeyPatch): + monkeypatch.setenv("GITGOT_API_KEY", "gitgot-env-key") + monkeypatch.setenv("GITGOT_API_BASE", "https://gitgot.env.example/v1") - def test_gitgot_in_openai_compatible_endpoints(self): - from litellm.constants import openai_compatible_endpoints + _, provider, api_key, api_base = get_llm_provider( + model=_MODEL, + custom_llm_provider=None, + api_base="https://gitgot.internal.example/v1", + api_key="gitgot-explicit-key", + ) - assert "https://inference.gitgot.ai/v1" in openai_compatible_endpoints + assert provider == "gitgot" + assert api_key == "gitgot-explicit-key" + assert api_base == "https://gitgot.internal.example/v1" - def test_gitgot_provider_resolution(self): - from litellm.litellm_core_utils.get_llm_provider_logic import get_llm_provider - model, provider, api_key, api_base = get_llm_provider( - model="gitgot/openai/gpt-oss-120b", - custom_llm_provider=None, - api_base=None, - api_key=None, +def test_gitgot_api_base_env_overrides_default(monkeypatch: pytest.MonkeyPatch): + monkeypatch.setenv("GITGOT_API_KEY", "gitgot-env-key") + monkeypatch.setenv("GITGOT_API_BASE", "https://gitgot.env.example/v1") + + _, provider, _, api_base = get_llm_provider( + model=_MODEL, + custom_llm_provider=None, + api_base=None, + api_key=None, + ) + + assert provider == "gitgot" + assert api_base == "https://gitgot.env.example/v1" + + +def test_gitgot_is_available_in_add_model_form(): + fields_path = Path(litellm.__file__).parent / "proxy" / "public_endpoints" / "provider_create_fields.json" + providers = json.loads(fields_path.read_text()) + gitgot = next(provider for provider in providers if provider["litellm_provider"] == "gitgot") + + assert gitgot["provider"] == "GITGOT" + assert gitgot["default_model_placeholder"] == _MODEL + assert {field["key"]: field["required"] for field in gitgot["credential_fields"]} == { + "api_base": False, + "api_key": True, + } + + +def test_gitgot_endpoint_support_files_agree(): + backup_path = Path(litellm.__file__).parent / "provider_endpoints_support_backup.json" + root_path = Path(litellm.__file__).parent.parent / "provider_endpoints_support.json" + backup = json.loads(backup_path.read_text())["providers"]["gitgot"] + root = json.loads(root_path.read_text())["providers"]["gitgot"] + + assert backup == root + assert root["endpoints"]["chat_completions"] is True + + +def test_gitgot_chat_completion_request_sends_the_vendor_prefixed_model(): + with respx.mock() as upstream: + route: Final = upstream.post(f"{_DEFAULT_API_BASE}/chat/completions").respond(200, json=_CHAT_COMPLETION) + response: Final = litellm.completion( + model=_MODEL, + messages=[{"role": "user", "content": "Say hello"}], + api_key="gitgot-test-key", ) - # GitGot model ids carry a vendor prefix, so only the leading "gitgot/" - # is stripped and the rest of the path is preserved. - assert model == "openai/gpt-oss-120b" - assert provider == "gitgot" - assert api_base == "https://inference.gitgot.ai/v1" + request: Final = route.calls.last.request + body: Final = json.loads(request.content) + assert route.call_count == 1 + assert request.headers["authorization"] == "Bearer gitgot-test-key" + assert body["model"] == _UPSTREAM_MODEL + assert body["messages"] == [{"role": "user", "content": "Say hello"}] + assert response.choices[0].message.content == "Hello from GitGot" - def test_gitgot_api_base_override(self): - from litellm.litellm_core_utils.get_llm_provider_logic import get_llm_provider - model, provider, api_key, api_base = get_llm_provider( - model="gitgot/openai/gpt-oss-120b", - custom_llm_provider=None, - api_base="https://custom.gitgot.ai/v1", - api_key="gg-test", - ) +def test_gitgot_cost_is_derived_from_its_cost_map_entry(local_model_cost_map): + entry: Final = litellm.model_cost[_MODEL] + response: Final = ModelResponse( + id="chatcmpl-test", + choices=[Choices(finish_reason="stop", index=0, message=Message(content="hello", role="assistant"))], + created=1_790_000_000, + model=_MODEL, + object="chat.completion", + usage=Usage(prompt_tokens=1_000_000, completion_tokens=500_000, total_tokens=1_500_000), + ) - assert provider == "gitgot" - assert api_base == "https://custom.gitgot.ai/v1" - assert api_key == "gg-test" + cost: Final = litellm.completion_cost(completion_response=response) - def test_gitgot_model_prices_registered(self, local_model_cost_map): - from litellm import model_cost - - entry = model_cost["gitgot/openai/gpt-oss-120b"] - assert entry["litellm_provider"] == "gitgot" - assert entry["mode"] == "chat" - # Costs in this file are per token, not per million. A per-million - # figure here would report the provider as a million times dearer than - # it is in every client that reads it. - assert 0 < entry["input_cost_per_token"] < 0.001 - assert 0 < entry["output_cost_per_token"] < 0.001 - assert entry["max_input_tokens"] > 0 - - def test_gitgot_cost_calculation(self, local_model_cost_map): - from litellm import completion_cost - from litellm.types.utils import Choices, Message, ModelResponse, Usage - - response = ModelResponse( - id="chatcmpl-test", - choices=[ - Choices( - finish_reason="stop", - index=0, - message=Message(content="hello", role="assistant"), - ) - ], - created=1234567890, - model="gitgot/openai/gpt-oss-120b", - object="chat.completion", - usage=Usage( - prompt_tokens=1_000_000, - completion_tokens=1_000_000, - total_tokens=2_000_000, - ), - ) - - cost = completion_cost(completion_response=response) - # A million tokens each way should cost dollars, not thousands. - assert 0 < cost < 100 - - def test_gitgot_router_config(self): - from litellm import Router - - router = Router( - model_list=[ - { - "model_name": "gitgot-chat", - "litellm_params": { - "model": "gitgot/openai/gpt-oss-120b", - "api_key": "test-key", - }, - } - ] - ) - - assert len(router.model_list) == 1 - assert router.model_list[0]["model_name"] == "gitgot-chat" - - def test_gitgot_endpoint_support_declared(self): - import json - from pathlib import Path - - support = json.loads( - ( - Path(litellm.__file__).parent.parent - / "provider_endpoints_support.json" - ).read_text() - )["providers"]["gitgot"] - - assert support["endpoints"]["chat_completions"] is True - assert support["endpoints"]["embeddings"] is True + assert entry["litellm_provider"] == "gitgot" + assert cost == pytest.approx(1_000_000 * entry["input_cost_per_token"] + 500_000 * entry["output_cost_per_token"]) + assert 0 < cost < 10 From 89bb6504072a36e7b6eeaa8b0bf94e66e8cef570 Mon Sep 17 00:00:00 2001 From: mateo-berri <277851410+mateo-berri@users.noreply.github.com> Date: Thu, 15 Oct 2026 07:20:23 +0000 Subject: [PATCH 5/6] fix(gitgot): stop advertising embeddings, which GitGot does not serve and the embedding route cannot dispatch --- litellm/llms/openai_like/providers.json | 2 +- litellm/provider_endpoints_support_backup.json | 2 +- provider_endpoints_support.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/litellm/llms/openai_like/providers.json b/litellm/llms/openai_like/providers.json index 0dd349b8577..17fa14079f6 100644 --- a/litellm/llms/openai_like/providers.json +++ b/litellm/llms/openai_like/providers.json @@ -234,6 +234,6 @@ "base_url": "https://inference.gitgot.ai/v1", "api_key_env": "GITGOT_API_KEY", "api_base_env": "GITGOT_API_BASE", - "supported_endpoints": ["/v1/chat/completions", "/v1/embeddings"] + "supported_endpoints": ["/v1/chat/completions"] } } diff --git a/litellm/provider_endpoints_support_backup.json b/litellm/provider_endpoints_support_backup.json index 43d81607593..b2b7518d820 100644 --- a/litellm/provider_endpoints_support_backup.json +++ b/litellm/provider_endpoints_support_backup.json @@ -2179,7 +2179,7 @@ "chat_completions": true, "messages": false, "responses": false, - "embeddings": true, + "embeddings": false, "image_generations": false, "audio_transcriptions": false, "audio_speech": false, diff --git a/provider_endpoints_support.json b/provider_endpoints_support.json index eda52bcffa0..11a62f499c9 100644 --- a/provider_endpoints_support.json +++ b/provider_endpoints_support.json @@ -2450,7 +2450,7 @@ "chat_completions": true, "messages": false, "responses": false, - "embeddings": true, + "embeddings": false, "image_generations": false, "audio_transcriptions": false, "audio_speech": false, From 0c327e5f63e567519f6c7cf7c6434deb72b12559 Mon Sep 17 00:00:00 2001 From: mateo-berri <277851410+mateo-berri@users.noreply.github.com> Date: Wed, 28 Oct 2026 00:49:19 -0700 Subject: [PATCH 6/6] chore(gitgot): regenerate provider_endpoints_support.json from the cost map --- .../provider_endpoints_support_backup.json | 19 ++++++++++++++----- provider_endpoints_support.json | 19 ++++++++++++++----- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/litellm/provider_endpoints_support_backup.json b/litellm/provider_endpoints_support_backup.json index 2325e6f9ff6..6b2049af003 100644 --- a/litellm/provider_endpoints_support_backup.json +++ b/litellm/provider_endpoints_support_backup.json @@ -3609,16 +3609,25 @@ "url": "https://gitgot.ai/inference", "endpoints": { "chat_completions": true, - "messages": false, - "responses": false, + "responses": true, + "text_completion": true, "embeddings": false, "image_generations": false, + "image_edits": false, "audio_transcriptions": false, "audio_speech": false, - "moderations": false, - "batches": false, "rerank": false, - "a2a": false + "ocr": false, + "search": false, + "moderations": false, + "realtime": false, + "video_generations": false, + "batches": false, + "messages": true, + "interactions": true, + "systemone": false, + "a2a": true, + "generateContent": true } }, "scx-ai": { diff --git a/provider_endpoints_support.json b/provider_endpoints_support.json index 2325e6f9ff6..6b2049af003 100644 --- a/provider_endpoints_support.json +++ b/provider_endpoints_support.json @@ -3609,16 +3609,25 @@ "url": "https://gitgot.ai/inference", "endpoints": { "chat_completions": true, - "messages": false, - "responses": false, + "responses": true, + "text_completion": true, "embeddings": false, "image_generations": false, + "image_edits": false, "audio_transcriptions": false, "audio_speech": false, - "moderations": false, - "batches": false, "rerank": false, - "a2a": false + "ocr": false, + "search": false, + "moderations": false, + "realtime": false, + "video_generations": false, + "batches": false, + "messages": true, + "interactions": true, + "systemone": false, + "a2a": true, + "generateContent": true } }, "scx-ai": {