From 3192c49eb3b782f20e672fc1e8b80cdd53bb8da8 Mon Sep 17 00:00:00 2001 From: derrik-fleming Date: Sat, 18 Jul 2026 20:16:38 -0400 Subject: [PATCH] feat(github_copilot): add gpt-5.6 luna, terra, sol --- ...odel_prices_and_context_window_backup.json | 48 +++++++++++++++++++ model_prices_and_context_window.json | 48 +++++++++++++++++++ ...github_copilot_responses_transformation.py | 39 +++++++++++++++ 3 files changed, 135 insertions(+) diff --git a/litellm/model_prices_and_context_window_backup.json b/litellm/model_prices_and_context_window_backup.json index 951c114b0a9..1c98a4d17c0 100644 --- a/litellm/model_prices_and_context_window_backup.json +++ b/litellm/model_prices_and_context_window_backup.json @@ -21484,6 +21484,54 @@ "supports_response_schema": true, "supports_vision": true }, + "github_copilot/gpt-5.6-luna": { + "litellm_provider": "github_copilot", + "max_input_tokens": 128000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "responses", + "input_cost_per_token": 0.000001, + "output_cost_per_token": 0.000006, + "supported_endpoints": [ + "/v1/responses" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_response_schema": true, + "supports_vision": true + }, + "github_copilot/gpt-5.6-terra": { + "litellm_provider": "github_copilot", + "max_input_tokens": 128000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "responses", + "input_cost_per_token": 0.0000025, + "output_cost_per_token": 0.000015, + "supported_endpoints": [ + "/v1/responses" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_response_schema": true, + "supports_vision": true + }, + "github_copilot/gpt-5.6-sol": { + "litellm_provider": "github_copilot", + "max_input_tokens": 128000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "responses", + "input_cost_per_token": 0.000005, + "output_cost_per_token": 0.000015, + "supported_endpoints": [ + "/v1/responses" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_response_schema": true, + "supports_vision": true + }, "github_copilot/mai-code-1-flash": { "cache_read_input_token_cost": 7.5e-08, "input_cost_per_token": 7.5e-07, diff --git a/model_prices_and_context_window.json b/model_prices_and_context_window.json index 951c114b0a9..1c98a4d17c0 100644 --- a/model_prices_and_context_window.json +++ b/model_prices_and_context_window.json @@ -21484,6 +21484,54 @@ "supports_response_schema": true, "supports_vision": true }, + "github_copilot/gpt-5.6-luna": { + "litellm_provider": "github_copilot", + "max_input_tokens": 128000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "responses", + "input_cost_per_token": 0.000001, + "output_cost_per_token": 0.000006, + "supported_endpoints": [ + "/v1/responses" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_response_schema": true, + "supports_vision": true + }, + "github_copilot/gpt-5.6-terra": { + "litellm_provider": "github_copilot", + "max_input_tokens": 128000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "responses", + "input_cost_per_token": 0.0000025, + "output_cost_per_token": 0.000015, + "supported_endpoints": [ + "/v1/responses" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_response_schema": true, + "supports_vision": true + }, + "github_copilot/gpt-5.6-sol": { + "litellm_provider": "github_copilot", + "max_input_tokens": 128000, + "max_output_tokens": 128000, + "max_tokens": 128000, + "mode": "responses", + "input_cost_per_token": 0.000005, + "output_cost_per_token": 0.000015, + "supported_endpoints": [ + "/v1/responses" + ], + "supports_function_calling": true, + "supports_parallel_function_calling": true, + "supports_response_schema": true, + "supports_vision": true + }, "github_copilot/mai-code-1-flash": { "cache_read_input_token_cost": 7.5e-08, "input_cost_per_token": 7.5e-07, diff --git a/tests/test_litellm/llms/github_copilot/responses/test_github_copilot_responses_transformation.py b/tests/test_litellm/llms/github_copilot/responses/test_github_copilot_responses_transformation.py index 174efceb499..d4a9c2f5e98 100644 --- a/tests/test_litellm/llms/github_copilot/responses/test_github_copilot_responses_transformation.py +++ b/tests/test_litellm/llms/github_copilot/responses/test_github_copilot_responses_transformation.py @@ -38,6 +38,45 @@ def use_local_model_cost_map(monkeypatch: pytest.MonkeyPatch): class TestGithubCopilotResponsesAPITransformation: """Test GitHub Copilot Responses API configuration and transformations""" + @pytest.mark.parametrize( + "model,input_cost_per_token,output_cost_per_token", + [ + ("github_copilot/gpt-5.6-luna", 0.000001, 0.000006), + ("github_copilot/gpt-5.6-terra", 0.0000025, 0.000015), + ("github_copilot/gpt-5.6-sol", 0.000005, 0.000015), + ], + ) + def test_github_copilot_gpt_5_6_model_catalog_metadata( + self, + model, + input_cost_per_token, + output_cost_per_token, + ): + """Validate local catalog metadata and native Responses config for + newly added GitHub Copilot gpt-5.6 models.""" + assert model in litellm.model_cost + + model_info = litellm.model_cost[model] + assert model_info["litellm_provider"] == "github_copilot" + assert model_info["mode"] == "responses" + assert "/v1/responses" in model_info["supported_endpoints"] + assert model_info["max_input_tokens"] == 128000 + assert model_info["max_output_tokens"] == 128000 + assert model_info["max_tokens"] == 128000 + assert model_info["input_cost_per_token"] == input_cost_per_token + assert model_info["output_cost_per_token"] == output_cost_per_token + assert model_info["supports_function_calling"] is True + assert model_info["supports_parallel_function_calling"] is True + assert model_info["supports_response_schema"] is True + assert model_info["supports_vision"] is True + + config = ProviderConfigManager.get_provider_responses_api_config( + model=model, + provider=LlmProviders.GITHUB_COPILOT, + ) + assert isinstance(config, GithubCopilotResponsesAPIConfig) + assert config.custom_llm_provider == LlmProviders.GITHUB_COPILOT + def test_github_copilot_provider_config_registration(self): """Test that GitHub Copilot provider returns the native Responses API config for a Responses-capable catalog model. Exercises the full stack: