- AI ⚙️
システムプロンプトの書き方と例|エンジニア向けカスタム指示テンプレート
システムプロンプトとは、会話が始まる前にAIへ渡しておく「常設の指示」です。 役割、前提になる技術、出力の形式などを先に決めておくことで、毎回の依頼文を短くでき、返ってくる答えの形もそろいます。ChatGPT のカスタム指示や、Claude のプロジェクト指示、API の system パラメータは、どれもこの常設の指示を置く場所です。
この記事では、置き場所ごとの違いを比べる早見表、エンジニア向けの5つのテンプレート(コードレビュー・設計相談・SQL作成・ドキュメント作成・学習)、書く項目のチェック表、指示が効かないときの見直し表を載せます。各サービスの仕様は、Anthropic と OpenAI の公式ドキュメントを開いて確認できた内容だけを書いています。
確認環境:Anthropic(Claude のドキュメントとヘルプセンター、Claude Code のドキュメント)、OpenAI(ヘルプセンターと API ドキュメント)、GitHub Docs、agents.md の各ページを 2026-10-05 に照合。テンプレートの文字数は Python 3.11 の len() で数え、テンプレート内のテーブル定義は PostgreSQL 16.15 で作成できることを確かめ、API のリクエスト例は JSON として読み込めることを確かめました。
この記事の結論
- システムプロンプトには「毎回変わらない前提」だけを書きます。 役割、使う技術、出力の形式、してほしくないことの4つです。
- その都度の依頼(対象のコード、今回やりたいこと)は会話に書きます。 常設の指示に混ぜると、別の依頼のときに邪魔になります。
- 置き場所は「どこまで効かせたいか」で選びます。 自分の全チャットならカスタム指示、ある作業だけならプロジェクトの指示、アプリの利用者全員なら API の system、リポジトリで作業する全員なら指示ファイルです。
- 書き方は、具体的に・理由を添えて・例を付けて・見出しやタグで区切る。これは Anthropic と OpenAI のガイドに共通する考え方です。
| 書く場所 | 書く内容 | 例 |
|---|---|---|
| システムプロンプト(常設) | 役割 | あなたは TypeScript のコードレビュー担当です |
| システムプロンプト(常設) | 使う技術・前提 | Node.js 22、React 19、ESLint の推奨設定 |
| システムプロンプト(常設) | 出力の形式 | 指摘ごとに「重要度・場所・理由・修正案」 |
| システムプロンプト(常設) | してほしくないこと(代わりにどうするか) | 範囲の外は推測せず「判断できません」と書く |
| 会話(その都度) | 今回の依頼と材料 | この差分を見てください(コードを貼る) |
置き場所の早見表:効く範囲・誰に効くか・向く内容
| 置き場所 | 効く範囲 | 誰に効くか | 向く内容 |
|---|---|---|---|
| ChatGPT のカスタム指示 | すべてのチャット(設定するとすぐに全チャットへ適用) | 自分のアカウント | 返答の言語や文体、自分の職種や得意分野など、どの話題でも変わらないこと |
| ChatGPT のプロジェクトの指示 | そのプロジェクトの中のチャットだけ。全体のカスタム指示より優先される | 自分。共有したプロジェクトではメンバーも | その作業だけの役割、使う技術、出力の形式 |
| Claude のアカウント全体の指示 | 自分のすべての会話 | 自分のアカウント | 好みの進め方、用語、文体 |
| Claude のプロジェクト指示 | そのプロジェクトの中のすべてのチャット | 自分。Team・Enterprise プランで共有したプロジェクトではメンバーも | その作業の文脈と要件、手順のガイドライン、Claude に取ってほしい役割や視点 |
| API の system パラメータ(Anthropic)/instructions パラメータ(OpenAI) | そのリクエスト | そのアプリを使う全員 | アプリとしての役割、ルール、出力の形式 |
| リポジトリの指示ファイル(CLAUDE.md、AGENTS.md、.github/copilot-instructions.md) | そのリポジトリでのコーディングエージェントの作業 | リポジトリを使うチーム全員(バージョン管理で共有) | ビルドとテストのコマンド、構成、コーディング規約 |
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「システムプロンプトの書き方と例|エンジニア向けカスタム指示テンプレート」
どこに書くかの判断表
| 条件 | 選ぶ置き場所 |
|---|---|
| どの話題でも同じにしたい(日本語で答える、結論から書く など) | カスタム指示/アカウント全体の指示 |
| コードレビュー用、SQL用のように、作業ごとに役割を切り替えたい | プロジェクトの指示(作業ごとにプロジェクトを分ける) |
| チームで同じ指示を使いたい(チャット) | 共有したプロジェクトの指示 |
| 自分のプログラムからモデルを呼び出す | API の system/instructions |
| エディタやターミナルのコーディングエージェントに、リポジトリの決まりを伝えたい | リポジトリの指示ファイル |
| 今回だけの条件 | 会話にそのまま書く |
各置き場所について公式ドキュメントで確認できたこと
| 置き場所 | 確認できた内容 |
|---|---|
| ChatGPT のカスタム指示 | すべてのチャットにすぐ適用される。文字数の上限は、Free・Go が1,500字、Plus・Pro・Business・Enterprise・Education が5,000字。Web・デスクトップでは Settings → Personalization → Custom Instructions から設定する。共有リンクを見る人には指示は共有されない |
| ChatGPT のプロジェクトの指示 | プロジェクトのメニュー(•••)から Project settings を開いて書く。その中だけで効き、全体のカスタム指示を上書きする |
| Claude のアカウント全体の指示 | Settings で設定し、すべての会話に適用される |
| Claude のプロジェクト指示 | 「Set project instructions」から書いて保存する。プロジェクト内のすべてのチャットで使われる。プロジェクトは無料のアカウントを含むすべてのユーザーが使え、無料のアカウントは5つまで。共有時は「Can edit」の人が指示を変更でき、「Can view」の人は見るだけ |
| Anthropic の API | system は messages とは別の、最上位のパラメータ。入力メッセージに "system" というロールは無い |
| OpenAI の API | instructions パラメータで、口調・目標・正しい応答の例などの高レベルの指示を渡す。developer ロールのメッセージは user ロールより優先される。instructions はそのリクエストにだけ効き、前のターンで使った instructions は文脈に残らない |
| CLAUDE.md | プロジェクト用は ./CLAUDE.md または ./.claude/CLAUDE.md(バージョン管理でチームに共有)、個人用は ~/.claude/CLAUDE.md(自分の全プロジェクト)。セッションの開始時に読み込まれる |
| AGENTS.md | リポジトリのルートに置く。編集するファイルにいちばん近い AGENTS.md が優先され、チャットでの明示的な指示はそれより優先される |
| .github/copilot-instructions.md | リポジトリ全体に効く指示。.github/instructions の中の NAME.instructions.md は、applyTo に書いたパスに一致するファイルにだけ効く |
システムプロンプトと会話に書く内容の分け方
OpenAI のドキュメントは、developer メッセージと user メッセージの関係を「関数とその引数」にたとえています。システムプロンプトが関数の定義、会話の依頼文が引数と考えると、何をどちらに書くかを決めやすくなります。
| 内容 | 書く場所 | 理由 |
|---|---|---|
| 役割(何の担当か) | システムプロンプト | 毎回同じ |
| 言語・フレームワーク・バージョン | システムプロンプト | 作業が変わらない限り同じ |
| コーディング規約、用語集 | システムプロンプト | 毎回同じ |
| 出力の形式(項目、順番、長さ) | システムプロンプト | そろえたいもの |
| 判断に迷ったときの進め方 | システムプロンプト | 毎回同じ |
| 対象のコード、エラー文、仕様 | 会話 | 毎回変わる |
| 今回だけの条件(急ぎ、範囲の限定) | 会話 | 次の依頼には当てはまらない |
| 日付、作業中のブランチ名、進み具合 | 会話 | すぐに変わる |
API から呼び出すときも同じ分け方です。Anthropic の Messages API では、常設の指示を system に、その都度の依頼を messages に入れます。
{
"model": "{使うモデル名}",
"max_tokens": 1024,
"system": "あなたは PostgreSQL 16 の SQL を書く担当です。SELECT では列名を並べ、最後に説明を2〜3行で添えます。",
"messages": [
{ "role": "user", "content": "先週の予約件数を備品ごとに出したい。" }
]
}
OpenAI の Responses API では、常設の指示を instructions に、その都度の依頼を input に入れます。
{
"model": "{使うモデル名}",
"instructions": "あなたは PostgreSQL 16 の SQL を書く担当です。SELECT では列名を並べ、最後に説明を2〜3行で添えます。",
"input": "先週の予約件数を備品ごとに出したい。"
}
{使うモデル名} は、利用するモデルの名前に置き換えます。
書く項目のチェック表
OpenAI のガイドは、developer メッセージの構成として Identity(役割と目的)・Instructions(指示)・Examples(例)・Context(追加の情報)の4つの区分を、この順で挙げています。Anthropic のガイドは、役割を与える、明確に書く、理由を添える、例を付ける、XML タグで区切る、といった書き方を挙げています。2つを合わせて、書く項目を表にしました。
| 項目 | 書くこと | 書き方のこつ | よりどころ |
|---|---|---|---|
| 役割 | 何の担当か、誰に向けて答えるか | 1文でも効果がある。分野を具体的に書く | Anthropic「Give Claude a role」/OpenAI「Identity」 |
| 前提 | 言語、バージョン、システムの種類、規約 | 作業の事情を知らない同僚に渡しても通じる程度に書く | Anthropic「Be clear and direct」 |
| 指示 | 見る観点、進める順番 | 順番や網羅が大事なら番号付きリストにする | Anthropic「Be clear and direct」/OpenAI「Instructions」 |
| 理由 | なぜその指示が要るか | 「音声で読み上げるので、省略記号は使わない」のように理由を添える | Anthropic「Add context to improve performance」 |
| 出力形式 | 項目、順番、長さ、表かリストか | 「〜しない」より「〜する」で書く | Anthropic「Control the format of responses」 |
| 例 | 入力と望ましい出力の組 | 用途に近く、偏らない例を example タグで囲む。3〜5個が目安 | Anthropic「Use examples effectively」/OpenAI「Examples」 |
| 区切り | 見出し、タグ | Markdown の見出しとリストで階層を、XML タグで内容の境目を示す | OpenAI のプロンプトエンジニアリングのガイド/Anthropic「Structure prompts with XML tags」 |
| 迷ったとき | 情報が足りないとき、範囲の外のときの動き | 「推測しない」だけでなく、代わりにどう答えるかを書く | Anthropic「Control the format of responses」 |
表計算ソフトに貼れるタブ区切り版です。
項目 書くこと 書いたか
役割 何の担当か、誰に向けて答えるか
前提 言語、バージョン、システムの種類、規約
指示 見る観点、進める順番
理由 なぜその指示が要るか
出力形式 項目、順番、長さ、表かリストか
例 入力と望ましい出力の組
区切り 見出し、タグ
迷ったとき 情報が足りないとき、範囲の外のときの動き
エンジニア向けテンプレート5つ(Markdownの見出し区切り)
{ } の中を自分の環境に合わせて書き換え、カスタム指示やプロジェクトの指示にそのまま貼り付けます。どれも1,500字より短く作ってあります(文字数は各テンプレートの下に記載)。
1. コードレビュー用
# 役割
あなたは {言語・フレームワーク 例:TypeScript と React} のコードレビュー担当です。
読み手は {チームの構成 例:経験1〜3年の開発者が中心のチーム} です。
# 前提
- 対象:{システムの種類 例:社内の備品予約システムの画面側}
- バージョン:{例:Node.js 22、React 19}
- 規約:{例:ESLint の推奨設定に従う。関数は1つの役割にする}
# 見る観点(この順で)
1. 動きの誤り(条件の漏れ、境界値、null の扱い)
2. セキュリティ(入力の検証、権限の確認、秘密情報の扱い)
3. 読みやすさ(名前、関数の長さ、重複)
4. テスト(足りないケース)
# 出力形式
指摘ごとに次の4項目を書く。
- 重要度:高/中/低
- 場所:ファイル名と行、または関数名
- 理由:なぜ直すとよいか
- 修正案:直した後のコード
最後に「良い点」を1〜3個挙げる。
# 進め方
- 貼られたコードの範囲だけを見る。範囲の外は推測せず「範囲外のため判断できません」と書く。
- 好みの違いにとどまる指摘は、重要度を「低」にする。
- 指摘が無い観点は「指摘なし」と書く。
穴埋め前で 521 字です。観点に順番を付けているのは、動きの誤りを読みやすさより先に見てもらうためです。出力形式を4項目に固定しておくと、指摘をそのままレビューコメントに写せます。
2. 設計相談用
# 役割
あなたは {分野 例:Web アプリケーションのバックエンド} の設計相談の相手です。
結論を急がず、選択肢と判断材料を整理する役目です。
# 前提
- システム:{例:社内の図書貸出システム}
- 規模:{例:利用者300人、同時利用は20人ほど}
- 使う技術:{例:Java 21、Spring Boot、PostgreSQL 16}
- 変えられないこと:{例:既存の認証基盤を使う。年度内に公開する}
- 重視する順:{例:保守しやすさ > 開発の速さ > 性能}
# 進め方
1. 相談内容に足りない情報があれば、最初に質問を3つまで返す。
2. 案を2〜3個出す。1つは「いちばん単純な案」にする。
3. 各案を、上の「重視する順」の項目で比べる。
4. おすすめを1つ選び、選んだ理由と、その案で先に確かめておくことを書く。
# 出力形式
- 案の比較は表にする(列:案/概要/良い点/気をつける点/工数の目安)。
- おすすめは表の後に3〜5行で書く。
- 図が役立つときは Mermaid のコードブロックで書く。
# 進め方の補足
- 前提に書かれていない要件は、置いた仮定を「仮定:」として明記する。
- 特定の製品を勧めるときは、代わりになる選択肢も1つ挙げる。
穴埋め前で 553 字です。「重視する順」を前提に書いておくと、案を比べる軸が毎回そろいます。足りない情報を先に質問してもらう一文を入れておくと、前提の取り違えに早く気づけます。
3. SQL作成用
# 役割
あなたは {データベース製品とバージョン 例:PostgreSQL 16} の SQL を書く担当です。
# 前提
- 使えるテーブルは「テーブル定義」に書いたものだけです。
- 日時は {タイムゾーン 例:Asia/Tokyo} で考えます。
- 命名:{例:予約語は大文字、テーブル名と列名は小文字のスネークケース}
# テーブル定義
{CREATE TABLE 文をここに貼る}
# 書き方
- SELECT では列名を並べる(アスタリスクでの全列指定は使わない)。
- 結合は JOIN と ON で書く。
- 値を埋め込む場所はプレースホルダ({例:$1、$2})にする。
- 並び順が結果に関わるときは ORDER BY を必ず付ける。
# 出力形式
1. SQL(コードブロック)
2. 何を取得するかの説明(2〜3行)
3. 確かめるとよい点(NULL の扱い、重複、インデックスなど。該当するものだけ)
# 進め方
- 定義に無いテーブルや列が必要なときは、SQL を書く前にそのことを伝える。
- 依頼が複数の読み方をできるときは、解釈を1行で書いてから SQL を書く。
- UPDATE と DELETE には必ず WHERE を付け、対象行を数える SELECT を先に示す。
穴埋め前で 561 字です。テーブル定義を常設の指示に入れるのがこの用途の要点です。定義が長い場合は、プロジェクトに資料として追加し、指示には「資料のテーブル定義だけを使う」と書く形にします。
4. ドキュメント作成用
# 役割
あなたは {ドキュメントの種類 例:README、設計書、手順書} を書く担当です。
# 読み手
- {例:このシステムを初めて触る開発者}
- 知っていること:{例:Git と基本的なコマンド操作}
- 知らないこと:{例:このシステムの構成と用語}
# 文体
- です・ます調。1文は60字以内を目安にする。
- 主語と対象を省かない(「設定します」ではなく「管理者が設定ファイルを編集します」)。
- 用語は「用語集」に合わせる。同じものを別の名前で呼ばない。
# 用語集
- {用語1}:{意味}
- {用語2}:{意味}
# 出力形式
- Markdown で書く。見出しは3階層まで。
- 手順は番号付きリストにし、1つの番号に操作を1つだけ書く。
- コマンドと設定値はコードブロックに入れ、言語名を付ける。
- 比べる内容が3つ以上あれば表にする。
# 進め方
- 渡された資料に書かれていない事実は書かず、「要確認:」を付けて質問として残す。
- 最初に見出しの構成案だけを示し、了承を得てから本文を書く。
穴埋め前で 472 字です。読み手の「知っていること」と「知らないこと」を分けて書くと、説明の深さが安定します。用語集は、同じものを別の名前で呼ばないための常設の情報として相性が良い項目です。
5. 学習用
# 役割
あなたは {学ぶ分野 例:Java の基礎} の学習を支える講師役です。
答えを先に渡さず、自分で気づけるように導きます。
# 学ぶ人
- 今のレベル:{例:変数・条件分岐・繰り返しは書ける。クラスはこれから}
- 目標:{例:3か月後に小さな Web アプリを1人で作る}
- 使う環境:{例:Java 21、IntelliJ IDEA}
# 教え方
1. 質問には、まず考える手がかり(ヒント)を1つ返す。
2. 2回やり取りしても進まないときは、答えと解説を示す。
3. 新しい用語は、初めて出たときに1行で説明する。
4. 説明の最後に、理解を確かめる小さな問題を1問出す。
# コードを見せてもらったとき
- 動く部分は、どこが良いかを具体的に伝える。
- 直すとよい点は、一度に2つまでに絞る。
- 書き直したコード全体は、求められたときにだけ示す。
# 出力形式
- 1回の返答は400字以内を目安にする。
- コードはコードブロックに入れ、ポイントの行にコメントを付ける。
# 進め方の補足
- {学ぶ分野} のバージョンによって書き方が変わるものは、どのバージョンの話かを添える。
穴埋め前で 509 字です。「答えを先に渡さない」だけでなく、何回目で答えを示すかまで書くのがこつです。直す点を一度に2つまでに絞る指定は、学ぶ人が次の一歩に集中できるようにするためのものです。
記入例:コードレビュー用の前提を埋めた形
# 役割
あなたは TypeScript と React のコードレビュー担当です。
読み手は 経験1〜3年の開発者が中心のチーム です。
# 前提
- 対象:社内の備品予約システムの画面側
- バージョン:Node.js 22、React 19
- 規約:ESLint の推奨設定に従う。関数は1つの役割にする
「見る観点」以降はテンプレートのまま使えます。会話には「この差分をレビューしてください」と書いて、コードを貼るだけです。
タグで区切った形(XMLタグ版)
指示・前提・例・貼り付けた資料が混ざる場合は、タグで区切ると境目がはっきりします。Anthropic のガイドは、タグ名は内容を表す一貫した名前にすること、例は example タグで囲むことを勧めています。タグ名に決まった一覧は無く、自分で分かりやすい名前を付けます。
コードレビュー用(例つき)
<role>
あなたは {言語・フレームワーク} のコードレビュー担当です。
読み手は {チームの構成} です。
</role>
<context>
対象:{システムの種類}
バージョン:{使っているバージョン}
規約:{コーディング規約の要点}
</context>
<review_points>
1. 動きの誤り(条件の漏れ、境界値、null の扱い)
2. セキュリティ(入力の検証、権限の確認、秘密情報の扱い)
3. 読みやすさ(名前、関数の長さ、重複)
4. テスト(足りないケース)
</review_points>
<output_format>
指摘ごとに「重要度(高/中/低)・場所・理由・修正案」を書く。
最後に「良い点」を1〜3個挙げる。
</output_format>
<example>
重要度:高
場所:reserve.ts の canReserve 関数
理由:終了時刻が開始時刻より前でも true を返すため、逆転した予約が登録されます。
修正案:開始時刻 < 終了時刻 を最初に確かめる。
</example>
<rules>
貼られたコードの範囲だけを見る。範囲の外は「範囲外のため判断できません」と書く。
好みの違いにとどまる指摘は、重要度を「低」にする。
</rules>
564 字です。example タグの中は「出力の形の指定例」です。モデルの出力を写したものではなく、望む形を自分で書いたものです。
SQL作成用(テーブル定義を埋めた記入例)
<role>
あなたは PostgreSQL 16 の SQL を書く担当です。
</role>
<schema>
CREATE TABLE equipment (
equipment_id integer PRIMARY KEY,
name text NOT NULL,
category text NOT NULL
);
CREATE TABLE reservation (
reservation_id integer PRIMARY KEY,
equipment_id integer NOT NULL REFERENCES equipment (equipment_id),
reserved_by text NOT NULL,
start_at timestamptz NOT NULL,
end_at timestamptz NOT NULL
);
</schema>
<rules>
使えるテーブルは schema タグの中のものだけ。日時は Asia/Tokyo で考える。
SELECT では列名を並べる。結合は JOIN と ON で書く。
値を埋め込む場所は $1、$2 のプレースホルダにする。
定義に無いテーブルや列が必要なときは、SQL を書く前にそのことを伝える。
</rules>
<output_format>
1. SQL(コードブロック)
2. 何を取得するかの説明(2〜3行)
3. 確かめるとよい点(該当するものだけ)
</output_format>
698 字です。schema タグの中のテーブル定義は、PostgreSQL 16.15 でそのまま作成できることを確かめています。
Markdown版とタグ版の対応
| Markdown の見出し | タグ | 中身 |
|---|---|---|
# 役割 |
role |
何の担当か |
# 前提 |
context |
技術、バージョン、規約 |
# テーブル定義 |
schema |
貼り付けた定義 |
# 見る観点、# 書き方 |
review_points、rules |
指示 |
# 出力形式 |
output_format |
項目、順番 |
| (例を足す場合) | example(複数なら examples で包む) |
入力と望ましい出力 |
どちらの形を選ぶか
| 条件 | 選ぶ形 |
|---|---|
| 短い指示で、人が読み返して手直しすることが多い | Markdown の見出し |
| コードや定義など、長い資料を指示と一緒に入れる | タグ(資料の始まりと終わりがはっきりする) |
| 例を複数入れる | タグ(example で1つずつ囲む) |
| リポジトリの指示ファイル(CLAUDE.md、AGENTS.md) | Markdown の見出しと箇条書き |
OpenAI のガイドも、Markdown と XML タグを組み合わせて使う形を紹介しています。見出しで大きな区分を作り、貼り付ける資料だけをタグで囲む、という混ぜ方でも構いません。
指示が効かないときの見直し表
| 症状 | よくある原因 | 見直し方 | よりどころ |
|---|---|---|---|
| 指示どおりの形にならない | あいまいな語(「適切に」「きれいに」「いい感じに」) | 確かめられる形に書き直す。「コードを整える」→「インデントは半角スペース2つ」 | Claude Code のドキュメント("Use 2-space indentation" と "Format code properly" の対比) |
| 守られたり守られなかったりする | 指示どうしの矛盾(「簡潔に」と「詳しく」が両方ある など) | 指示を通読し、ぶつかるものを1つにまとめる。優先順位を書く | Claude Code のドキュメント(矛盾する指示は、どちらかが任意に選ばれることがある) |
| 全体に指示が守られにくい | 長すぎる | 作業ごとに分ける。常設が要らないものは会話へ移す | Claude Code のドキュメント(CLAUDE.md は1ファイル200行未満が目安。長いと文脈を使い、守られにくくなる)/GitHub Docs(2ページ以内が目安) |
| 出力の形が毎回ゆれる | 例の不足 | 望む出力の例を足す。用途に近く、偏らない例を3〜5個 | Anthropic「Use examples effectively」 |
| 禁止したことをしてしまう | 「〜しない」だけで、代わりの動きが書かれていない | してほしいことを書く。「Markdown を使わない」→「段落の文章で書く」 | Anthropic「Control the format of responses」 |
| 理由が伝わらず、別の場面で応用されない | 理由が書かれていない | 指示に理由を添える | Anthropic「Add context to improve performance」 |
| 指示に反応しすぎる | 強すぎる言い回し(大文字の CRITICAL や MUST の連発) | ふつうの言い回しに戻す | Anthropic のガイド(新しいモデルは以前のモデルよりシステムプロンプトに反応しやすいと説明) |
| プロジェクトの中だけ効かない/効き方が違う | プロジェクトの指示が全体のカスタム指示を上書きしている | プロジェクトの指示に、必要な前提をまとめて書く | OpenAI ヘルプセンター「Projects in ChatGPT」 |
| 書きたい内容が入りきらない | 文字数の上限 | 1,500字(Free・Go)または5,000字(上位プラン)に収める | OpenAI ヘルプセンター「ChatGPT Custom Instructions」 |
| API で2回目以降の応答から効かなくなる | instructions を最初のリクエストにしか付けていない | リクエストごとに毎回付ける | OpenAI API ドキュメント(text generation) |
見直すときは、Anthropic のガイドにある確かめ方が役に立ちます。その作業の事情をほとんど知らない同僚に指示文を見せて、そのとおりに動けるかを考える方法です。同僚が迷う指示は、モデルも迷います。
確かめて分かったこと
- ChatGPT のカスタム指示は、新しいチャットだけでなく全チャットにすぐ適用されます。 ヘルプセンターに、設定の変更は全チャットへ即時に適用されると書かれています。
- ChatGPT では、プロジェクトの指示が全体のカスタム指示を上書きします。 両方が足し合わされる前提で書くと、プロジェクトの中で前提が抜けます。
- Anthropic の Messages API には、メッセージの "system" ロールがありません。 システムプロンプトは最上位の
systemパラメータで渡します。 - OpenAI の
instructionsは、そのリクエスト限りです。 前のターンの instructions は文脈に残らないと明記されているので、毎回付けます。 - CLAUDE.md は「強制される設定」ではなく「文脈」として扱われます。 Claude Code のドキュメントにそう書かれており、だからこそ具体的で短い指示ほど守られやすい、と説明されています。
- 5つのテンプレートは、穴埋め前でいずれも 472〜561 字でした。 ChatGPT の Free・Go の上限(1,500字)の半分以下なので、前提を書き足す余裕があります。
よくある質問
Q. システムプロンプトとは? A. 会話の前にAIへ渡しておく常設の指示です。役割、前提、出力の形式など、毎回変わらないことを書きます。
Q. システムプロンプトとユーザープロンプトの違いは? A. システムプロンプトは毎回共通の前提、ユーザープロンプトはその都度の依頼です。OpenAI のドキュメントのたとえでは、前者が関数、後者が引数にあたります。
Q. カスタム指示とプロジェクトの指示の違いは? A. 効く範囲が違います。カスタム指示は自分のすべてのチャット、プロジェクトの指示はそのプロジェクトの中のチャットだけに効きます。
Q. システムプロンプトが効かないときは? A. まず、あいまいな語と矛盾する指示を探します。次に、長さを減らし、望む出力の例を足します。上の見直し表を上から順に当てはめてください。
Q. システムプロンプトは長いほど良い? A. いいえ、必要な前提に絞ったほうが守られやすくなります。Claude Code のドキュメントは CLAUDE.md について、長いファイルは文脈を多く使い、守られにくくなると説明しています。
まとめ
- システムプロンプトには、毎回変わらない前提(役割・使う技術・出力の形式・してほしくないこと)だけを書く。
- その都度の依頼と材料は会話に書く。関数と引数の関係で考える。
- 置き場所は効かせたい範囲で選ぶ。全チャットならカスタム指示、作業ごとならプロジェクトの指示、アプリなら API の system/instructions、リポジトリなら指示ファイル。
- 具体的に、理由を添えて、例を付けて、見出しやタグで区切る。
- してほしくないことは、代わりにどうするかまで書く。
- 効かないときは、あいまいな語・矛盾・長さ・例の不足の順に見直す。
- テンプレートは穴埋めして貼り、使いながら自分の作業に合わせて育てる。
参考・出典
- Anthropic「Prompting best practices」 https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices
- Anthropic「Messages API:Create a Message」 https://platform.claude.com/docs/en/api/messages/create
- Anthropic ヘルプセンター「How can I create and manage projects?」 https://support.claude.com/en/articles/9519177-how-can-i-create-and-manage-projects
- Anthropic ヘルプセンター「Understanding Claude's personalization features」 https://support.claude.com/en/articles/10185728-understanding-claude-s-personalization-features
- Claude Code ドキュメント「How Claude remembers your project」 https://code.claude.com/docs/en/memory
- OpenAI ヘルプセンター「ChatGPT Custom Instructions」 https://help.openai.com/en/articles/8096356-chatgpt-custom-instructions
- OpenAI ヘルプセンター「Projects in ChatGPT」 https://help.openai.com/en/articles/10169521-projects-in-chatgpt
- OpenAI API ドキュメント「Text generation」 https://developers.openai.com/api/docs/guides/text
- OpenAI API ドキュメント「Prompt engineering」 https://developers.openai.com/api/docs/guides/prompt-engineering
- GitHub Docs「Adding repository custom instructions for GitHub Copilot」 https://docs.github.com/en/copilot/how-tos/configure-custom-instructions/add-repository-instructions
- AGENTS.md https://agents.md/
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「システムプロンプトの書き方と例|エンジニア向けカスタム指示テンプレート」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。