{"record":{"id":"c9059c36f3da06ca","repo":"invoke-ai/InvokeAI","slug":"negative-conditioning-is-required-when-guidance-sc","errorCode":null,"errorMessage":"Negative conditioning is required when guidance_scale > 1.0","messagePattern":"Negative conditioning is required when guidance_scale > 1\\.0","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"invokeai/app/invocations/ernie_image_denoise.py","lineNumber":98,"sourceCode":"    denoising_end: float = InputField(default=1.0, ge=0, le=1, description=FieldDescriptions.denoising_end)\n    seed: int = InputField(default=0, description=\"Random seed for noise generation.\")\n    scheduler: ERNIE_IMAGE_SCHEDULER_NAME_VALUES = InputField(\n        default=\"euler\",\n        description=\"Scheduler used during denoising.\",\n        ui_choice_labels=ERNIE_IMAGE_SCHEDULER_LABELS,\n    )\n\n    @torch.no_grad()\n    def invoke(self, context: InvocationContext) -> LatentsOutput:\n        device = TorchDevice.choose_torch_device()\n        dtype = TorchDevice.choose_bfloat16_safe_dtype(device)\n\n        pos_info = self._load_conditioning(context, self.positive_conditioning, dtype, device)\n        neg_info: Optional[ErnieImageConditioningInfo] = None\n        do_cfg = self.guidance_scale > 1.0\n        if do_cfg:\n            if self.negative_conditioning is None:\n                raise ValueError(\"Negative conditioning is required when guidance_scale > 1.0\")\n            neg_info = self._load_conditioning(context, self.negative_conditioning, dtype, device)\n\n        transformer_info = context.models.load(self.transformer.transformer)\n\n        with ExitStack() as exit_stack:\n            (_, transformer) = exit_stack.enter_context(transformer_info.model_on_device())\n\n            text_in_dim = int(transformer.config.text_in_dim)\n            in_channels = int(transformer.config.in_channels)  # 128 -- already patched\n\n            text_bth, text_lens = sampling_utils.pad_text(\n                [pos_info.prompt_embeds], device=device, dtype=dtype, text_in_dim=text_in_dim\n            )\n            neg_text_bth = neg_text_lens = None\n            if neg_info is not None:\n                neg_text_bth, neg_text_lens = sampling_utils.pad_text(\n                    [neg_info.prompt_embeds], device=device, dtype=dtype, text_in_dim=text_in_dim\n                )","sourceCodeStart":80,"sourceCodeEnd":116,"githubUrl":"https://github.com/invoke-ai/InvokeAI/blob/0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06/invokeai/app/invocations/ernie_image_denoise.py#L80-L116","documentation":"ErnieImageDenoise performs classifier-free guidance only when guidance_scale > 1.0, and CFG requires negative conditioning to steer away from. If guidance_scale exceeds 1 but no negative_conditioning input was supplied, the invocation raises this ValueError instead of silently running without CFG.","triggerScenarios":"Setting guidance_scale to e.g. 4.0 while leaving the negative_conditioning input unconnected (None) on the ErnieImageDenoise invocation.","commonSituations":"Txt2img graphs where users only wire the positive prompt and crank the guidance; API payloads omitting the negative conditioning field; UIs that hide the negative prompt input by default.","solutions":["Either connect a negative conditioning field (prompt with negative text) to negative_conditioning","Or set guidance_scale to exactly 1.0 so CFG is disabled and negative conditioning isn't required"],"exampleFix":"// before\nErnieImageDenoise(positive_conditioning=pos, guidance_scale=5.0)  # negative is None\n// after\nneg = ErnieConditioningInvocation(prompt=\"\")\nErnieImageDenoise(positive_conditioning=pos, negative_conditioning=neg, guidance_scale=5.0)","handlingStrategy":"validation","validationCode":"if guidance_scale > 1.0 and negative_conditioning is None:\n    raise ValueError(\"negative_conditioning is required when guidance_scale > 1.0; or set guidance_scale = 1.0\")","typeGuard":"def cfg_is_satisfied(guidance_scale: float, negative_conditioning) -> bool:\n    return guidance_scale <= 1.0 or negative_conditioning is not None","tryCatchPattern":"try:\n    out = invocation.invoke(context)\nexcept ValueError as e:\n    if \"Negative conditioning is required\" in str(e):\n        invocation.guidance_scale = 1.0  # disable CFG as fallback\n        out = invocation.invoke(context)\n    else:\n        raise","preventionTips":["Always provide an empty-prompt negative conditioning node for CFG runs","Default guidance_scale to 1.0 when the negative input is optional","Validate required edges for guidance_scale > 1 before submitting the graph"],"tags":["python","valueerror","cfg","missing-input","ernie","diffusion"],"backgroundTag":"missing-required-input","analyzedSha":"0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06","analyzedAt":"2026-08-29T04:46:49.967Z","schemaVersion":2},"datasetVersion":"2026-08-29T07:17:48.351Z"}