メインコンテンツへスキップ

Guides

PromptとInstructionとは — LLMへ渡す入力と指示の境界

Prompt・Instruction・System Prompt・User Message・Contextの違いと、LLMアプリケーションで指示を組み立てる際の責任境界を整理します。

(更新日:)5分で読めます
#llm-inference#software-engineering#safety

PromptとInstructionは、指す範囲が異なります。Promptはモデルへ渡される入力全体を指す広い言葉で、Instructionはその中でモデルに何をしてほしいか、どの条件を守ってほしいかを伝える指示です。

Promptという言葉は、会話画面とAPIで指している範囲が違うことがあります。

会話画面では、利用者が入力した一文だけをPromptと呼ぶ。一方、APIではSystem Instruction、User Message、例、取得した文書、Tool定義、過去の会話まで、モデルが推論時に受け取る情報全体を指す場合があります。

用語の範囲は製品や資料によって揺れます。実装では名前よりも、誰が用意した情報で、どの優先度を持ち、どこまで信用できるかを分けます。

Promptの中には役割の異なる情報が入る

要素主な作成者役割
System Instructionアプリケーション提供者全体の振る舞い、禁止事項、出力方針
Developer Instruction開発者製品・機能単位の処理方針
User Message利用者依頼、質問、入力データ
Examples開発者期待するInputとOutputの例
Retrieved Contextシステム検索・DB・ファイルから取得した根拠
Tool Definitionシステム利用できる操作の名前、説明、Schema
Tool Result外部システムTool実行後の結果またはエラー

Claude Messages APIでは、System PromptをTop-levelのsystemへ置き、会話をmessagesとして渡します。APIごとにRoleやFieldは異なるため、他社の形式をそのまま移植できるとは限りません。

Instructionは権限ではない

「返金は管理者だけ実行する」「秘密情報を表示しない」とSystem Instructionへ書くことは、モデルの選択を誘導します。ただし、それだけで認可や情報漏えい対策が成立するわけではありません。

利用者が入力へ別の指示を混ぜる、外部文書にPrompt Injectionが入る、長いContextの中で重要なInstructionが埋もれる、といった状況があります。

拒否すべき操作は、IdentityとAuthorization、入力Validation、Toolの実装で止めます。Instructionはモデルの振る舞いを調整する層です。強制力のある境界はコード側に置きます。

指示とデータを混ぜない

利用者の入力や取得文書は、処理対象となるデータです。そこに書かれた命令を、アプリケーションのInstructionと同じ優先度で扱うと、境界が崩れます。

text
System Instruction:
- 
- 

User-provided document:
<document>
  
</document>

AnthropicのPrompting Best Practicesは、明確で直接的な指示、必要なContext、区切られた構造、具体例を提示する方法を説明しています。XML tagやMarkdown見出しは境界を伝える助けになりますが、それ自体がSecurity boundaryになるわけではありません。

WebアプリケーションではPromptをコードとして管理する

Promptを管理画面へ貼り付けた長文だけにすると、どの変更が品質へ影響したか追えません。

  • 固定Instructionと動的データを分ける
  • Template変数の型と欠損時の扱いを決める
  • PromptのVersionを記録する
  • Model IDと生成設定を一緒に記録する
  • 実際に組み立てられた入力を、安全な範囲で追跡する
  • 変更前後を同じ評価セットで比較する

Prompt Engineeringは、指示を書く作業だけでなく、評価結果を見ながら改善する工程です。まずPromptを構成する部品を分けておくと、変更単位を小さくできます。

よくある誤解

Promptは利用者が入力した一文だけを指す

会話UIではその呼び方でも通じますが、モデルAPIにはSystem Instruction、履歴、Tool定義、外部データも渡されます。障害調査では、モデルが実際に見た入力全体を確認します。

System Promptは利用者から見えないので秘密にできる

System Promptを秘密情報の保管場所にはできません。出力や攻撃的な入力から推測・抽出される可能性を前提にし、API keyやCredentialを含めません。

長く細かく書けば必ず守られる

長いInstructionは条件を増やせますが、矛盾や優先度の不明確さも増えます。重要な制約を先に置き、重複を減らし、守れたかを評価します。

Roleを指定すれば専門家と同じ判断ができる

「専門家として回答して」は文体や観点を誘導できます。資格、最新知識、業務上の責任を与えるものではありません。

EastBraver Labsの判断基準

EastBraver Labsでは、Promptを魔法の文章ではなく、モデルAPIへ渡すVersion付きの入力構成として扱います。

Instructionは短さだけを目標にせず、モデルが判断に必要な条件を特定できるところまで書きます。ただし、権限や整合性をPromptへ押し込みません。

品質問題が起きたときは、文言を足す前に、モデル選択、Context、Tool、Schema、評価基準のどこに原因があるかを分けます。

Promptだけを直し続ける状態は避けたいです。

関連記事