NCO: A Versatile Plug-in for Handling Negative Constraints in Decoding
For practitioners needing to enforce multiple forbidden constraints in LLM outputs, NCO offers a computationally efficient and versatile solution that avoids the impractical automaton size of prior methods.
NCO is a decoding strategy for LLMs that prevents forbidden content (e.g., profanity, PII) during generation by performing online pattern matching over hard and regex constraints, avoiding state explosion and reducing computational overhead. It achieves effective suppression across practical tasks while remaining compatible with standard inference methods.
Controlling Large Language Models (LLMs) to prevent the generation of undesirable content, such as profanity and personally identifiable information (PII), has become increasingly critical. While earlier approaches relied on post-processing or resampling, recent research has shifted towards constrained decoding methods that control outputs during generation to mitigate high computational costs and quality degradation. However, preventing multiple forbidden hard constraints or regex constraints from appearing anywhere in the output is computationally challenging. A straightforward solution is to convert these constraints into a single automaton that tracks all forbidden patterns during decoding, but this often becomes impractically large. Standard regex engines also do not readily support the operations needed to build such a constraint, such as complement and intersection. In order to address these limitations, we propose NCO, a decoding strategy that performs online pattern matching over finite hard constraints and regex constraints, reducing computational overhead without inducing state explosion. NCO is fully compatible with standard inference strategies, including various sampling methods and beam search, while also supporting soft masking for probabilistic suppression. We empirically demonstrate its effectiveness across practical tasks, including PII and profanity suppression. Our implementation is available at https://github.com/hyundong98/NCO-Decoding.git .