AnthropicはClaude Codeをガイドするシステムプロンプトの80%を削減しましたが、コード作成能力の低下は報告されていません。この実験は、大規模言語モデル(LLM)の能力が向上するにつれて、開発者がモデルを軌道に乗せ続けるために使用していた膨大な足場(scaffolding)を、パフォーマンスを損なうことなく削ぎ落とせるようになることを示しています。

そもそもなぜプロンプトが重要だったのか

Claude Codeがリリースされた当初、そのシステムプロンプトには数十ものルールが記載されていました。エンジニアはバグが発生するたびに新しい行を追加してきましたが、うまく機能しているように見えるものを削除することは滅多にありませんでした。その結果、プロンプトは時間の経過とともに、複雑に絡み合った静的なドキュメントへと成長してしまったのです。

モデルのギャップは埋まりつつある

それらの余分なルールは、「モデルのギャップ」——モデルができることとアプリケーションが要求することの差——を隠していました。2024年当時、開発者は例えばコードへの過剰なコメントを防ぐために、厳格な制約を明示する必要がありました。しかし今日では、同じモデルであっても「既存のコードスタイルに合わせて」といった単一の指示から、望ましいスタイルを推論することができます。ルールは「助け」から「ノイズ」へと変わったのです。

コンテキスト・エンジニアリングにおける変化

Anthropicによる削減は、開発者がプロンプトを構成する方法における、より広範なシフトを反映しています。

  • 一度限りの重要な指示 – ルールを一度だけ述べ、モデルにそれを保持させる。
  • few-shot例の代わりにツール駆動のパラメータを使用する – ツールのスキーマ内で入出力の形状を記述し、モデルにそれを埋めさせる。
  • 漸進的な開示(Progressive disclosure) – 現在のステップに必要なコンテキストのみを提供し、必要に応じて後から追加する。
  • 静的なガイダンスをツールの説明に移動する – 「変数にはcamelCaseを使用する」といった事項は、システムプロンプトではなくツールの仕様に含めるべきである。
  • ハードコードされたルールをヒューリスティックに置き換える – ルールを無条件に強制するのではなく、ルールが適用されるかどうかをモデル自身に判断させる。

これらの戦術が機能するのは、以前は明示的な強化が必要だった多くの慣習を、モデルがすでに知っているからです。

削りすぎのリスク

最先端のモデル(frontier models)に利益をもたらす同じ削減が、より小さなモデルには悪影響を及ぼす可能性があります。Anthropicは、Haikuのようなモデルは、依然として軌道を外れないために、より豊かなプロンプトに依存していると指摘しています。能力の低いモデルからガイダンスを削りすぎると、元のプロンプトが防ごうとしていたエラー(一貫性のない命名、過剰なコメント、エッジケースの見落としなど)が再発する可能性があります。

自身のプロンプトを監査する方法

コード生成パイプラインを運用している場合、プロンプトの監査によって不要な部分(dead weight)を明らかにできるかもしれません。実用的なチェックリストは以下の通りです。

  • 指示の密度を再調整する – 実際に使用しているモデルに合わせて、ガイダンスの量を調整する。
  • 重複した指示を削除する – ルールがシステムプロンプトとツールの説明の両方に存在する場合は、一度だけに絞る。
  • 動作例をより豊かなスキーマに変換する – 具体的な例を、列挙されたパラメータ型やenum(列挙型)に置き換える。
  • 状況的な詳細を外部化する – 大きな参照ブロックは、モデルが必要に応じて取得できる別のファイルに移動する。
  • 消失した挙動に関するルールを削除する – モデルが不要なコメントを追加しなくなったのであれば、「コメント禁止」のルールは削除する。

勘に頼ってはいけません。シンプルな「3テスト・ルール」を使用してください。5つの現実的なコーディングタスクを実行し、各削除の前後の結果を比較し、退行(regression)がないかを確認します。

  1. ベースライン – フルプロンプトでのパフォーマンスを測定する。
  2. 削除 – 削除候補となる行またはブロックを取り除く。
  3. 再実行 – 同じ5つのタスクを実行する。

出力が変わる場合は、まだ影響力を持っている行を特定できたことになります。変わらない場合は、その行は安全に省略できます。

開発者が次に注目すべきこと

現時点での教訓は明確です。システムプロンプトは「生きているドキュメント」です。各行に有効期限があるものとして扱い、定期的に監査を行い、モデルの向上する能力に重労働を任せましょう。

Source: dev.to/ialijr/your-system-prompt-has-a-shelf-life-maintaining-prompts-as-models-improve-cd9