AIへの指示は多いほど良い、は本当か?―制約の「量」より「質」を見直す
X-tech推進本部 副本部長 新井「もっと細かくルールを設定すれば、AIの回答はよくなるはず」―その思い込みが、かえってAIの能力を制限しているかもしれません。
「素のAI」の方がうまくいく、と感じたことはありませんか
ChatGPTやClaudeを使い続けていると、こんな経験をする方が少なくありません。
- AIへの事前指示に細かいルールを書き込んだら、なぜか回答が硬くなった
- 「絶対に〜するな」という禁止事項を増やすほど、当たり障りのない答えしか返ってこなくなった
- 特別な設定をしていない時の方が、創造的で的確な提案をしてくれた
これは気のせいではありません。ただし「制約が多いから悪い」というほど単純な話でもありません。問題は制約の「量」ではなく、「種類」と「整合性」にあります。
なぜ制約が増えると出力が保守化しやすいのか
AIは、与えられた条件を満たしながら、もっとも自然そうな文章を組み立てる仕組みで動いています。
ここに落とし穴があります。制約条件が増えるほど、出力は「安全で無難な方向」に寄りやすくなります。「良い答えを出すこと」より「どの条件にも外れないこと」が優先されやすくなるためです。
その結果として起きやすいのが、次のような現象です。
- 発想が狭くなり、無難な回答に収束する
- 「〜については判断できません」という回避的な答えが増える
- コードや文章のアウトプットが硬直化する
ただしこれは「制約の量が多いと必ず悪化する」ということではありません。制約が少なくても、矛盾や曖昧さがある方が品質は落ちます。
AIは「ルールを理解している」というより、「大量の条件を同時に満たそうとしている」と考えると、こうした挙動を理解しやすくなります。
特に危ない「制約の衝突」
品質低下の最大の原因は、制約の「量」より「衝突」です。
例えば次のような指示を同時に与えてしまうケースがあります。
- 「簡潔に答えろ」と「詳細に説明しろ」
- 「断定するな」と「曖昧にするな」
- 「創造的に」と「テンプレートに従え」
こうした矛盾した条件が重なると、AIは優先順位の解釈が不安定になりやすく、どちらの意図とも異なる出力になりがちです。
ルールを追加する時は「既存の指示と矛盾していないか」を確認することが重要です。
「コンテキスト汚染」にも注意
大量のルールをAIへの事前指示に詰め込むと、別の問題も起きます。本当に重要な情報が、大量のルールに「埋もれる」のです。
AIが一度に読める情報量(トークン)には限りがあり、ルールが増えるほど「タスクに関係する重要な文脈」が埋もれやすくなります。加えて、AIには文章の中央付近にある情報を見落としやすい傾向があることも研究で報告されており(Lost in the Middle)、長大な事前指示の中に埋もれた重要な条件は、そもそも参照されないリスクもあります。
プロジェクトの構造、命名規則、意図といった情報が、ルールの洪水の中に沈んでしまわないよう、本当に必要な情報だけを厳選することが大切です。
「良い制約」と「悪い制約」は何が違うのか
制約のすべてが悪いわけではありません。重要なのは制約の「種類」と「粒度」です。
| 良い制約(品質を上げやすい) | 悪い制約(品質を落としやすい) |
|---|---|
| 使用技術・ライブラリの明示 | 互いに矛盾するルール |
| コーディング規約・命名規則 | 細かすぎる出力形式の指定 |
| 完了条件・テスト基準 | 冗長・重複したルール群 |
| ドメイン知識・API仕様 | 過剰な禁止事項の羅列 |
良い制約は「AIが迷わなくなる情報」を提供します。悪い制約は「AIの選択肢をむやみに奪う」ものです。同じ「制約を与える」行為でも、内容によって結果は正反対になります。
トークン節約の「落とし穴」
コスト削減のため「簡潔に答えろ」「説明不要」といったルールを入れている場合も注意が必要です。
AIはステップごとに考える過程(Chain of Thought)を経ることで、複雑な問題への正解率が上がることが知られています。設計・デバッグ・アーキテクチャ検討のような複雑なタスクで考える過程を圧縮させると、次のような問題が起きやすくなります。
- エッジケースの見落とし
- 前提確認の省略
- 全体整合性の低下
近年普及している「思考型モデル」(内部で自動的に推論を深めてから回答を返すタイプ)を使っている場合も、考える過程そのものを縛るような過度な制約は、モデルの本来の性能を引き出せない原因になります。
節約するなら「考える過程を圧縮する」のではなく、「不要なコンテキストを整理する」方向が有効です。具体的には、関係のないファイルや会話履歴を取り除くことが挙げられます。
実務で使えるアプローチ5選
1. 「禁止」より「評価基準」を与える
「〜するな」という禁止ではなく、「何を重視するか」を伝えましょう。
Before(禁止ベース)
300文字以内で書いてください。専門用語は使わないでください。曖昧な表現は禁止です。
After(評価基準ベース)
前提知識のない一般ユーザー向けに、専門用語を日常的な言葉に置き換えて簡潔に説明してください。正確性と分かりやすさのバランスを重視します。
後者の方が、AIはトレードオフを文脈に応じて判断できるようになります。
2. 制約に優先順位をつける
禁止事項の代わりに、優先順位リストを渡しましょう。
- 正確さ
- 保守しやすさ
- 読みやすさ
- パフォーマンス
「どれを優先するか」が明確になると、AIは状況に応じた判断がしやすくなります。
3. ルールを階層化する
すべてのルールを常に読ませる必要はありません。コード規約やドメイン知識のような「常に適用される情報」は事前指示(システムプロンプト)に固定し、個別のタスク指示はシンプルに保つ、という役割分担が有効です。
| 層 | 内容の例 |
|---|---|
| 恒久ルール(常時) | コーディング規約、使用技術、禁止ライブラリ |
| タスク別指示(都度) | 今回の要件、完了条件、出力形式 |
恒久ルールは最小限に絞るのが基本です。ルールが増えるほどコンテキスト汚染のリスクが高まります。
4. 複雑タスクでは推論余地を確保する
「短く」「要点のみ」という指示は、単純な質問応答では有効ですが、設計やデバッグのような複雑なタスクには向きません。タスクの性質に応じて使い分けることが大切です。
5. コンテキストの質を上げる
ルールを増やすより、「良いコンテキスト」を与える方が効果的です。適切な設計、明確な責務、よい命名―こうした情報の質がアウトプットの質に直結します。
まとめ
AIへの指示設計で見直すべきポイントをまとめます。
- 制約の「量」より「整合性」を意識する
- 互いに矛盾するルールが最大の品質低下要因
- 禁止事項より評価基準・優先順位を渡す
- 恒久ルールは薄く、タスクごとに必要最小限を追加
- 考える過程ではなくコンテキストを整理してトークンを節約する
「どんな制約を、いつ与えるか」を意識するだけで、同じモデルでも回答の質は大きく変わります。