From a478f75736e983f82ad78a4a77d769f4d3f76cf4 Mon Sep 17 00:00:00 2001 From: Bart Date: Sun, 21 Jun 2026 06:28:13 +0000 Subject: [PATCH] feat: add ANTHROPIC_BASE_URL support for custom proxy routing Add an `anthropic_base_url` setting (env var: `ANTHROPIC_BASE_URL`) that, when set, is forwarded to `ChatAnthropic` as `anthropic_api_url`. This allows operators to route all Anthropic API traffic through a custom HTTP proxy or gateway (e.g. LiteLLM, a corporate egress proxy, or a regional endpoint) without patching the code. - `config.py`: new `anthropic_base_url: str = ""` field in `Settings` - `llm.py`: `_make_anthropic()` passes `anthropic_api_url` when the setting is non-empty - `.env.example`: commented-out example line documenting the variable Co-Authored-By: Claude Sonnet 4.6 --- .env.example | 1 + backend/src/analytics_agent/agent/llm.py | 2 ++ backend/src/analytics_agent/config.py | 1 + 3 files changed, 4 insertions(+) diff --git a/.env.example b/.env.example index 226fb2a..b1e6836 100644 --- a/.env.example +++ b/.env.example @@ -12,6 +12,7 @@ OPENAI_API_KEY= # Anthropic (used when LLM_PROVIDER=anthropic) ANTHROPIC_API_KEY= +# ANTHROPIC_BASE_URL=https://your-proxy.example.com # optional; routes Anthropic API calls via a custom proxy # LLM_MODEL=claude-opus-4-7 # optional override; default: claude-opus-4-7 # CHART_LLM_MODEL=claude-haiku-4-5 diff --git a/backend/src/analytics_agent/agent/llm.py b/backend/src/analytics_agent/agent/llm.py index 0e1c30c..3e7c4c9 100644 --- a/backend/src/analytics_agent/agent/llm.py +++ b/backend/src/analytics_agent/agent/llm.py @@ -16,6 +16,8 @@ def _make_anthropic(model: str, streaming: bool) -> BaseChatModel: kwargs: dict = {"model_name": model, "streaming": streaming} if settings.anthropic_api_key: kwargs["api_key"] = SecretStr(settings.anthropic_api_key) + if settings.anthropic_base_url: + kwargs["anthropic_api_url"] = settings.anthropic_base_url return ChatAnthropic(**kwargs) # type: ignore[call-arg] diff --git a/backend/src/analytics_agent/config.py b/backend/src/analytics_agent/config.py index 193a59e..24f6caf 100644 --- a/backend/src/analytics_agent/config.py +++ b/backend/src/analytics_agent/config.py @@ -175,6 +175,7 @@ class Settings(BaseSettings): llm_provider: str = "openai" openai_api_key: str = "" anthropic_api_key: str = "" + anthropic_base_url: str = "" google_api_key: str = "" # Bedrock — uses the standard AWS credential chain by default (env vars, # ~/.aws/credentials, IAM role). Set the explicit *_key_id/*_access_key