{"record":{"id":"8dc17ce8ca0f2e8c","repo":"VectifyAI/PageIndex","slug":"the-openai-backend-is-not-configured-exc","errorCode":null,"errorMessage":"The OpenAI backend is not configured: {exc}","messagePattern":"The OpenAI backend is not configured: (.+?)","errorType":"exception","errorClass":"PageIndexAPIError","httpStatus":null,"severity":"error","filePath":"pageindex/local_chat.py","lineNumber":205,"sourceCode":"def _openai_model(protocol: str, model_name: str, backend=None):\n    \"\"\"The backend protocol driver — the seam tests replace with a fake.\"\"\"\n    if protocol == \"responses\":\n        model_name = model_name.removeprefix(\"litellm/\")\n        if \"/\" in model_name and not model_name.startswith(\"openai/\"):\n            raise PageIndexAPIError(\n                f\"responses() cannot drive '{model_name}': provider-prefixed \"\n                \"models route through LiteLLM, which speaks chat.completions, \"\n                \"not the Responses API. Use chat_completions() (or messages() \"\n                \"for Anthropic models), or point OPENAI_BASE_URL at a \"\n                \"Responses-capable backend and use a bare or \"\n                \"'openai/'-prefixed model name.\"\n            )\n        import openai\n        model_name = model_name.removeprefix(\"openai/\")\n        try:\n            sdk_client = openai.AsyncOpenAI(**_sdk_backend(backend))\n        except (openai.OpenAIError, TypeError) as exc:\n            raise PageIndexAPIError(\n                f\"The OpenAI backend is not configured: {exc}\") from exc\n        # A caller-owned transport must survive the per-call close.\n        sdk_client._pageindex_caller_http = \"http_client\" in (backend or {})\n        from agents.models.openai_responses import OpenAIResponsesModel\n        return OpenAIResponsesModel(model_name, openai_client=sdk_client)\n    try:\n        from agents.extensions.models.litellm_model import LitellmModel\n        import litellm\n    except ImportError:\n        raise PageIndexAPIError(\n            f\"'{model_name}' routes through LiteLLM, but litellm is not \"\n            \"installed. Run:  pip install 'litellm>=1.97'\"\n        )\n    from .utils import (_litellm_model, _mute_litellm_bridge_usage_warning,\n                        _repair_litellm_types)\n    _repair_litellm_types()\n    _mute_litellm_bridge_usage_warning()\n    try:","sourceCodeStart":187,"sourceCodeEnd":223,"githubUrl":"https://github.com/VectifyAI/PageIndex/blob/afb5e119766630af6014b04fe8b53357527bc05e/pageindex/local_chat.py#L187-L223","documentation":"When constructing the AsyncOpenAI client for the responses/chat engine, configuration errors (bad key, malformed base_url, bad proxy/type kwargs) raise openai.OpenAIError or TypeError, which the library wraps as 'The OpenAI backend is not configured: <detail>'. The original exception text identifies the misconfiguration.","triggerScenarios":"Providing backend={\"api_key\": None} with no OPENAI_API_KEY env var, a malformed base_url, or unknown kwargs in the backend dict.","commonSituations":"Missing OPENAI_API_KEY in CI/containers, typos in base_url (missing scheme), passing engine-specific options the SDK doesn't accept, .env not loaded.","solutions":["Set OPENAI_API_KEY or pass backend={\"api_key\": ...} explicitly","Verify base_url includes scheme and is reachable; check env loading","Remove unsupported keys from the backend dict — only SDK-valid kwargs pass through"],"exampleFix":"# before\nclient.responses(model=\"gpt-5\", input=q, backend={\"base_url\":\"localhost:8000/v1\"})\n\n# after\nclient.responses(model=\"gpt-5\", input=q, backend={\"base_url\":\"http://localhost:8000/v1\",\"api_key\":os.environ[\"OPENAI_API_KEY\"]})","handlingStrategy":"try-catch","validationCode":"assert os.environ.get('OPENAI_API_KEY'), 'OPENAI_API_KEY not set'","typeGuard":"null","tryCatchPattern":"try:\n    client.responses(model=m, input=q, backend=backend)\nexcept PageIndexAPIError as e:\n    if str(e).startswith('The OpenAI backend is not configured'):\n        # inspect original detail, fix key/base_url, retry once fixed\n        ...\n    raise","preventionTips":["Set and verify OPENAI_API_KEY at startup","Validate base_url has a scheme (http/https)","Only pass SDK-valid kwargs in the backend dict"],"tags":["pageindex","openai","configuration","api-key","backend"],"backgroundTag":"client-configuration-invalid","analyzedSha":"afb5e119766630af6014b04fe8b53357527bc05e","analyzedAt":"2026-08-27T11:20:48.519Z","schemaVersion":2},"datasetVersion":"2026-08-27T13:17:12.746Z"}