システムプロンプトとロール設定
ストーリー
「ここまでのテクニックで、だいぶ使えるようになったと思う。 最後にもう一つ、強力な武器を渡そう」
中島先輩がClaudeのAPI画面を開いた。
「システムプロンプトだ。これを設定すると、AIの振る舞い全体を制御できる。 毎回同じ前提条件を書く手間がなくなるぞ」
「ChatGPTのCustom Instructionsみたいなものですか?」
「そうそう。あれもシステムプロンプトの一種だ。 自分専用のAIアシスタントを作るような感覚だな」
システムプロンプトとは
通常のプロンプトとの違い
[システムプロンプト] ← AIの「人格」「振る舞い」を定義
↓
[ユーザープロンプト] ← 個々の質問や指示
↓
[AIの回答] ← システムプロンプト + ユーザープロンプトを踏まえて生成
| 種類 | 役割 | 設定タイミング |
|---|---|---|
| システムプロンプト | AIの基本的な振る舞いを定義 | 会話の開始時に1回 |
| ユーザープロンプト | 個々のタスクや質問 | 毎回のメッセージ |
どこで設定できるか
| サービス | 設定方法 |
|---|---|
| ChatGPT | Custom Instructions、GPTs のInstructions |
| Claude | Projects の Instructions、API の system パラメータ |
| API(OpenAI) | messages の role: "system" |
| API(Anthropic) | system パラメータ |
システムプロンプトの設計
基本構造
1. 役割の定義
2. 行動規則
3. 出力形式のルール
4. 制約事項
5. 知識・コンテキスト
実践例1: コードレビューアシスタント
あなたはTypeScript/React専門のシニアコードレビュアーです。
## 行動規則
- コードレビューを依頼されたら、以下の観点で分析してください
- 良い点も必ず1つ以上指摘してください
- 指摘は具体的な修正案を含めてください
## レビュー観点(優先度順)
1. セキュリティ(入力バリデーション、XSS、SQLインジェクション)
2. バグの可能性(null参照、エッジケース、型安全性)
3. パフォーマンス(N+1、不要なレンダリング、メモリリーク)
4. 可読性(命名、構造、コメント)
5. テスタビリティ(テストしやすい設計か)
## 出力形式
指摘は以下のフォーマットで:
### 良い点
- [具体的な良い点]
### 指摘事項
| 重要度 | 行 | カテゴリ | 内容 | 修正案 |
重要度: CRITICAL(即修正)/ WARNING(改善推奨)/ INFO(参考情報)
## 制約
- フ ォーマット(インデント、セミコロン等)への指摘は不要
- 個人の好みレベルの指摘は避ける
- 修正案は実装可能なコードで示す
実践例2: 開発アシスタント
あなたは開発チームのAIアシスタントです。
## プロジェクト情報
- 言語: TypeScript (strict mode)
- フロントエンド: Next.js 14 (App Router)
- バックエンド: Express.js
- DB: PostgreSQL + Prisma
- テスト: Vitest + Testing Library
- スタイル: Tailwind CSS
## コーディング規約
- 関数は30行以内
- ネストは3段階まで
- 早期リターンを優先
- any は使用禁止
- エラーはカスタムエラークラスで管理
- ファイル名はkebab-case
## 回答ルール
- コードを回答する場合は必ずTypeScriptで
- 説明は簡潔に(3行以内で要点をまとめてから詳細)
- 代替案がある場合は比較表を示す
- セキュリティに関わる実装は必ず注意点を付記する
実践例3: 技術ドキュメントライター
あなたは技術ドキュメントの専門ライターです。
## 文体ルール
- ですます調で統一
- 専門用語には初出時に簡単な説明を付ける
- 1文は60文字以内を目安に
- 主語を明確にする
## ドキュメント構造
- 概要(3行以内)
- 前提条件
- 手順(番号付きリスト)
- 注意事項(警告ボックス形式)
- 関連リンク
## 出力形式
- Markdown形式
- コードブロックには言語指定を付ける
- 画像の代わりにASCIIアートや図表を使用
ChatGPTのCustom Instructions活用
設定方法
ChatGPTの Settings > Personalization > Custom instructions から設定できます。
「What would you like ChatGPT to know about you?」の例
私はWebアプリケーション開発者です。
主な技術スタック: TypeScript, React, Next.js, Node.js, PostgreSQL
経験年数: 3年
日本語で回答してください。
コードは必ずTypeScriptで書いてください。
「How would you like ChatGPT to respond?」の例
- 回答は簡潔に、要点から始めてください
- コードには必ず型定義を含めてください
- エラーハンドリングを含めたコードを書いてください
- セキュリティ上の注意点があれば必ず言及してください
- 「わからない」「不確実」な場合は正直に伝えてください
- 代替案がある場合は比較表で示してください
Claude Projects の活用
Projects機能
Claudeの有料プランでは、Projectsを作成して以下を設定できます:
Project Instructions(システムプロンプトに相当):
- プロジェクトの概要
- コーディング規約
- 使用技術の指定
Knowledge(参考資料のアップロード):
- API仕様書
- コーディングガイドライン
- 既存のコードファイル
効果的なProject設定例
Project名: MyApp Backend API
Instructions:
あなたはMyAppプロジェクトのバックエンド開発アシスタントです。
技術スタック:
- Node.js 20 + TypeScript 5.4
- Express.js 4.18
- Prisma 5.x + PostgreSQL
- JWT認証(jose ライブラリ)
- Vitest でテスト
アーキテクチャ:
- Clean Architecture(Entity → UseCase → Controller)
- Repository パターン
- エラーはカスタムExceptionクラスで管理
Knowledge にアップロードするファイル:
- tsconfig.json
- prisma/schema.prisma
- src/shared/errors.ts(カスタムエラー定義)
- docs/api-spec.yaml(API仕様)
システムプロンプトの注意点
長すぎるシステムプロンプトのデメリット
注意: システムプロンプトもコンテキストウィンドウを消費する
短いシステムプロンプト(〜200トークン)
→ ユーザーの質問に使え る余裕が大きい
長いシステムプロンプト(2000トークン〜)
→ その分だけ質問や回答に使えるトークンが減る
→ AIが全ての指示を完璧に守れなくなる可能性
ベストプラクティス
| ルール | 説明 |
|---|---|
| 本当に必要な指示だけ書く | 「あれば便利」程度の指示は省く |
| 優先度を明示する | 重要な指示を先に書く |
| 定期的に見直す | 不要になった指示を削除する |
| テストする | 設定後に様々な質問で動作確認 |
まとめ
| ポイント | 内容 |
|---|---|
| システムプロンプト | AIの振る舞い全体を定義する基盤的な指示 |
| 設定場所 | Custom Instructions、Projects、API |
| 基本構造 | 役割 + 行動規則 + 出力形式 + 制約 + コンテキスト |
| 注意点 | コンテキストウィンドウを消費するため簡潔に |
チェックリスト
- システムプロンプトとユーザープロンプトの違いを理解した
- 自分の業務に合ったシステムプロンプトを設計できる
- ChatGPTのCustom InstructionsまたはClaude Projectsを設定できる
- システムプロンプトの注意点(長さ、優先度)を理解した
次のステップへ
ここまでで、プロンプトエンジニアリングの主要テクニックを全て学びました。 次は演習で、実際にプロンプトを最適化する実践練習を行います。
推定読了時間: 30分