Add ANTHROPIC_BASE_URL support for Claude account subscription

- AnthropicClient now uses base_url param or ANTHROPIC_BASE_URL env var
  to connect to custom endpoints (subscription proxies, self-hosted, etc.)
- Add ANTHROPIC_BASE_URL to .env.example
- Document custom base URL usage in README

https://claude.ai/code/session_01AbNbJYL7gHy47BQ9BJJTAv
This commit is contained in:
Claude 2026-03-27 03:52:43 +00:00
parent eb2e82305c
commit b3123122ae
No known key found for this signature in database
3 changed files with 18 additions and 1 deletions

View File

@ -1,5 +1,6 @@
# LLM Providers (set the one you use)
ANTHROPIC_API_KEY=
ANTHROPIC_BASE_URL=
OPENAI_API_KEY=
GOOGLE_API_KEY=
XAI_API_KEY=

View File

@ -130,6 +130,11 @@ export OPENROUTER_API_KEY=... # OpenRouter
export ALPHA_VANTAGE_API_KEY=... # Alpha Vantage
```
To use a Claude account subscription (or proxy) instead of a direct API key, set a custom base URL:
```bash
export ANTHROPIC_BASE_URL=https://your-custom-endpoint.example.com
```
For local models, configure Ollama with `llm_provider: "ollama"` in your config.
Alternatively, copy `.env.example` to `.env` and fill in your keys:

View File

@ -1,3 +1,4 @@
import os
from typing import Any, Optional
from langchain_anthropic import ChatAnthropic
@ -24,7 +25,12 @@ class NormalizedChatAnthropic(ChatAnthropic):
class AnthropicClient(BaseLLMClient):
"""Client for Anthropic Claude models."""
"""Client for Anthropic Claude models.
Supports custom base URLs via the base_url parameter or ANTHROPIC_BASE_URL
environment variable, enabling use with Claude account subscriptions
or proxy endpoints instead of direct API key access.
"""
def __init__(self, model: str, base_url: Optional[str] = None, **kwargs):
super().__init__(model, base_url, **kwargs)
@ -33,6 +39,11 @@ class AnthropicClient(BaseLLMClient):
"""Return configured ChatAnthropic instance."""
llm_kwargs = {"model": self.model}
# Resolve base URL: explicit param > env var > default Anthropic API
base_url = self.base_url or os.environ.get("ANTHROPIC_BASE_URL")
if base_url:
llm_kwargs["anthropic_api_url"] = base_url
for key in _PASSTHROUGH_KWARGS:
if key in self.kwargs:
llm_kwargs[key] = self.kwargs[key]