AIの回答品質の8割はSystem Promptで決まるとも言われます。Claude・GPT・Geminiそれぞれに効く指示の書き方と、すぐ使えるテンプレートを解説します。

AIを知りたい
システムプロンプトってユーザーメッセージと何が違うんですか?

AIエンジニア
システムプロンプトはAIの「性格」や「役割」を定義するものです。ユーザーメッセージは個別の質問ですが、システムプロンプトはAIの振る舞い全体に影響を与えます。

AIを知りたい
うまく書くコツはありますか?

AIエンジニア
いくつかの重要なテクニックがあります。適切に設計すると、AIの出力品質が劇的に変わりますよ!
System Promptとは
System Prompt(システムプロンプト)とは、AIモデルに対して最初に与える指示であり、AIの役割、能力、制約、出力形式などを定義します。Claude、GPT、Geminiの各APIで利用でき、APIリクエストのsystemパラメータとして渡します。
効果的なSystem Promptの構成要素

AIを知りたい
何を書けばいいですか?

AIエンジニア
効果的なシステムプロンプトには5つの要素があります。
| 要素 | 説明 | 例 |
|---|---|---|
| 役割定義 | AIの専門性や立場 | 「あなたはシニアPythonエンジニアです」 |
| 能力範囲 | 何ができて何ができないか | 「コードレビューとバグ修正が専門です」 |
| 出力形式 | 回答のフォーマット指定 | 「JSON形式で回答してください」 |
| 制約条件 | 禁止事項やルール | 「推測で回答せず、不明な場合は質問して」 |
| トーン指定 | 会話の雰囲気 | 「丁寧かつ簡潔に回答して」 |
各API別のSystem Prompt設定

AIを知りたい
APIによって書き方が違うんですか?

AIエンジニア
基本コンセプトは同じですが、設定方法が異なります。
# Claude API
response = anthropic.messages.create(
model="claude-sonnet-4-20250514",
system="あなたはシニアPythonエンジニアです。",
messages=[{"role": "user", "content": "このコードをレビューして"}]
)
# OpenAI API
response = openai.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": "あなたはシニアPythonエンジニアです。"},
{"role": "user", "content": "このコードをレビューして"}
]
)
# Gemini API
model = genai.GenerativeModel(
model_name="gemini-2.0-flash",
system_instruction="あなたはシニアPythonエンジニアです。"
)
response = model.generate_content("このコードをレビューして")
実践的なSystem Promptテンプレート

AIを知りたい
すぐ使えるテンプレートが欲しいです!

AIエンジニア
コードレビュアーのテンプレートを紹介します。
あなたはシニアソフトウェアエンジニアです。 以下の観点でコードをレビューしてください: 1. バグや潜在的な問題 2. パフォーマンスの改善点 3. セキュリティリスク 4. コードの可読性 回答形式:各項目について「問題」「理由」「修正案」を記載
System Prompt設計のアンチパターン

AIを知りたい
やってはいけないことはありますか?

AIエンジニア
よくある失敗パターンを紹介します。
| アンチパターン | 問題 | 改善策 |
|---|---|---|
| 曖昧な指示 | 一貫性のない出力 | 具体的な基準と形式を指定 |
| 矛盾する指示 | 「簡潔」かつ「詳細」 | 優先順位を明確化 |
| 過度に長い指示 | 重要な指示が埋もれる | 構造化して要点を先頭に |
| ネガティブ指示のみ | 「〜するな」だけでは不十分 | 望ましい行動も明記 |

AIを知りたい
System Promptで出力が大きく変わるんですね!

AIエンジニア
System Promptはプロンプトエンジニアリングの最重要要素です。一度いいテンプレートを作れば、プロジェクト全体で再利用できますよ!
関連記事
- AIプロンプト集2025:開発・ビジネス・Claude Codeで使えるテンプレート50選
- CLAUDE.md完全ガイド:Claude Codeのプロジェクト設定ファイルの書き方
- Claude API Tool Use(関数呼び出し)の実装ガイド
OpenAI APIでsystemメッセージを設計する:ペルソナ設定と出力制御の実装
ChatCompletion APIのsystemメッセージを活用して、AIの振る舞いを精密に制御するテクニックを実装します。ペルソナ設定・出力フォーマット指定・制約条件の組み合わせにより、用途に応じた応答を安定して得る方法を確認しましょう。
from openai import OpenAI
client = OpenAI()
# ---- パターン1: 専門家ペルソナ + 出力フォーマット指定 ----
system_expert = """あなたは機械学習エンジニア(経験10年)です。
以下のルールに従って回答してください:
- 技術的に正確な情報のみ回答する
- 不確実な場合は「確認が必要です」と明記する
- 回答は以下のJSON形式で返す:
{"answer": "回答本文", "confidence": "high/medium/low", "references": ["参考情報"]}
- 日本語で回答する"""
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": system_expert},
{"role": "user", "content": "BERTとGPTのアーキテクチャの違いを説明してください"}
],
temperature=0.3,
max_tokens=1000
)
print("=== 専門家ペルソナ ===")
print(response.choices[0].message.content)
# ---- パターン2: ガードレール付きカスタマーサポート ----
system_support = """あなたはSaaSプロダクトのカスタマーサポート担当です。
## 必ず守るルール
1. 製品に関する質問のみ回答する
2. 競合製品の批判はしない
3. 価格交渉には応じず「営業チームにおつなぎします」と案内する
4. 技術的な問題は「サポートチケットを作成します」と案内する
5. 回答は3文以内に収める
## 禁止事項
- 社内情報や開発ロードマップの開示
- 法的アドバイス
- 個人情報の要求"""
response2 = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": system_support},
{"role": "user", "content": "料金を安くしてもらえませんか?"}
],
temperature=0.5
)
print("\n=== サポートペルソナ ===")
print(response2.choices[0].message.content)
# ---- パターン3: Few-shot例をsystemに含める ----
system_fewshot = """あなたは文章要約アシスタントです。以下の例に従って要約してください。
## 要約例
入力: 「深層学習は多層のニューラルネットワークを用いた機械学習手法で、画像認識や自然言語処理で高い性能を示す。大量のデータと計算資源を必要とするが、特徴量の自動抽出が可能である。」
出力: 「深層学習は多層NNによるML手法。画像・NLP分野で高性能だが、大量データと計算資源が必要。特徴量を自動抽出できる点が強み。」
## ルール
- 元の文章の50%以下の文字数にする
- 専門用語は略称を使用可
- 重要な数値や固有名詞は保持する"""
response3 = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": system_fewshot},
{"role": "user", "content": "Transformerは2017年にGoogleが発表した深層学習アーキテクチャで、Self-Attentionメカニズムにより系列データの長距離依存関係を効率的に捉える。RNNと異なり並列計算が可能で、BERTやGPTなど現代の大規模言語モデルの基盤となっている。"}
],
temperature=0.2
)
print("\n=== Few-shot要約 ===")
print(response3.choices[0].message.content)
System Prompt設計の要点は3つあります。第一に、ペルソナ(役割)・ルール(制約)・フォーマット(出力形式)を明確に分離して記述することで、モデルが各指示を正確に解釈しやすくなります。第二に、禁止事項を具体的に列挙するガードレール方式は、望まない出力を抑制する最も効果的な手段です。第三に、Few-shot例をsystemメッセージ内に含めることでuserメッセージのトークンを節約しつつ、出力の品質と一貫性を大幅に向上できます。temperatureはルール遵守が重要な場面では0.2〜0.3、創造性が必要な場面では0.7以上が目安です。
