{"record":{"id":"7b7ff9969a5eb9ac","repo":"deepset-ai/haystack","slug":"missing-required-input-variables-in-chatpromptbuil","errorCode":null,"errorMessage":"Missing required input variables in ChatPromptBuilder: {missing_vars_str}. Required variables: {required_variables}. Provided variables: {provided_variables}.","messagePattern":"Missing required input variables in ChatPromptBuilder: (.+?)\\. Required variables: (.+?)\\. Provided variables: (.+?)\\.","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"haystack/components/builders/chat_prompt_builder.py","lineNumber":317,"sourceCode":"        return messages\n\n    def _validate_variables(self, provided_variables: set[str]) -> None:\n        \"\"\"\n        Checks if all the required template variables are provided.\n\n        :param provided_variables:\n            A set of provided template variables.\n        :raises ValueError:\n            If no template is provided or if all the required template variables are not provided.\n        \"\"\"\n        if self.required_variables == \"*\":\n            required_variables = sorted(self.variables)\n        else:\n            required_variables = self.required_variables\n        missing_variables = [var for var in required_variables if var not in provided_variables]\n        if missing_variables:\n            missing_vars_str = \", \".join(missing_variables)\n            raise ValueError(\n                f\"Missing required input variables in ChatPromptBuilder: {missing_vars_str}. \"\n                f\"Required variables: {required_variables}. Provided variables: {provided_variables}.\"\n            )\n\n    def to_dict(self) -> dict[str, Any]:\n        \"\"\"\n        Returns a dictionary representation of the component.\n\n        :returns:\n            Serialized dictionary representation of the component.\n        \"\"\"\n        template: list[dict[str, Any]] | str | None = None\n        if isinstance(self.template, list):\n            template = [m.to_dict() for m in self.template]\n        elif isinstance(self.template, str):\n            template = self.template\n\n        return default_to_dict(","sourceCodeStart":299,"sourceCodeEnd":335,"githubUrl":"https://github.com/deepset-ai/haystack/blob/e318778c9bf60a1963e3b5f451359655dd696c30/haystack/components/builders/chat_prompt_builder.py#L299-L335","documentation":"ChatPromptBuilder._validate_variables (called from run) checks that every required template variable is present in the provided inputs. If any are missing, it raises ValueError listing the missing, required, and provided variable names.","triggerScenarios":"run(query=q) when the builder's template declares additional variables (e.g. {{ context }}) that are not passed as kwargs nor present in template_variables.","commonSituations":"Changing a template to add a new placeholder without adding it to the run() call; pipeline connections failing to supply an expected input; required_variables listing a variable you forgot to bind.","solutions":["Pass the missing variables as kwargs to run(), matching the names in the error message.","Remove the unused placeholder from the template if it is no longer needed.","Ensure the pipeline wires the missing variable input correctly."],"exampleFix":"// before\nbuilder.run(query=q)  # missing 'context'\n// after\nbuilder.run(query=q, context=retrieved_docs)","handlingStrategy":"validation","validationCode":"required = set(builder.required_variables or builder.variables or [])\nmissing = required - set(kwargs)\nassert not missing, f'missing template vars: {missing}'","typeGuard":"def has_required_vars(builder, kwargs: dict) -> bool:\n    required = set(builder.required_variables or builder.variables or [])\n    return required.issubset(kwargs.keys())","tryCatchPattern":"try:\n    res = builder.run(**kwargs)\nexcept ValueError as e:\n    if 'Missing required input variables in ChatPromptBuilder' in str(e):\n        kwargs.update(fill_defaults_from_template(builder))\n        res = builder.run(**kwargs)\n    else:\n        raise","preventionTips":["Derive run kwargs from the template's extracted variables.","Update all callsites when editing a template's placeholders.","Check pipeline wiring for each declared variable."],"tags":["validation","chat-prompt-builder","missing-variable"],"backgroundTag":"missing-required-input","analyzedSha":"e318778c9bf60a1963e3b5f451359655dd696c30","analyzedAt":"2026-08-30T11:45:20.711Z","schemaVersion":2},"datasetVersion":"2026-08-30T13:17:10.514Z"}