From dd8f3624d488b4a7214f88d7f0ff490c1d78a9ae Mon Sep 17 00:00:00 2001 From: ronodhirSoumik Date: Sun, 19 Apr 2026 01:33:32 +0600 Subject: [PATCH] fix(cloudflare): handle API errors and missing response keys gracefully Signed-off-by: Soumik Sarker --- .../llms/cloudflare/chat/transformation.py | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/litellm/llms/cloudflare/chat/transformation.py b/litellm/llms/cloudflare/chat/transformation.py index 9e59782bf73..997509909a4 100644 --- a/litellm/llms/cloudflare/chat/transformation.py +++ b/litellm/llms/cloudflare/chat/transformation.py @@ -147,9 +147,29 @@ class CloudflareChatConfig(BaseConfig): ) -> ModelResponse: completion_response = raw_response.json() - model_response.choices[0].message.content = completion_response["result"][ # type: ignore - "response" - ] + if not completion_response.get("success", True): + errors = completion_response.get("errors", []) + raise CloudflareError( + status_code=raw_response.status_code, + message=f"Cloudflare Error: {errors}", + ) + + result = completion_response.get("result", {}) + if result is None: + raise CloudflareError( + status_code=raw_response.status_code, + message=f"Cloudflare Error: result is None. Response: {completion_response}", + ) + + if "response" in result: + model_response.choices[0].message.content = result["response"] + elif isinstance(result, str): + model_response.choices[0].message.content = result + else: + raise CloudflareError( + status_code=raw_response.status_code, + message=f"Cloudflare Error: 'response' key missing from result. Response: {completion_response}", + ) prompt_tokens = litellm.utils.get_token_count(messages=messages, model=model) completion_tokens = len(