{"record":{"id":"888a64a1cdb80bc6","repo":"run-llama/llama_index","slug":"llama-index-question-gen-openai-package-cannot-b","errorCode":null,"errorMessage":"`llama-index-question-gen-openai` package cannot be found. Please install it by using `pip install `llama-index-question-gen-openai`","messagePattern":"`llama-index-question-gen-openai` package cannot be found\\. Please install it by using `pip install `llama-index-question-gen-openai`","errorType":"exception","errorClass":"ImportError","httpStatus":null,"severity":"error","filePath":"llama-index-core/llama_index/core/query_engine/sub_question_query_engine.py","lineNumber":112,"sourceCode":"        use_async: bool = True,\n    ) -> \"SubQuestionQueryEngine\":\n        callback_manager = Settings.callback_manager\n        if len(query_engine_tools) > 0:\n            callback_manager = query_engine_tools[0].query_engine.callback_manager\n\n        llm = llm or Settings.llm\n        if question_gen is None:\n            try:\n                from llama_index.question_gen.openai import (\n                    OpenAIQuestionGenerator,\n                )  # pants: no-infer-dep\n\n                # try to use OpenAI function calling based question generator.\n                # if incompatible, use general LLM question generator\n                question_gen = OpenAIQuestionGenerator.from_defaults(llm=llm)\n\n            except ImportError as e:\n                raise ImportError(\n                    \"`llama-index-question-gen-openai` package cannot be found. \"\n                    \"Please install it by using `pip install `llama-index-question-gen-openai`\"\n                )\n            except ValueError:\n                question_gen = LLMQuestionGenerator.from_defaults(llm=llm)\n\n        synth = response_synthesizer or get_response_synthesizer(\n            llm=llm,\n            callback_manager=callback_manager,\n            use_async=use_async,\n        )\n\n        return cls(\n            question_gen,\n            synth,\n            query_engine_tools,\n            callback_manager=callback_manager,\n            verbose=verbose,","sourceCodeStart":94,"sourceCodeEnd":130,"githubUrl":"https://github.com/run-llama/llama_index/blob/afd0fef371831f9bda13e5af7167cf4e981278ab/llama-index-core/llama_index/core/query_engine/sub_question_query_engine.py#L94-L130","documentation":"SubQuestionQueryEngine.from_defaults tries to build an OpenAIQuestionGenerator (function-calling based) when no question_gen is given. If the optional llama-index-question-gen-openai package is not installed, the ImportError is re-raised with install instructions instead of silently degrading.","triggerScenarios":"Calling SubQuestionQueryEngine.from_defaults(query_engine_tools=[...], question_gen=None) (or omitting question_gen) in an environment where llama-index-question-gen-openai is not installed.","commonSituations":"Minimal llama-index-core installs, or dependency resolution dropping the optional integration package after an upgrade; also happens when OpenAIQuestionGenerator.from_defaults succeeds on import but the model lacks function-calling (that path falls back to LLMQuestionGenerator via the ValueError branch instead).","solutions":["pip install llama-index-question-gen-openai","Or pass an explicit question_gen: SubQuestionQueryEngine.from_defaults(..., question_gen=LLMQuestionGenerator.from_defaults()) which lives in core","Or install the bundle: pip install llama-index question-gen extras appropriate to your setup"],"exampleFix":"// before\nengine = SubQuestionQueryEngine.from_defaults(query_engine_tools=tools)  # raises ImportError\n\n// after\n# pip install llama-index-question-gen-openai\nengine = SubQuestionQueryEngine.from_defaults(query_engine_tools=tools)\n\n# alternative (no extra install):\nfrom llama_index.core.question_gen import LLMQuestionGenerator\nengine = SubQuestionQueryEngine.from_defaults(\n    query_engine_tools=tools,\n    question_gen=LLMQuestionGenerator.from_defaults(),\n)","handlingStrategy":"try-catch","validationCode":"try:\n    from llama_index.question_gen.openai import OpenAIQuestionGenerator  # noqa\n    HAS_QG_OPENAI = True\nexcept ImportError:\n    HAS_QG_OPENAI = False\n\nfrom llama_index.core.question_gen import LLMQuestionGenerator\nquestion_gen = (\n    OpenAIQuestionGenerator.from_defaults()\n    if HAS_QG_OPENAI\n    else LLMQuestionGenerator.from_defaults()\n)","typeGuard":null,"tryCatchPattern":"try:\n    engine = SubQuestionQueryEngine.from_defaults(query_engine_tools=tools)\nexcept ImportError as e:\n    if \"llama-index-question-gen-openai\" in str(e):\n        # either install it, or fall back to the core generator\n        engine = SubQuestionQueryEngine.from_defaults(\n            query_engine_tools=tools,\n            question_gen=LLMQuestionGenerator.from_defaults(),\n        )\n    else:\n        raise","preventionTips":["Install optional integration packages explicitly rather than relying on extras resolution","Pin integration versions in lockfiles to survive upgrades","Pass question_gen explicitly in airgapped/minimal environments"],"tags":["install","optional-dependency","sub-question","import"],"backgroundTag":null,"analyzedSha":"afd0fef371831f9bda13e5af7167cf4e981278ab","analyzedAt":"2026-08-15T05:42:58.429Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}