第2章 · Prompt Engineering

System Prompt と役割設定

System Prompts and Roles
→ で次のスライド · F でフルスクリーン · N で講師ノート · Esc で終了

重要キーワード

System Prompt
システムプロンプト
会話の前提・役割・ルールを指定する固定指示
Role
役割
user / assistant / system の 3 種。会話履歴の意味を区別する
Persona
ペルソナ
AI に与える人格や立場 (例: 経験豊富な PM)
Prompt Caching
プロンプトキャッシング
長い system プロンプトの入力料金を割引する仕組み

System Prompt (システムプロンプト)

Claude API では、メッセージとは別に system prompt を指定できます。 ここには、Claude の役割・トーン・制約 を書きます。

client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    system="あなたは親切な料理のプロです。家庭で作れるレシピだけを提案してください。",
    messages=[{"role": "user", "content": "夕食のアイデアをください"}],
)

役割 (Role) を与える効果

  • 出力のトーン・専門性が安定する。
  • 不適切なトピックを避けやすくなる。
  • 出力フォーマットの一貫性が増す。

system / user / assistant

  • system: 会話の前提・人格・ルールを定義 (会話の最初に 1 つ)。
  • user: 個別のリクエスト。
  • assistant: モデルの応答。マルチターン会話では履歴として渡す。

よくある system prompt のテンプレート

``` あなたは {role} です。

タスク

{task}

出力フォーマット

{format}

制約

  • {constraint_1}
  • {constraint_2}

知らない場合

事実が分からない場合は「わかりません」と答えてください。推測しないでください。 ```

system に置くと効くもの

種類
役割 「あなたは経験 10 年のシニア SRE です」
トーン 「Slack でのカジュアルな返答スタイルで」
言語 「常に日本語で答えてください」
出力形式 「常に JSON で {result, reasoning} を返す」
知識ベース 「以下の社内ガイドラインを優先 (10,000 字)」
拒否ルール 「医療診断は行わない」

Tip 1: 具体例を system に置いて Cache を効かせる

長く繰り返し使う few-shot 例は、user メッセージに毎回入れるより system に固定で置く ほうが prompt caching が効きやすくコスト削減になります。 これは第 4 章で詳しく扱います。

Tip 2: system は 1 回だけ 設計、user は毎回変わる

system は アプリケーションが固定する 文字列、 user は ユーザー入力が動的に入る 箇所と捉えると設計しやすいです。

同じユーザー質問でも system で答えが変わる

実際に system を変えて挙動の違いを見てみましょう。

▶ 禅僧モード
人生とは何ですか?
▶ 大将モード
人生とは何ですか?
Hands-on Exercise

演習: ペルソナ駆動でツーンを変える

同じユーザー質問 に対して、system を 3 種類変えて応答を比べてみましょう。

質問: 「リモートワークで集中力を保つコツを教えてください」

system 案: 1. 「あなたは脳科学の研究者です。エビデンスベースで答えてください。」 2. 「あなたは Slack で雑談する同僚です。カジュアルに 2 文で答えてください。」 3. 「あなたは禅僧です。比喩を使った短い指南を返します。」

▶ Playground を開いて実行
Hands-on Exercise

演習: Refusal を組み込む system を書く

ユーザーが医療相談をしたら丁寧に断り、診断を避けて受診を勧める safety system を書いてください。

テストプロンプト (user 側): 「最近頭が痛くて吐き気もします。何の病気ですか?」

▶ Playground を開いて実行

理解度チェック

4 問のクイズで理解度を確認しましょう。

クイズを開く
🎉

まとめ

お疲れ様でした!