{"record":{"id":"c335cb6945d95451","repo":"run-llama/llama_index","slug":"must-install-llama-index-langchain-to-use-langc","errorCode":null,"errorMessage":"Must install `llama_index[langchain]` to use LangchainPromptTemplate.","messagePattern":"Must install `llama_index\\[langchain\\]` to use LangchainPromptTemplate\\.","errorType":"exception","errorClass":"ImportError","httpStatus":null,"severity":"error","filePath":"llama-index-core/llama_index/core/prompts/base.py","lineNumber":396,"sourceCode":"    requires_langchain_llm: bool = False\n\n    def __init__(\n        self,\n        template: Optional[\"LangchainTemplate\"] = None,\n        selector: Optional[\"LangchainSelector\"] = None,\n        output_parser: Optional[BaseOutputParser] = None,\n        prompt_type: str = PromptType.CUSTOM,\n        metadata: Optional[Dict[str, Any]] = None,\n        template_var_mappings: Optional[Dict[str, Any]] = None,\n        function_mappings: Optional[Dict[str, Callable]] = None,\n        requires_langchain_llm: bool = False,\n    ) -> None:\n        try:\n            from llama_index.core.bridge.langchain import (\n                ConditionalPromptSelector as LangchainSelector,\n            )\n        except ImportError:\n            raise ImportError(\n                \"Must install `llama_index[langchain]` to use LangchainPromptTemplate.\"\n            )\n        if selector is None:\n            if template is None:\n                raise ValueError(\"Must provide either template or selector.\")\n            selector = LangchainSelector(default_prompt=template)\n        else:\n            if template is not None:\n                raise ValueError(\"Must provide either template or selector.\")\n            selector = selector\n\n        kwargs = selector.default_prompt.partial_variables\n        template_vars = selector.default_prompt.input_variables\n\n        if metadata is None:\n            metadata = {}\n        metadata[\"prompt_type\"] = prompt_type\n","sourceCodeStart":378,"sourceCodeEnd":414,"githubUrl":"https://github.com/run-llama/llama_index/blob/afd0fef371831f9bda13e5af7167cf4e981278ab/llama-index-core/llama_index/core/prompts/base.py#L378-L414","documentation":"LangchainPromptTemplate depends on langchain classes re-exported through llama_index.core.bridge.langchain. If langchain (or a compatible version) is not installed, that bridge import fails and this ImportError is raised at construction time. The template cannot function without the underlying langchain prompt machinery.","triggerScenarios":"Instantiating LangchainPromptTemplate(...) (directly or via from_template) in an environment without the langchain extra; also when the installed langchain version no longer exports ConditionalPromptSelector, breaking the bridge.","commonSituations":"Core-only installs; langchain major-version upgrades that moved/removed ConditionalPromptSelector; mismatched langchain-core/langchain pins.","solutions":["Install the extra: pip install 'llama-index[langchain]' (or pip install langchain).","Pin compatible langchain versions if a recent upgrade broke the bridge.","If you do not need langchain templates, use llama_index.core.prompts.PromptTemplate instead."],"exampleFix":"# before\nfrom llama_index.core.prompts import LangchainPromptTemplate\nlc_prompt = LangchainPromptTemplate(template=SomeLangchainTemplate)\n# after\npip install 'llama-index[langchain]'\nlc_prompt = LangchainPromptTemplate(template=SomeLangchainTemplate)","handlingStrategy":"try-catch","validationCode":"import importlib.util\nif importlib.util.find_spec(\"llama_index.core.bridge.langchain\") is None or \\\n   importlib.util.find_spec(\"langchain\") is None:\n    raise RuntimeError(\"pip install 'llama-index[langchain]'\")","typeGuard":"def langchain_available() -> bool:\n    try:\n        from llama_index.core.bridge.langchain import ConditionalPromptSelector  # noqa\n        return True\n    except ImportError:\n        return False","tryCatchPattern":"try:\n    lc_prompt = LangchainPromptTemplate(template=tmpl)\nexcept ImportError as e:\n    if \"langchain\" in str(e):\n        from llama_index.core.prompts import PromptTemplate\n        lc_prompt = PromptTemplate(tmpl.template)  # plain fallback\n    else:\n        raise","preventionTips":["Declare the langchain extra in your project dependencies if you use LangchainPromptTemplate.","Pin langchain versions; the bridge breaks across major upgrades."],"tags":["dependency","import","langchain","prompt"],"backgroundTag":null,"analyzedSha":"afd0fef371831f9bda13e5af7167cf4e981278ab","analyzedAt":"2026-08-15T05:42:58.429Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}