「出力してほしくない言葉」をどう消すか
プロンプトに「〜と言わないでください」と書く。誰もが一度は試す手だ。結果は知っての通り。モデルは指示を「参考」にするだけで、禁止したはずの表現が平然と顔を出す。ファインチューニングで対処しようとすれば、コストと時間が跳ね上がる。システムプロンプトを肥大化させれば、コンテキストを圧迫し、本来の推論品質が落ちる。問題は単純だ——「言語モデルへの自然言語的な禁止命令」は、構造的に脆い。
この問題に対して、ロジット操作という別の回路からアプローチするスクリプトが公開された。Sourceによれば、llama.cppのサーバー機能と連携し、指定したフレーズに対応するトークン列が生成されそうになった瞬間、そのトークンの確率を強制的にゼロに落とす仕組みだ。GitHubリポジトリ(https://github.com/BigStationW/llama-cpp-phrase-ban)にREADMEとセットアップ手順が整備されている。
ロジット操作が「プロンプト禁止」より強い理由
モデルが次のトークンを選ぶとき、内部では各トークンへのスコア(ロジット)が計算される。通常の推論はそのスコアをそのまま使う。ロジット操作はこのスコアを推論後・サンプリング前に書き換える介入だ。特定トークンのスコアを負の無限大に設定すれば、そのトークンは確率的に選ばれなくなる。
プロンプトによる禁止命令との本質的な違いはここにある。自然言語命令はモデルの「理解と従う意志」に依存する。ロジット操作はモデルの意志を迂回し、出力空間そのものを物理的に削る。命令違反が構造的に起きえない状態を作る。
フレーズ単位での禁止は、単一トークンの禁止より複雑だ。「特定フレーズ」は複数トークンの連鎖として表現される。このスクリプトは、禁止フレーズのトークン列が途中まで生成された状態を検知し、次に続くトークン群を封鎖する仕組みを取ると推測される。READMEの詳細実装は確認が必要だが、llama.cppのlogit_bias機能を拡張した形での実現が有力な候補だ。
実用上のメリットは三点に整理できる。第一に、モデルを変えない。既存のGGUFファイルをそのまま使える。第二に、プロンプトを汚さない。システムプロンプトに禁止ワードリストを詰め込む必要がなく、コンテキストウィンドウを節約できる。第三に、確実性が高い。「確率的に従わないことがある」という問題が原理的に消える。
ローカルLLM運用での具体的な使いどころ
このスクリプトが刺さるユースケースを考える。
ひとつ目は、社内チャットボットや顧客対応ボットの運用だ。競合他社名、特定の法的リスクを含む表現、ブランドガイドラインに反する言い回し——これらをモデルレベルで封じたい需要は常に存在する。プロンプトエンジニアリングで対処しようとすると、例外ケースのたびにシステムプロンプトが肥大化する。ロジット操作による禁止リストなら、プロンプトとは独立した設定ファイルとして管理できる可能性がある。
ふたつ目は、キャラクターAIや創作支援ツールだ。特定のキャラクターが絶対に口にしない言葉、世界観を壊す固有名詞、プラットフォームのガイドラインに抵触する表現を、モデルの「気分」に依存せず封じられる。
三つ目は、プロンプトエンジニアリングの補完だ。精度99%のプロンプトを書いても、残り1%の漏れが許容されない場面がある。フレーズ禁止をフォールバックとして置くことで、プロンプト設計の「詰め」として機能する。
注意点も明記しておく。ロジット操作による禁止は、禁止フレーズに近い意味を持つ別の表現を封じない。「A社」を禁止しても「あの会社」は通る。完全な意味論的フィルタリングではなく、あくまで字句レベルの封鎖だ。また、禁止フレーズが多すぎると、モデルの出力分布を歪めすぎて文章の自然さが損なわれる可能性がある。禁止リストの設計は慎重に行う必要がある。
llama.cppはローカルLLM推論のデファクトスタンダードとして広く使われている。そのエコシステムに、プロンプトとは独立した出力制御レイヤーが加わることの意義は小さくない。プロンプトで戦う前に、出力空間の設計という視点を持つ——それが次のローカルLLM運用の標準的な思考順序になるかもしれない。
再現したい読者へ
GitHubリポジトリ(https://github.com/BigStationW/llama-cpp-phrase-ban)のREADMEにセットアップ手順が記載されている。llama.cppのサーバーモードが前提環境だ。まず動作確認を行い、禁止フレーズリストは最小限から始めることを勧める。禁止しすぎた場合の出力品質劣化を自分の目で確認してから、本番運用のリストを設計する。ロジット操作は強力な道具だ。使いすぎれば出力を壊す。職人の仕事は、道具の限界を知ることから始まる。
関連リンク
- llama.cpp(ggml-org):C/C++実装のローカルLLM推論エンジン。本スクリプトの動作前提となるサーバーモードを内包する。
- llama-cpp-phrase-ban(BigStationW):llama.cppのロジット操作を活用し、特定フレーズをトークンレベルで禁止するスクリプト本体。



