From 939991cb610afe2f3d4d5239a154b7da64b7cb53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lodri=20P=C3=A9ter?= <267054113+peterlodri-sec@users.noreply.github.com> Date: Thu, 25 Jun 2026 08:04:28 +0200 Subject: [PATCH] fix(anthropic): remove dead endpoint method, derive path prefixes from constant MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - drop get_anthropic_count_tokens_endpoint (no callers since _build_count_tokens_url took over) - derive /v1/messages and /v1 prefixes from _COUNT_TOKENS_PATH via rsplit instead of independent string literals — path changes now propagate automatically Co-Authored-By: Claude Sonnet 4.6 (1M context) --- litellm/llms/anthropic/count_tokens/transformation.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/litellm/llms/anthropic/count_tokens/transformation.py b/litellm/llms/anthropic/count_tokens/transformation.py index e9d33ac2b15..5048a098689 100644 --- a/litellm/llms/anthropic/count_tokens/transformation.py +++ b/litellm/llms/anthropic/count_tokens/transformation.py @@ -22,9 +22,6 @@ class AnthropicCountTokensConfig: _COUNT_TOKENS_PATH: str = "/v1/messages/count_tokens" _DEFAULT_ENDPOINT: str = f"https://api.anthropic.com{_COUNT_TOKENS_PATH}" - def get_anthropic_count_tokens_endpoint(self) -> str: - return self._DEFAULT_ENDPOINT - def _build_count_tokens_url(self, api_base: Optional[str]) -> str: """Return the full count_tokens URL, appending the path when a custom base is provided.""" if not api_base: @@ -32,9 +29,11 @@ class AnthropicCountTokensConfig: base = api_base.rstrip("/") if base.endswith(self._COUNT_TOKENS_PATH): return base - if base.endswith("/v1/messages"): + messages_prefix = self._COUNT_TOKENS_PATH.rsplit("/count_tokens", 1)[0] + if base.endswith(messages_prefix): return f"{base}/count_tokens" - if base.endswith("/v1"): + v1_prefix = messages_prefix.rsplit("/messages", 1)[0] + if base.endswith(v1_prefix): return f"{base}/messages/count_tokens" return f"{base}{self._COUNT_TOKENS_PATH}"