VectifyAI/PageIndex · error · PageIndexAPIError
The Anthropic backend is not configured: {exc}
Error message
The Anthropic backend is not configured: {exc} What it means
Constructing the Anthropic client from your chat_backend/backend settings raised TypeError, meaning the backend dict contains arguments the Anthropic constructor doesn't accept (or invalid types for it). _anthropic_client() wraps the failure so you see which configuration is broken rather than a raw SDK traceback.
Source
Thrown at pageindex/local_chat.py:908
"""The backend client — the seam tests replace with a fake transport.
One client per backend: each construction pays ~45 ms of SSL-context
build and a cold connection pool. A backend whose values defeat
hashing constructs per call, as before."""
import anthropic
kwargs = _sdk_backend(backend)
try:
key = tuple(sorted(
(k, tuple(sorted(v.items())) if isinstance(v, dict) else v)
for k, v in kwargs.items()))
hash(key)
except TypeError:
key = None
if key in _ANTHROPIC_CLIENTS:
return _ANTHROPIC_CLIENTS[key]
try:
client = anthropic.Anthropic(**kwargs)
except TypeError as exc:
raise PageIndexAPIError(
f"The Anthropic backend is not configured: {exc}") from exc
if key is not None and len(_ANTHROPIC_CLIENTS) < 8:
# ponytail: cache capped at 8 backends; the tail constructs per call.
# setdefault: never evict a client another thread may already hold.
client = _ANTHROPIC_CLIENTS.setdefault(key, client)
return client
def _anthropic_system(client, extra_system, block: Optional[str]) -> list[dict]:
"""System blocks: cache_control marks the stable managed prefix only
(the API allows 4 breakpoints total — the varying doc block and caller
blocks must not consume the budget); the doc block and caller system
content follow as their own blocks."""
blocks = [{"type": "text",
"text": CHAT_HEADER + "\n\n" + _base_instructions(client),
"cache_control": {"type": "ephemeral"}}]
if block:
blocks.append({"type": "text", "text": block})View on GitHub (pinned to afb5e11976)
Solutions
- Read the wrapped message — it embeds the original TypeError naming the bad argument; remove or fix that key in chat_backend/backend
- Compare your kwargs against anthropic.Anthropic's constructor signature (api_key, base_url, timeout, max_retries, ...)
- Move request-level options (temperature, top_p, top_k, model) to the messages() call, not the backend dict
Example fix
# before
client.messages(prompt, chat_backend={'backend': 'anthropic', 'api_base': 'https://...'})
# after
client.messages(prompt, chat_backend={'backend': 'anthropic', 'base_url': 'https://...'}) Defensive patterns
Strategy: validation
Validate before calling
import inspect, anthropic
valid = set(inspect.signature(anthropic.Anthropic).parameters)
backend = {'backend': 'anthropic', 'model': 'claude-...'}
backend = {k: v for k, v in backend.items() if k in valid or k in ('backend', 'model')} Type guard
def is_valid_backend(cfg: dict) -> bool:
return isinstance(cfg, dict) and set(cfg) <= {'backend', 'model', 'api_key', 'base_url', 'timeout', 'max_retries'} Try / catch
try:
client.messages("hi", chat_backend=cfg)
except PageIndexAPIError as e:
if "backend is not configured" in str(e):
log.error("bad anthropic kwargs: %s", cfg)
raise Prevention
- Keep backend dicts to documented keys only
- Keep request-level params out of the client config
- Log the backend dict when this fires
When it happens
Trigger: Passing chat_backend={'backend': 'anthropic', 'model': '...', <unknown-kwarg>: ...} to messages(); any kwarg combo for which anthropic.Anthropic(**kwargs) raises TypeError (unknown parameter name, wrong type).
Common situations: Copying backend settings from an OpenAI-style config (e.g. base_url vs api_base, or engine-specific keys); typos in kwarg names; passing model config keys that belong on the request, not the client constructor.
Related errors
- user_opt must be dict, config(SimpleNamespace) or None
- chat is an empty string — pass a model name, or "cloud" for
- chat is an empty dict — chat takes "model" and "backend" (yo
- Unknown chat keys ({keys}) — chat takes "model" and "backend
- chat declares mode "cloud" but carries ({keys}) — the manage
AI-assisted analysis of VectifyAI/PageIndex@afb5e11976 (2026-08-27).
Data as JSON: /api/errors/5fed53c743feffe8.
Report an issue: GitHub.