{"record":{"id":"da0c621f6171b105","repo":"HKUDS/DeepTutor","slug":"the-active-llm-transport-is-not-supported-by-pagei","errorCode":null,"errorMessage":"The active LLM transport is not supported by PageIndex OSS indexing.","messagePattern":"The active LLM transport is not supported by PageIndex OSS indexing\\.","errorType":"error_code","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"deeptutor/services/rag/pipelines/pageindex/client.py","lineNumber":68,"sourceCode":"        in {\n            \"openai_codex\",\n            \"github_copilot\",\n            \"codebuddy\",\n        }\n    ):\n        raise RuntimeError(\n            \"PageIndex OSS indexing needs an API-key or local LLM profile; \"\n            \"the active OAuth-only provider cannot be used.\"\n        )\n\n    resolved_model = strip_provider_prefix(model, spec)\n    prefix = {\n        \"anthropic\": \"anthropic\",\n        \"azure_openai\": \"azure\",\n        \"openai_compat\": \"openai\",\n    }.get(spec.backend)\n    if prefix is None:\n        raise RuntimeError(\"The active LLM transport is not supported by PageIndex OSS indexing.\")\n\n    sdk_model = _prefixed_model(prefix, resolved_model)\n    backend: dict[str, Any] = {}\n    api_key = str(getattr(cfg, \"api_key\", \"\") or \"\").strip()\n    base_url = str(getattr(cfg, \"base_url\", \"\") or \"\").strip()\n    api_version = str(getattr(cfg, \"api_version\", \"\") or \"\").strip()\n    headers = getattr(cfg, \"extra_headers\", None)\n\n    if spec.backend == \"openai_compat\":\n        # PageIndex treats ``openai/...`` as the OpenAI-compatible fast path;\n        # this also preserves gateway model ids such as anthropic/claude-*.\n        backend[\"api_key\"] = api_key or \"sk-no-key-required\"\n    elif api_key:\n        backend[\"api_key\"] = api_key\n\n    if base_url:\n        backend[\"api_base\"] = base_url\n    if api_version and spec.backend != \"openai_compat\":","sourceCodeStart":50,"sourceCodeEnd":86,"githubUrl":"https://github.com/HKUDS/DeepTutor/blob/3e82f130422a813cdd73c10b21a44e9325f5821a/deeptutor/services/rag/pipelines/pageindex/client.py#L50-L86","documentation":"resolve_oss_sdk_config maps the active provider backend to a PageIndex SDK model prefix, and only anthropic, azure_openai, and openai_compat backends are supported. Any other backend yields prefix=None and this RuntimeError.","triggerScenarios":"Active LLM binding resolves to a backend outside the supported set (e.g., a newly added or exotic provider backend) when list_pipelines/local/_pageindex_oss_preflight resolve OSS SDK config.","commonSituations":"Adding a custom provider backend to the catalog, using a Google/Bedrock-style binding, or a version change that renamed backends — the provider works for chat but is unmapped for PageIndex OSS.","solutions":["Switch the active LLM to an openai_compat binding pointed at your provider's OpenAI-compatible endpoint — most gateways expose one.","If your provider is genuinely Anthropic/Azure, ensure it's configured under those exact backend types so the prefix maps.","File/extend the prefix map in client.py if you control a custom backend that PageIndex's SDK actually supports."],"exampleFix":"# before\n# binding backend: \"vertex_ai\" -> prefix None -> RuntimeError\nawait pageindex_client.local(...)\n\n# after\n# binding backend: \"openai_compat\", base_url=https://my-gateway/v1\nawait pageindex_client.local(...)","handlingStrategy":"validation","validationCode":"SUPPORTED = {\"anthropic\", \"azure_openai\", \"openai_compat\"}\nspec = find_by_name(active_binding())\nassert spec.backend in SUPPORTED, f\"backend {spec.backend} unsupported by PageIndex OSS\"","typeGuard":"def backend_supported_by_pageindex(spec) -> bool:\n    return spec.backend in {\"anthropic\", \"azure_openai\", \"openai_compat\"}","tryCatchPattern":"try:\n    cfg = resolve_oss_sdk_config()\nexcept RuntimeError as e:\n    if \"not supported\" in str(e):\n        configure_openai_compat_gateway(provider_base_url)\n        cfg = resolve_oss_sdk_config()\n    else:\n        raise","preventionTips":["Default headless setups to openai_compat bindings.","Gate OSS features on a backend allowlist check at startup.","Track provider catalog changes when upgrading — new backends may be unmapped."],"tags":["pageindex","llm","unsupported-backend","configuration"],"backgroundTag":"unsupported-provider-backend","analyzedSha":"3e82f130422a813cdd73c10b21a44e9325f5821a","analyzedAt":"2026-08-27T06:57:25.364Z","schemaVersion":2},"datasetVersion":"2026-08-27T08:17:20.692Z"}