From 603af3f16d07e13f17e898de1ef27155e069ec93 Mon Sep 17 00:00:00 2001 From: octo-patch Date: Mon, 20 Apr 2026 11:53:43 +0800 Subject: [PATCH] fix: raise descriptive error when API returns empty choices list (fixes #415) --- src/cai/sdk/agents/models/openai_chatcompletions.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/cai/sdk/agents/models/openai_chatcompletions.py b/src/cai/sdk/agents/models/openai_chatcompletions.py index 8931edd63..6a22287b0 100644 --- a/src/cai/sdk/agents/models/openai_chatcompletions.py +++ b/src/cai/sdk/agents/models/openai_chatcompletions.py @@ -721,6 +721,16 @@ async def get_response( raise + # Guard against empty choices list which can occur with some API providers + # (e.g. Gemini via OpenAI-compatible endpoint) due to content filtering or + # transient API errors. Raise a clear error instead of an obscure IndexError. + if not response.choices: + raise ValueError( + f"Model '{self.model}' returned a response with no choices. " + "This may be caused by content filtering, rate limiting, or an " + "API compatibility issue with the provider." + ) + if _debug.DONT_LOG_MODEL_DATA: logger.debug("Received model response") else: