run-llama/llama_index · error · ImportError

`llama-index-question-gen-openai` package cannot be found. P

Error message

`llama-index-question-gen-openai` package cannot be found. Please install it by using `pip install `llama-index-question-gen-openai`

What it means

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.

Source

Thrown at llama-index-core/llama_index/core/query_engine/sub_question_query_engine.py:112

        use_async: bool = True,
    ) -> "SubQuestionQueryEngine":
        callback_manager = Settings.callback_manager
        if len(query_engine_tools) > 0:
            callback_manager = query_engine_tools[0].query_engine.callback_manager

        llm = llm or Settings.llm
        if question_gen is None:
            try:
                from llama_index.question_gen.openai import (
                    OpenAIQuestionGenerator,
                )  # pants: no-infer-dep

                # try to use OpenAI function calling based question generator.
                # if incompatible, use general LLM question generator
                question_gen = OpenAIQuestionGenerator.from_defaults(llm=llm)

            except ImportError as e:
                raise ImportError(
                    "`llama-index-question-gen-openai` package cannot be found. "
                    "Please install it by using `pip install `llama-index-question-gen-openai`"
                )
            except ValueError:
                question_gen = LLMQuestionGenerator.from_defaults(llm=llm)

        synth = response_synthesizer or get_response_synthesizer(
            llm=llm,
            callback_manager=callback_manager,
            use_async=use_async,
        )

        return cls(
            question_gen,
            synth,
            query_engine_tools,
            callback_manager=callback_manager,
            verbose=verbose,

View on GitHub (pinned to afd0fef371)

Solutions

  1. pip install llama-index-question-gen-openai
  2. Or pass an explicit question_gen: SubQuestionQueryEngine.from_defaults(..., question_gen=LLMQuestionGenerator.from_defaults()) which lives in core
  3. Or install the bundle: pip install llama-index question-gen extras appropriate to your setup

Example fix

// before
engine = SubQuestionQueryEngine.from_defaults(query_engine_tools=tools)  # raises ImportError

// after
# pip install llama-index-question-gen-openai
engine = SubQuestionQueryEngine.from_defaults(query_engine_tools=tools)

# alternative (no extra install):
from llama_index.core.question_gen import LLMQuestionGenerator
engine = SubQuestionQueryEngine.from_defaults(
    query_engine_tools=tools,
    question_gen=LLMQuestionGenerator.from_defaults(),
)
Defensive patterns

Strategy: try-catch

Validate before calling

try:
    from llama_index.question_gen.openai import OpenAIQuestionGenerator  # noqa
    HAS_QG_OPENAI = True
except ImportError:
    HAS_QG_OPENAI = False

from llama_index.core.question_gen import LLMQuestionGenerator
question_gen = (
    OpenAIQuestionGenerator.from_defaults()
    if HAS_QG_OPENAI
    else LLMQuestionGenerator.from_defaults()
)

Try / catch

try:
    engine = SubQuestionQueryEngine.from_defaults(query_engine_tools=tools)
except ImportError as e:
    if "llama-index-question-gen-openai" in str(e):
        # either install it, or fall back to the core generator
        engine = SubQuestionQueryEngine.from_defaults(
            query_engine_tools=tools,
            question_gen=LLMQuestionGenerator.from_defaults(),
        )
    else:
        raise

Prevention

When it happens

Trigger: 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.

Common situations: 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).

Related errors


AI-assisted analysis of run-llama/llama_index@afd0fef371 (2026-08-15). Data as JSON: /api/errors/888a64a1cdb80bc6. Report an issue: GitHub.