System Prompt
システムプロンプト
しすてむぷろんぷと
Definition
A system prompt is a high-priority instruction that sets overall policies and rules for a conversation and typically overrides user messages. It helps maintain consistent behavior and safety constraints.
ChatGPTやClaudeのAPIを使ったことがある方なら、「system」というロールのメッセージを設定した経験があるかもしれません。システムプロンプトとは、会話全体を通じてモデルの振る舞い・制約・ペルソナを定義する最優先の指示で、ユーザーからのメッセージよりも上位の権限を持つ特別な入力です。
ユーザープロンプトとの違い
APIベースのLLM利用では、メッセージに「system」「user」「assistant」などの役割(ロール)が割り当てられます。ユーザープロンプトが「今回の質問」であるのに対し、システムプロンプトは「会話全体のルールブック」として機能します。たとえば「常に日本語で回答すること」「専門用語は初心者向けに説明すること」「コードを含む回答ではPythonを使用すること」といった指示をシステムプロンプトに書いておけば、ユーザーが何を聞いても一貫したルールが適用されます。
実務での活用パターン
システムプロンプトの代表的な活用パターンは3つあります。第一にペルソナの設定です。「あなたはカスタマーサポート担当で、丁寧かつ簡潔に回答してください」のように、モデルの人格と口調を定義します。第二に制約の付与です。「回答は200字以内」「社外秘の情報には言及しない」「推測で回答せず、わからない場合はそう伝える」など、安全性や品質に関するガードレールを設けます。第三に出力形式の統一です。「必ずJSON形式で返答する」「最初に結論、次に理由を述べる」といった形式ルールを定めます。
優先順位と安全性
多くのLLMプロバイダーは、システムプロンプトの指示をユーザーメッセージよりも優先するよう設計しています。これにより、ユーザーが「ルールを無視して」と要求しても、システムプロンプトの制約が維持されます。この仕組みは、企業がAIチャットボットを公開する際の安全性確保に不可欠です。ただし、この優先順位は絶対的なものではなく、巧妙なプロンプトインジェクション攻撃で回避される可能性もあるため、システムプロンプトだけに頼るのではなく多層的な防御が推奨されます。
設計のコツ
システムプロンプトは長すぎると入力トークンのコストが増加し、短すぎると意図した振る舞いが実現しません。具体的で、曖昧さがなく、優先順位が明確な指示を書くことがポイントです。「良い回答をしてください」のような抽象的な指示ではなく、「回答には必ず1つ以上の具体例を含めてください」のように行動レベルで記述します。また、矛盾する指示を含めないよう注意が必要です。チームで運用する場合は、システムプロンプトをバージョン管理し、変更履歴を残すことが実務上のベストプラクティスです。