From 462a7404244691592be88d9bf85f4409e97d9814 Mon Sep 17 00:00:00 2001 From: mateo-berri <277851410+mateo-berri@users.noreply.github.com> Date: Tue, 23 Jun 2026 03:20:35 +0000 Subject: [PATCH] fix(cloudflare): treat empty api_base as unset when resolving URL --- litellm/llms/cloudflare/chat/transformation.py | 2 +- .../test_cloudflare_transformation.py | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/litellm/llms/cloudflare/chat/transformation.py b/litellm/llms/cloudflare/chat/transformation.py index bccfb321539..ec73ff8818d 100644 --- a/litellm/llms/cloudflare/chat/transformation.py +++ b/litellm/llms/cloudflare/chat/transformation.py @@ -44,7 +44,7 @@ class CloudflareChatConfig(OpenAIGPTConfig): @staticmethod def _resolve_api_base(api_base: Optional[str]) -> str: - if api_base is None: + if not api_base: account_id = get_secret_str("CLOUDFLARE_ACCOUNT_ID") if account_id is None: raise ValueError( diff --git a/tests/test_litellm/llms/cloudflare/test_cloudflare_transformation.py b/tests/test_litellm/llms/cloudflare/test_cloudflare_transformation.py index b49365d5e4f..2e2d01eb12f 100644 --- a/tests/test_litellm/llms/cloudflare/test_cloudflare_transformation.py +++ b/tests/test_litellm/llms/cloudflare/test_cloudflare_transformation.py @@ -68,6 +68,24 @@ def test_get_complete_url_is_idempotent_for_full_base(): ) +def test_get_complete_url_falls_back_to_account_id_when_base_is_empty(monkeypatch): + monkeypatch.setenv("CLOUDFLARE_ACCOUNT_ID", "acct") + config = CloudflareChatConfig() + + url = config.get_complete_url( + api_base="", + api_key="cf-key", + model="@cf/meta/llama-2-7b-chat-int8", + optional_params={}, + litellm_params={}, + ) + + assert ( + url + == "https://api.cloudflare.com/client/v4/accounts/acct/ai/v1/chat/completions" + ) + + def test_get_complete_url_raises_when_account_id_and_base_missing(monkeypatch): monkeypatch.delenv("CLOUDFLARE_ACCOUNT_ID", raising=False) config = CloudflareChatConfig()