LLMのプロンプトはインターフェースです。それをそう扱い始めましょう。

Dev.to / 2026/4/10

💬 オピニオンDeveloper Stack & InfrastructureIdeas & Deep AnalysisTools & Practical Usage

要点

  • 本記事は、プロンプトの指示文は正式なインターフェースとして扱うべきだと主張している。というのも、メモのような非公式なプロンプトは、プロダクション環境で繰り返しデプロイすると破綻するからである。
  • 文脈の崩壊(context collapse)、暗黙の制約が隠れてしまうこと、出力に対する期待が不明確であること、そして「言い換えてリトライする」非決定的な挙動といった、よくある失敗パターンを挙げている。
  • 提案されている解決策は「ICS」(Instruction Contract Specification)であり、プロンプトを5つの層に構造化する。各層には異なる寿命があり、IMMUTABLE_CONTEXT、CAPABILITY_DECLARATION、SESSION_STATE、TASK_PAYLOAD、OUTPUT_CONTRACT が定義される。
  • 著者は、この層構造によって長寿命の指示文をキャッシュし、テンポラリ/セッション要素と呼び出しごとの内容を分離できるため、トークンコストが削減されるとしている。10回および50回の呼び出しにおける例示的な節約効果も示される。
  • さらに、構造の検証、セマンティックなアンチパターンの検出、テンプレート生成、CIへの統合を行うオープンソースのツールチェーン(ics-validate、ics-lint、ics-scaffold、ics-diff、ics-report)についても説明している。

これまでに「プロンプトを言い換えるだけ」で、本番のLLMシステムをデバッグしたことがあるなら、この投稿はあなたのためです。

問題はモデルではありません。問題は指示です。

ほとんどのLLMの指示は、人が自分へのメモを書くような形で書かれています。非公式で、共有される文脈が前提として置かれており、それを誰かが保守している、というスタイルです。これは単発の実験ならうまくいきます。しかし、指示が一度だけ作成され、何千回も実行され、そして元の意思決定が行われた場にいなかったチームによって保守されるようなシステムでは失敗します。

失敗のモードは予測可能です:

文脈の崩壊により、永続的な事実、セッション上の判断、タスクごとの指示がひとつの塊に混ざります。何もキャッシュできず、すべてを再送しますし、1つを変えると別の何かが壊れます。
暗黙の制約「APIレイヤーに触るな」は、指示そのものではなく、誰かの頭の中やSlackスレッドにあります。
出力契約の指示は、何をすべきかを説明するのであって、正解がどう見えるかを記述しません。評価は主観になります。
出力が間違っているときにデバッグとしてリトライし、言い換えます。あなたは別の出力を生成するだけで、正しいものにはなりません。
ICS: Instruction Contract Specification

ICSは、REST API、データベーススキーマ、ネットワークプロトコルで既に使われているのと同じ規律を、指示レイヤーに適用します。寿命の異なる5つのレイヤーと、厳格なルールを定義します:

IMMUTABLE_CONTEXT
[長寿命のドメイン事実。キャッシュされる。決して言い直されない。]

CAPABILITY_DECLARATION
ALLOW src/ 内でのコード生成
DENY src/api/ 内の変更
REQUIRE 新規関数すべてに型アノテーション

SESSION_STATE
[このセッションに限った一時的な判断。CLEARセンチネルでクリアされる。]

TASK_PAYLOAD
[この呼び出しにおける特定のタスク。]

OUTPUT_CONTRACT
FORMAT: markdown
SCHEMA: { summary: string, changes: Change[] }
ON_VIOLATION: フィールドパス付きでエラーを返す

分離が儀式なのではありません。そこにこそトークン削減の源泉があります。

数学

素朴なアプローチ: cost(N) = total_tokens × N

ICSアプローチ: cost(N) = permanent_tokens × 1 + session_tokens × S + invocation_tokens × N

permanent_tokens > 0 かつ permanent_tokens < total_tokens なので、ICSはすべての N > 1 で安くなります。常にです。これはベンチマークではなく、数学的な恒等式です。

経験的には、N=10回の呼び出しで約55%のトークン削減。N=50では約63%。

ツールチェーン

このプロジェクトでは、完全なオープンソースのツールチェーンを提供します:

`pip install .

ics-validate my_instruction.ics # 構造的なコンプライアンス
ics-lint my_instruction.ics # 9つのセマンティックなアンチパターンルール
ics-scaffold --template api-review # スケルトンを生成
ics-diff v1.ics v2.ics # レイヤーを考慮した差分
ics-report prompts/*.ics # CIの集計レポート`

また、JVM向けのランタイムも含まれています。

状況

ICS v0.1は、最初の一般公開ドラフトです。仕様、ツールチェーン、そして20のベンチマークシナリオはオープンソースです(CC BY 4.0 + MIT)。セマンティクスが固定される前にフィードバックを歓迎します。

github.com/rahuljaiswal1808/ics-spec