LESSON 30分

システムプロンプトとロール設定

ストーリー

「ここまでのテクニックで、だいぶ使えるようになったと思う。 最後にもう一つ、強力な武器を渡そう」

中島先輩がClaudeのAPI画面を開いた。

システムプロンプトだ。これを設定すると、AIの振る舞い全体を制御できる。 毎回同じ前提条件を書く手間がなくなるぞ」

「ChatGPTのCustom Instructionsみたいなものですか?」

「そうそう。あれもシステムプロンプトの一種だ。 自分専用のAIアシスタントを作るような感覚だな」


システムプロンプトとは

通常のプロンプトとの違い

[システムプロンプト] ← AIの「人格」「振る舞い」を定義
  ↓
[ユーザープロンプト] ← 個々の質問や指示
  ↓
[AIの回答]          ← システムプロンプト + ユーザープロンプトを踏まえて生成
種類役割設定タイミング
システムプロンプトAIの基本的な振る舞いを定義会話の開始時に1回
ユーザープロンプト個々のタスクや質問毎回のメッセージ

どこで設定できるか

サービス設定方法
ChatGPTCustom Instructions、GPTs のInstructions
ClaudeProjects の 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分