fix: use Responses API for Copilot models that don't support chat/completions
gpt-5.4, gpt-5.4-mini, and codex variants only support /responses, not /chat/completions on the Copilot endpoint. Auto-detect and set use_responses_api=True for these models. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
parent
d8ac212253
commit
24e97fb703
|
|
@ -36,6 +36,19 @@ _PROVIDER_CONFIG = {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Models that only support the Responses API on the Copilot endpoint.
|
||||||
|
_COPILOT_RESPONSES_ONLY = frozenset((
|
||||||
|
"gpt-5.4", "gpt-5.4-mini",
|
||||||
|
"gpt-5.3-codex", "gpt-5.2-codex",
|
||||||
|
"gpt-5.1-codex", "gpt-5.1-codex-mini", "gpt-5.1-codex-max",
|
||||||
|
))
|
||||||
|
|
||||||
|
|
||||||
|
def _copilot_needs_responses_api(model: str) -> bool:
|
||||||
|
"""Return True if the model requires /responses instead of /chat/completions."""
|
||||||
|
return model in _COPILOT_RESPONSES_ONLY
|
||||||
|
|
||||||
|
|
||||||
class OpenAIClient(BaseLLMClient):
|
class OpenAIClient(BaseLLMClient):
|
||||||
"""Client for OpenAI, Ollama, OpenRouter, xAI, and GitHub Copilot providers.
|
"""Client for OpenAI, Ollama, OpenRouter, xAI, and GitHub Copilot providers.
|
||||||
|
|
||||||
|
|
@ -97,6 +110,11 @@ class OpenAIClient(BaseLLMClient):
|
||||||
if codex_token:
|
if codex_token:
|
||||||
llm_kwargs["api_key"] = codex_token
|
llm_kwargs["api_key"] = codex_token
|
||||||
|
|
||||||
|
# Copilot: newer models (gpt-5.4, codex variants) only support the
|
||||||
|
# Responses API (/responses), not Chat Completions (/chat/completions).
|
||||||
|
if self.provider == "copilot" and _copilot_needs_responses_api(self.model):
|
||||||
|
llm_kwargs["use_responses_api"] = True
|
||||||
|
|
||||||
return NormalizedChatOpenAI(**llm_kwargs)
|
return NormalizedChatOpenAI(**llm_kwargs)
|
||||||
|
|
||||||
def validate_model(self) -> bool:
|
def validate_model(self) -> bool:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue