feat: add thinking and reasoning parameter support for GitHub Copilot provider

- Add dynamic parameter support for anthropic models through GitHub Copilot
- Include thinking parameter for anthropic model compatibility
- Support reasoning_effort parameter for both anthropic and reasoning models
- Update test coverage for parameter validation logic
- Ensure proper parameter filtering based on model type
This commit is contained in:
Tim Elfrink 2025-08-17 17:51:58 +02:00
parent d92092f040
commit 0febdf8c1c
2 changed files with 12 additions and 6 deletions

View file

@ -82,14 +82,18 @@ class GithubCopilotConfig(OpenAIConfig):
Get supported OpenAI parameters for GitHub Copilot.
For Anthropic models (like claude-sonnet-4), includes thinking and reasoning parameters.
For other models, returns standard OpenAI parameters.
For other models, returns standard OpenAI parameters (which may include reasoning_effort for o-series models).
"""
# Get base OpenAI parameters
base_params = super().get_supported_openai_params(model)
# Add thinking and reasoning parameters for Anthropic Claude models
# Add Claude-specific parameters for Anthropic models
if "claude" in model.lower():
base_params.extend(["thinking", "reasoning_effort"])
if "thinking" not in base_params:
base_params.append("thinking")
# reasoning_effort is not included by parent for Claude models, so add it
if "reasoning_effort" not in base_params:
base_params.append("reasoning_effort")
return base_params

View file

@ -378,15 +378,17 @@ def test_get_supported_openai_params_claude_model():
assert "thinking" in supported_params_claude
assert "reasoning_effort" in supported_params_claude
# Test non-Claude model doesn't include thinking/reasoning parameters
# Test non-Claude model doesn't include thinking parameters but may include reasoning_effort
supported_params_gpt = config.get_supported_openai_params("gpt-4o")
assert "thinking" not in supported_params_gpt
# gpt-4o should NOT have reasoning_effort (not a reasoning model)
assert "reasoning_effort" not in supported_params_gpt
# Test with other non-Claude models
# Test O-series reasoning models include reasoning_effort but not thinking
supported_params_o3 = config.get_supported_openai_params("o3-mini")
assert "thinking" not in supported_params_o3
assert "reasoning_effort" not in supported_params_o3
# o3-mini should have reasoning_effort (it's an O-series reasoning model)
assert "reasoning_effort" in supported_params_o3
def test_get_supported_openai_params_case_insensitive():