From 92f2ff3a335ab619253e9442f91444017b237a3b Mon Sep 17 00:00:00 2001 From: outlook84 <96007761+outlook84@users.noreply.github.com> Date: Sat, 23 May 2026 19:34:02 +0800 Subject: [PATCH] test: Add test to ensure responses API is used regardless of circuit breaker state --- nanobot/providers/openai_compat_provider.py | 4 +++- tests/providers/test_responses_circuit_breaker.py | 9 +++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/nanobot/providers/openai_compat_provider.py b/nanobot/providers/openai_compat_provider.py index 582a431e4..5cc7431fb 100644 --- a/nanobot/providers/openai_compat_provider.py +++ b/nanobot/providers/openai_compat_provider.py @@ -740,7 +740,9 @@ class OpenAICompatProvider(LLMProvider): if self._spec and self._spec.name not in ("openai", "github_copilot"): return False if self._api_type == "responses": - return self._responses_circuit_allows_probe(model, reasoning_effort) + # Explicit configuration means Responses is mandatory; do not + # consult the circuit breaker or fall back to Chat Completions. + return True if self._spec is None or self._spec.name != "github_copilot": if not _is_direct_openai_base(self._effective_base): return False diff --git a/tests/providers/test_responses_circuit_breaker.py b/tests/providers/test_responses_circuit_breaker.py index ed07ca2e8..ae6eb93a1 100644 --- a/tests/providers/test_responses_circuit_breaker.py +++ b/tests/providers/test_responses_circuit_breaker.py @@ -39,6 +39,15 @@ def test_api_type_responses_forces_responses_for_openai(provider): assert provider._should_use_responses_api("gpt-4o", None) is True +def test_api_type_responses_ignores_circuit_breaker(provider): + provider.default_model = "gpt-4o" + provider._api_type = "responses" + provider._responses_failures = {"gpt-4o|gpt-4o|": _RESPONSES_FAILURE_THRESHOLD} + provider._responses_tripped_at = {"gpt-4o|gpt-4o|": 0.0} + + assert provider._should_use_responses_api("gpt-4o", None) is True + + def test_api_type_responses_does_not_force_non_openai(provider): provider._spec = type("Spec", (), {"name": "custom"})() provider._api_type = "responses"