From 166f49e1d063a296eb1d2430acf54a1a888c8463 Mon Sep 17 00:00:00 2001 From: PRABHU KIRAN VANDRANKI <72809214+VANDRANKI@users.noreply.github.com> Date: Tue, 2 Jun 2026 10:33:36 -0400 Subject: [PATCH] fix(dashscope): improve get_complete_url guard to prevent double-path append The endswith check could miss URLs with trailing slashes or /chat/completions already present after a query string. Align with OpenAIGPTConfig behavior: strip trailing slash and check if endpoint is anywhere in the URL. Fixes #28429 --- litellm/llms/dashscope/chat/transformation.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/litellm/llms/dashscope/chat/transformation.py b/litellm/llms/dashscope/chat/transformation.py index d022f9da210..7c38d34bb4f 100644 --- a/litellm/llms/dashscope/chat/transformation.py +++ b/litellm/llms/dashscope/chat/transformation.py @@ -73,12 +73,16 @@ class DashScopeChatConfig(OpenAIGPTConfig): stream: Optional[bool] = None, ) -> str: """ - If api_base is not provided, use the default DashScope /chat/completions endpoint. + If api_base is not provided, use the default DashScope base URL. + Appends /chat/completions only when not already present in the URL, + matching the behavior of OpenAIGPTConfig.get_complete_url. """ if not api_base: api_base = "https://dashscope.aliyuncs.com/compatible-mode/v1" - if not api_base.endswith("/chat/completions"): - api_base = f"{api_base}/chat/completions" + endpoint = "chat/completions" + api_base = api_base.rstrip("/") + if endpoint not in api_base: + api_base = f"{api_base}/{endpoint}" return api_base