fix(azure): add logprobs support for Azure OpenAI GPT-5.2 model (#18856)

* fix(azure): add logprobs support for Azure OpenAI GPT-5 models

Azure OpenAI GPT-5 models (including gpt-5.2) support logprobs
parameters, unlike OpenAI's GPT-5 reasoning models. This fix
overrides the parent class restriction to enable logprobs for Azure.

Changes:
- Override get_supported_openai_params() in AzureOpenAIGPT5Config
- Add "logprobs" and "top_logprobs" to supported params
- Add comprehensive tests for logprobs functionality

Testing:
- Verified with direct Azure API calls to gpt-5.2
- API version: 2025-01-01-preview
- Successfully returns logprobs data

Related: #7974, #4022

* refactor: restrict logprobs support to gpt-5.2 only

Only gpt-5.2 has been verified to support logprobs on Azure.
Other gpt-5 variants (gpt-5, gpt-5.1) have not been tested.

Changes:
- Add conditional check for is_model_gpt_5_2_model()
- Update tests to be specific to gpt-5.2
- Add negative tests for gpt-5 and gpt-5.1
- Update documentation to reflect gpt-5.2 specificity
This commit is contained in:
Andrés
2026-01-09 22:57:50 +05:30
committed by GitHub
parent 153fd7ad0a
commit 9768eca33e
2 changed files with 77 additions and 1 deletions
@@ -25,7 +25,24 @@ class AzureOpenAIGPT5Config(AzureOpenAIConfig, OpenAIGPT5Config):
return "gpt-5" in model or "gpt5_series" in model
def get_supported_openai_params(self, model: str) -> List[str]:
return OpenAIGPT5Config.get_supported_openai_params(self, model=model)
"""Get supported parameters for Azure OpenAI GPT-5 models.
Azure OpenAI GPT-5.2 models support logprobs, unlike OpenAI's GPT-5.
This overrides the parent class to add logprobs support back for gpt-5.2.
Reference:
- Tested with Azure OpenAI GPT-5.2 (api-version: 2025-01-01-preview)
- Azure returns logprobs successfully despite Microsoft's general
documentation stating reasoning models don't support it.
"""
params = OpenAIGPT5Config.get_supported_openai_params(self, model=model)
# Only gpt-5.2 has been verified to support logprobs on Azure
if self.is_model_gpt_5_2_model(model):
azure_supported_params = ["logprobs", "top_logprobs"]
params.extend(azure_supported_params)
return params
def map_openai_params(
self,
@@ -204,3 +204,62 @@ def test_azure_gpt5_reasoning_effort_none_dropped(config: AzureOpenAIGPT5Config)
)
assert "reasoning_effort" not in params or params.get("reasoning_effort") != "none"
# Logprobs support tests for Azure GPT-5.2
def test_azure_gpt5_2_supports_logprobs(config: AzureOpenAIGPT5Config):
"""Test that Azure GPT-5.2 models support logprobs parameters.
Only Azure OpenAI GPT-5.2 supports logprobs, unlike OpenAI's GPT-5 or Azure's gpt-5/gpt-5.1.
Tested with gpt-5.2 on api-version 2025-01-01-preview.
"""
supported_params = config.get_supported_openai_params(model="gpt-5.2")
assert "logprobs" in supported_params
assert "top_logprobs" in supported_params
def test_azure_gpt5_2_with_prefix_supports_logprobs(config: AzureOpenAIGPT5Config):
"""Test that Azure GPT-5.2 with azure/ prefix supports logprobs parameters."""
supported_params = config.get_supported_openai_params(model="azure/gpt-5.2")
assert "logprobs" in supported_params
assert "top_logprobs" in supported_params
def test_azure_gpt5_2_series_supports_logprobs(config: AzureOpenAIGPT5Config):
"""Test that Azure GPT-5.2 with gpt5_series prefix supports logprobs."""
supported_params = config.get_supported_openai_params(model="gpt5_series/gpt-5.2")
assert "logprobs" in supported_params
assert "top_logprobs" in supported_params
def test_azure_gpt5_2_logprobs_params_passed_through(config: AzureOpenAIGPT5Config):
"""Test that logprobs parameters are correctly passed through to the API for gpt-5.2."""
params = config.map_openai_params(
non_default_params={"logprobs": True, "top_logprobs": 5},
optional_params={},
model="azure/gpt-5.2",
drop_params=False,
api_version="2025-01-01-preview",
)
assert params["logprobs"] is True
assert params["top_logprobs"] == 5
def test_azure_gpt5_base_does_not_support_logprobs(config: AzureOpenAIGPT5Config):
"""Test that Azure GPT-5 (non-5.2) does not support logprobs parameters.
Only gpt-5.2 has been verified to support logprobs on Azure.
"""
supported_params = config.get_supported_openai_params(model="gpt-5")
assert "logprobs" not in supported_params
assert "top_logprobs" not in supported_params
def test_azure_gpt5_1_does_not_support_logprobs(config: AzureOpenAIGPT5Config):
"""Test that Azure GPT-5.1 does not support logprobs parameters.
Only gpt-5.2 has been verified to support logprobs on Azure.
"""
supported_params = config.get_supported_openai_params(model="gpt-5.1")
assert "logprobs" not in supported_params
assert "top_logprobs" not in supported_params