{"record":{"id":"27d78abb446f802a","repo":"run-llama/llama_index","slug":"this-mode-requires-the-llama-index-program-lmform","errorCode":null,"errorMessage":"This mode requires the `llama-index-program-lmformatenforcer package. Please install it by running `pip install llama-index-program-lmformatenforcer`.","messagePattern":"This mode requires the `llama-index-program-lmformatenforcer package\\. Please install it by running `pip install llama-index-program-lmformatenforcer`\\.","errorType":"exception","errorClass":"ImportError","httpStatus":null,"severity":"error","filePath":"llama-index-core/llama_index/core/program/utils.py","lineNumber":123,"sourceCode":"            **kwargs,\n        )\n\n    elif pydantic_program_mode == PydanticProgramMode.LLM:\n        from llama_index.core.program.llm_program import LLMTextCompletionProgram\n\n        return LLMTextCompletionProgram.from_defaults(\n            output_parser=PydanticOutputParser(output_cls=output_cls),\n            llm=llm,\n            prompt=prompt,\n            **kwargs,\n        )\n    elif pydantic_program_mode == PydanticProgramMode.LM_FORMAT_ENFORCER:\n        try:\n            from llama_index.program.lmformatenforcer import (\n                LMFormatEnforcerPydanticProgram,\n            )  # pants: no-infer-dep\n        except ImportError:\n            raise ImportError(\n                \"This mode requires the `llama-index-program-lmformatenforcer package. Please\"\n                \" install it by running `pip install llama-index-program-lmformatenforcer`.\"\n            )\n\n        return LMFormatEnforcerPydanticProgram.from_defaults(\n            output_cls=output_cls,\n            llm=llm,\n            prompt=prompt,\n            **kwargs,\n        )\n    else:\n        raise ValueError(f\"Unsupported pydantic program mode: {pydantic_program_mode}\")\n\n\ndef _repair_incomplete_json(json_str: str) -> str:\n    \"\"\"\n    Attempt to repair incomplete JSON strings.\n","sourceCodeStart":105,"sourceCodeEnd":141,"githubUrl":"https://github.com/run-llama/llama_index/blob/afd0fef371831f9bda13e5af7167cf4e981278ab/llama-index-core/llama_index/core/program/utils.py#L105-L141","documentation":"get_program_for_pydantic_model in program/utils.py supports PydanticProgramMode.LM_FORMAT_ENFORCER by importing LMFormatEnforcerPydanticProgram from the optional llama-index-program-lmformatenforcer package. When that integration is missing, this ImportError tells you to install it. The default mode does not need it.","triggerScenarios":"Passing pydantic_program_mode=PydanticProgramMode.LM_FORMAT_ENFORCER (e.g. to a StructuredQueryEngine or query engine factory) without llama-index-program-lmformatenforcer installed.","commonSituations":"Enforcing JSON format locally with an LLM that lacks native function calling; copying examples for LM Format Enforcer; environments where only llama-index-core is installed.","solutions":["pip install llama-index-program-lmformatenforcer.","Or switch to the default mode (omit pydantic_program_mode) if you do not specifically need format enforcement.","Or use PydanticProgramMode.OPENAI / FUNCTION_CALLING style programs if your LLM supports native structured output."],"exampleFix":"# before\nengine = RetrieverQueryEngine(... )  # configured with\n# pydantic_program_mode=PydanticProgramMode.LM_FORMAT_ENFORCER\n# after\npip install llama-index-program-lmformatenforcer\n# or drop the mode:\nresponse_synthesizer=ResponseSynthesizer.from_defaults()  # default program mode","handlingStrategy":"try-catch","validationCode":"import importlib.util\nfrom llama_index.core.program import PydanticProgramMode\n\nif pydantic_program_mode == PydanticProgramMode.LM_FORMAT_ENFORCER and \\\n   importlib.util.find_spec(\"llama_index.program.lmformatenforcer\") is None:\n    raise RuntimeError(\"pip install llama-index-program-lmformatenforcer\")","typeGuard":"def lmformatenforcer_available() -> bool:\n    import importlib.util\n    return importlib.util.find_spec(\"llama_index.program.lmformatenforcer\") is not None","tryCatchPattern":"try:\n    program = get_program_for_pydantic_model(\n        output_cls, pydantic_program_mode=PydanticProgramMode.LM_FORMAT_ENFORCER)\nexcept ImportError:\n    program = get_program_for_pydantic_model(output_cls)  # default mode fallback","preventionTips":["Only opt into LM_FORMAT_ENFORCER mode when the package is pinned in requirements.","Default mode works with any function-calling LLM — prefer it unless you need strict format enforcement."],"tags":["dependency","import","optional-package","program-mode"],"backgroundTag":null,"analyzedSha":"afd0fef371831f9bda13e5af7167cf4e981278ab","analyzedAt":"2026-08-15T05:42:58.429Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}