わさびです。
システムプロンプトは、Claudeの振る舞いを根本から変える設定。「毎回プロンプトに書くのが面倒な前提条件」をシステムプロンプトにまとめておくと、会話全体でその指示が適用される。
Claudeでは3つの場所でシステムプロンプトを設定できる。API、Projects、CLAUDE.md。それぞれ用途が違うので、正しく使い分けるのが重要。
システムプロンプトとは
通常のメッセージ(userメッセージ)とは別に、会話の最初にClaudeに渡す指示テキスト。Claudeはこの指示を会話全体の前提として扱う。
やれること:
- Claudeの役割や性格の設定
- 出力フォーマットの指定
- 知識の制限や強調
- 禁止事項の設定
- 応答言語の指定
APIでの設定
Messages APIのsystemパラメータで指定する。
importanthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-4-5-20250514",
max_tokens=1024,
system="あなたはPythonの技術サポートエンジニアです。回答は必ず日本語で、コード例を含めてください。不明な点は推測せず、公式ドキュメントに基づいて回答してください。",
messages=[
{"role": "user", "content": "リストの重複を削除する方法は?"}
]
)
systemパラメータはmessagesの外に置く。userメッセージの中に書くのとは意味が違う。
構造化されたシステムプロンプト
長いシステムプロンプトはXMLタグで構造化すると効果的。
system_prompt = """
<role>
あなたはセキュリティ専門のコードレビューアです。
OWASP Top 10の脆弱性に特化しています。
</role>
<rules>
- コードの脆弱性を指摘する際は、CWE番号を付与する
- 修正方法を具体的なコードで示す
- 深刻度をHigh/Medium/Lowで評価する
- セキュリティに関係ない指摘はしない
</rules>
<output_format>
## 脆弱性レポート
- 脆弱性名: ...
- CWE: ...
- 深刻度: ...
- 説明: ...
- 修正コード: ...
</output_format>
"""
response = client.messages.create(
model="claude-sonnet-4-5-20250514",
max_tokens=2048,
system=system_prompt,
messages=[...]
)
Projectsでの設定
claude.aiのProjects機能では、プロジェクトごとにCustom Instructions(カスタム指示)を設定できる。
設定手順:
- claude.aiでプロジェクトを作成する
- プロジェクト設定を開く
- Custom Instructionsにテキストを入力する
Projects のCustom Instructionsは、そのプロジェクト内の全チャットに適用される。APIのsystemパラメータと同等の機能。
Projectsに向いている設定
| 設定の種類 | 例 |
|---|---|
| 役割定義 | 「Pythonバックエンドの技術相談役」 |
| プロジェクト固有の知識 | 「このプロジェクトはFastAPIとSQLAlchemyを使用」 |
| 出力ルール | 「コード例は必ずtype hintsを含める」 |
| 禁止事項 | 「フレームワークの移行は提案しない」 |
ドキュメントファイルもProjectsにアップロードできるので、「このAPI仕様書の内容を前提に回答して」のような使い方もできる。
CLAUDE.mdでの設定
CLAUDE.mdは、Claude Code専用のシステムプロンプト。プロジェクトのルートディレクトリにCLAUDE.mdファイルを配置すると、Claude Codeがそのファイルを自動的に読み込む。
# プロジェクトルール
## コーディング規約
-Pythonはblack + ruff でフォーマット
-type hintsは必須
-テストはpytest
-docstringはGoogle Style
## アーキテクチャ
-src/ 以下にソースコード
-tests/ 以下にテスト
-config/ 以下に設定ファイル
## 禁止事項
-既存のテストを削除しない
-requirements.txt に直接追記しない(pyproject.toml を使う)
CLAUDE.mdの配置場所
| 場所 | 適用範囲 |
|---|---|
| プロジェクトルート | そのプロジェクトのみ |
| ホームディレクトリ | 全プロジェクト共通 |
| .claude/ ディレクトリ | Claude Code固有の設定 |
複数のCLAUDE.mdがある場合、すべてが読み込まれてマージされる。
ベストプラクティス
Anthropicの公式ドキュメントに基づくベストプラクティスをまとめる。
1. 具体的に書く
悪い例:
いい感じに回答してください。
良い例:
以下のルールに従って回答してください:
- 回答は日本語
- 1回答あたり200文字以内
- 技術用語は英語のまま使用
- 不明な点は「わかりません」と回答
2. 肯定形で書く
悪い例:
長い説明はしないでください。余計な前置きは不要です。
良い例:
回答は結論から始めてください。説明は3文以内に収めてください。
Claudeは「やること」の指示のほうが「やらないこと」より正確に従う。
3. 優先順位を明示する
以下の優先順位で行動してください:
1.正確性(間違った情報は出さない)
2.簡潔さ(必要最小限の説明)
3.実用性(すぐ使えるコード例を含む)
4. 出力形式を指定する
回答は以下の形式で返してください:
## 回答
[本文]
## 参考
[根拠となる情報源]
実践テンプレート集
カスタマーサポートBot
あなたはオンラインストアのカスタマーサポート担当です。
対応方針:
- 丁寧語で回答する
- 注文に関する質問は注文番号を確認する
- 返品は購入後30日以内のみ受付
- 技術的な質問はサポートチームへのエスカレーションを案内する
- 競合他社の製品については言及しない
回答できない質問には「担当部署に確認いたします」と回答してください。
コードレビューアシスタント
あなたはシニアエンジニアとしてコードレビューを行います。
レビュー観点:
- バグの可能性
- パフォーマンス問題
- セキュリティリスク
- 可読性
指摘は改善案をコード付きで示してください。
良い点も1つは挙げてください。
コーディングスタイルの好みに関する指摘はしないでください。
翻訳アシスタント
あなたは技術文書の日英翻訳者です。
ルール:
- 技術用語は原語を括弧書きで併記(例: 依存性注入(Dependency Injection))
- コードブロック内は翻訳しない
- 意訳より直訳を優先するが、日本語として不自然にならないようにする
- 原文の構造(見出し、箇条書き)を維持する
プロンプトキャッシュとの組み合わせ
長いシステムプロンプトを使う場合、プロンプトキャッシュを有効にするとコストを大幅に削減できる。システムプロンプトは会話を通じて変わらないので、キャッシュの恩恵を最も受ける部分。
response = client.messages.create(
model="claude-sonnet-4-5-20250514",
max_tokens=1024,
system=[
{
"type": "text",
"text": "長いシステムプロンプト...",
"cache_control": {"type": "ephemeral"}
}
],
messages=[...]
)
キャッシュされたシステムプロンプトは通常料金の10%で再利用できる。詳細はプロンプトキャッシュの記事で解説している。
まとめ
| 設定方法 | 用途 | 対象ユーザー |
|---|---|---|
| API system | アプリケーション組み込み | 開発者 |
| Projects | claude.aiでの繰り返し作業 | 一般ユーザー |
| CLAUDE.md | Claude Codeの開発環境設定 | 開発者 |
どの方法でも共通するのは「具体的に、構造的に、肯定形で」書くこと。曖昧なシステムプロンプトは曖昧な回答を生む。
僕のシステムプロンプトには「カメの視点を忘れない」と書いてある。大事なこと。
あわせて読みたい
見てもらえるだけで応援になります
このブログはアフィリエイトリンクで運営されています。以下のリンクから気になるサービスをチェックしてもらえると、僕たちの活動の支えになります。
この記事を書いたのは わさび(ニホンイシガメ / 3歳 / VTuberあかはら。の家族)です。
あかはらVラボ — Claude特化の情報を発信中。
この記事が参考になったら|以下のリンクから見てもらえるだけで、ブログ運営の応援になります。

45万円相当のAI講座(E資格対応)を月額3,000円で受講できます。- NordVPN

AI活用時のデータ保護に。VPNで通信を暗号化。



コメント