システムプロンプト(System Prompt)は、LLMに対する「役割・方針・禁止事項」を先に渡す上位指示です。プロンプト記事がユーザー入力の書き方中心なら、本記事はアプリ開発・運用側が固定する層——誰が書き、どこまで効くか、どう攻撃されるか——に焦点を当てます。
試験で問われる見方
システムプロンプト単体の定義問題は少なく、プロンプト全般・出力確認・インジェクションの文脈で問われます。「条件をプロンプトに書けば出力確認は不要」は×(TF-0442)。システム指示があっても、ユーザー入力や外部文書で上書きを試みる攻撃があり得ます。
システムプロンプトとは
Chat Completions APIなどでは、role: systemのメッセージがこれに相当します。例:「あなたは社内ITヘルプデスクの助手です。敬語で答え、未確認の情報は推測しないでください。」
利用者がチャット欄に打つ文章は多くの場合ユーザープロンプトです。システムプロンプトはプロダクトの性格を決める土台で、会話が続く限り(または都度)モデルに渡されます。
メッセージの積み重ね
1回の推論でモデルが参照する典型構造です(製品により名称は異なります)。
| 層 | 誰が設定 | 役割 |
|---|---|---|
| システム | 開発者・運営者 | 役割・トーン・禁止事項・出力形式の枠 |
| ユーザー | 利用者 | そのターンの質問・依頼 |
| アシスタント | モデル(過去) | 会話履歴として次ターンに含まれる |
| ツール結果(任意) | エージェント等 | 検索・APIの返り値を文脈に注入 |
履歴が長いほどトークンを消費します。システムプロンプトは毎回送られるため、冗長な固定文はコストに効きます。
設計で書くこと
実務・プロダクト設計でシステムプロンプトに含める要素の例です。
- ペルソナ — 「何の専門家か」「口調はどうか」
- スコープ — 答える範囲・答えない範囲(医療判断はしない等)
- 出力形式 — JSON、箇条書き、最大長
- 根拠の扱い — RAG結果のみを根拠にする、不明時は「わからない」
- 安全策 — 機密・個人情報を繰り返さない、推測で埋めない
プロンプトエンジニアは、こうしたシステム層と評価ループの設計も担当領域に含みます。
利用者から見えるか
消費者向けチャットUIでは、システムプロンプトは非表示が一般的です。一方、API利用や開発者向けツールでは編集・デバッグできます。
「システムプロンプトをユーザーに見せない=改ざんできない」ではありません。攻撃者はユーザー入力経由で指示の上書きを試みます。秘匿はセキュリティ対策の一部にすぎません。