更新: プロンプトインジェクションを防ぎたい人はこちらを参考にしてください
【生成AI】プロンプトインジェクションを防ぐ方法【LLM】
本記事の目次
- XMLライクなプロンプトが有効な理由
-
生成AIに使えるプロンプトテンプレート30選
- 01) 基本Markdown回答(改善は指示後)
- 02) JSONスキーマ出力
- 03) 表で比較(Markdownテーブル)
- 04) ステップ→最小コード
- 05) レビュー&採点
- 06) テストケース自動生成
- 07) SQL安全クエリ生成
- 08) SEO記事アウトライン
- 09) Djangoモデル雛形
- 10) WordPress関数スニペット
- 11) Bash安全実行計画
- 12) データパイプライン設計
- 13) パフォーマンス最適化TODO
- 14) ログから不具合原因推定
- 15) リファクタ設計(安全)
- 16) セキュリティ観点チェックリスト
- 17) API仕様→クライアント雛形
- 18) スキーママイグレーション計画
- 19) 単体テスト自動生成
- 20) 図解(Mermaid)で設計共有
- 21) 画像生成用プロンプト作成
- 22) 翻訳+トーン変換
- 23) 要約テンプレ(粒度可変)
- 24) 選定理由つき比較
- 25) レベル別解説(初心者→中級→上級)
- 26) 正規表現作成&テスト
- 27) エッジケース洗い出し
- 28) 機能仕様1枚メモ
- 29) 会議ノート→決定とアクション
- 30) LLM出力の採点ルーブリック
- この情報をまとめた人のサイト
XMLライクなプロンプトが有効な理由
LLM(大規模言語モデル)のプロンプトエンジニアリングでは、XMLのような構造化されたフォーマットを使うと、モデルの出力の質を高められる傾向にあります。
主な理由は以下の通りです。
- モデルは大量のウェブコンテンツで訓練されている
- その多くがXMLやMarkdown形式を含む
- XMLはプロンプト内の情報を明確に区切るのに適している
- メタデータを追加したり、ネスト(入れ子)構造を作ったりできる
これらの理由により、モデルが混乱せずに処理可能になります。
また、XML形式は出力フォーマットの制御にも役立つため、モデルに特定の構造で応答させるよう指定しやすくなります。
実例
prompt.xml
<SystemContent>
- 出力は <AssistantResponse> 内のみ
- 箇条書き優先。見出しは h2 まで
</SystemContent>
<UserInput>
<task>RAGの評価指標を要約</task>
<context doc_id="d1" title="RAG Metrics 101">…本文…</context>
<context doc_id="d2" title="Pitfalls">…本文…</context>
</UserInput>
<Constraints>
- 重要点を3〜5箇条
- 参照は doc_id を明記
</Constraints>
<AssistantResponse></AssistantResponse>
やめた方がいい形式
- タグ乱立・意味重複(
<Info>
,<Information>
,<Data>
など曖昧) - 未閉鎖タグ/入れ子崩れ
- 出力境界ルール不在(どこに何を書けばいいか曖昧)
- 1タグに異なる役割を混在(例:
System
とUser
を同居)
生成AIに使えるプロンプトテンプレート30選
01) 基本Markdown回答(改善は指示後)
prompt.xml
<SystemContent>
- ユーザーから明示的な改善指示があるまで提案・改善を行わない
- 回答はMarkdownで簡潔に
</SystemContent>
<UserContent>
{{topic}} について説明してください
</UserContent>
<Constraints>
- 最大見出しレベル: h3
- 箇条書き優先、冗長な前置き禁止
</Constraints>
<OutputFormat>Markdown</OutputFormat>
<Language>ja</Language>
<Variables>{{topic}}</Variables>
02) JSONスキーマ出力
prompt.xml
<SystemContent>
- JSONのみを返す。前後の説明文・コードフェンス禁止
</SystemContent>
<UserContent>
{{domain}} の設定値をJSONで定義してください
</UserContent>
<Constraints>
- ルートはオブジェクト
- 必須キー: name, version, options
</Constraints>
<OutputFormat>JSON</OutputFormat>
<Language>ja</Language>
<Variables>{{domain}}</Variables>
03) 表で比較(Markdownテーブル)
prompt.xml
<SystemContent>
- テーブルで要点のみ比較
</SystemContent>
<UserContent>
{{targets}} を {{criteria}} の観点で比較してください
</UserContent>
<Constraints>
- 列: 項目 | 概要 | 長所 | 短所 | 向くケース
- 行は{{n}}件
</Constraints>
<OutputFormat>MarkdownTable</OutputFormat>
<Language>ja</Language>
<Variables>{{targets}}, {{criteria}}, {{n}}</Variables>
04) ステップ→最小コード
prompt.xml
<SystemContent>
- まず手順を最短で列挙、ついで最小コード
</SystemContent>
<UserContent>
{{task}} を {{language}} で最短手順と最小コードで示してください
</UserContent>
<Constraints>
- 手順は3〜5行
- コードは依存最小・実行例付き
</Constraints>
<OutputFormat>Markdown (Steps + Code)</OutputFormat>
<Language>ja</Language>
<Variables>{{task}}, {{language}}</Variables>
05) レビュー&採点
prompt.xml
<SystemContent>
- 出力物を批評し、数値評価する
</SystemContent>
<UserContent>
以下の成果物を評価してください:
{{artifact}}
</UserContent>
<EvaluationCriteria>
- 正確性(40) 可読性(20) 効率(20) 再利用性(20)
</EvaluationCriteria>
<OutputFormat>
- 総評
- 改善案(3点)
- 各項目スコア/100
</OutputFormat>
<Language>ja</Language>
<Variables>{{artifact}}</Variables>
06) テストケース自動生成
prompt.xml
<SystemContent>
- 正常系/異常系/境界値の順でテスト生成
</SystemContent>
<UserContent>
対象仕様: {{spec}}
</UserContent>
<Constraints>
- 各ケース: 入力, 手順, 期待結果
- 件数: 正常{{n1}} / 異常{{n2}} / 境界{{n3}}
</Constraints>
<OutputFormat>Markdown</OutputFormat>
<Language>ja</Language>
<Variables>{{spec}}, {{n1}}, {{n2}}, {{n3}}</Variables>
07) SQL安全クエリ生成
prompt.xml
<SystemContent>
- SQLインジェクション対策のバインド変数前提
</SystemContent>
<UserContent>
{{rdbms}} 用に {{purpose}} のクエリを作成
</UserContent>
<Constraints>
- プレースホルダ使用
- インデックス考慮のWHERE設計
</Constraints>
<OutputFormat>SQL + 解説</OutputFormat>
<Language>ja</Language>
<Variables>{{rdbms}}, {{purpose}}</Variables>
08) SEO記事アウトライン
prompt.xml
<SystemContent>
- 検索意図を明確化→見出し設計
</SystemContent>
<UserContent>
テーマ「{{keyword}}」のSEO記事構成を作成
</UserContent>
<Constraints>
- 想定読者/検索意図/共起語(5〜10)/見出しh2-h3
</Constraints>
<OutputFormat>Markdown</OutputFormat>
<Language>ja</Language>
<Variables>{{keyword}}</Variables>
09) Djangoモデル雛形
prompt.xml
<SystemContent>
- 最小プロパティとMetaを用意
</SystemContent>
<UserContent>
{{app}} の {{entity}} モデル雛形を生成
</UserContent>
<Constraints>
- id, created_at, updated_at
- __str__ 実装
</Constraints>
<OutputFormat>Python(DjangoModel)</OutputFormat>
<Language>ja</Language>
<Variables>{{app}}, {{entity}}</Variables>
10) WordPress関数スニペット
prompt.xml
<SystemContent>
- functions.phpに貼れる最小スニペット
</SystemContent>
<UserContent>
{{feature}} を実装するWPコード
</UserContent>
<Constraints>
- アクション/フィルタ明示
- セキュアなサニタイズ
</Constraints>
<OutputFormat>PHP + 説明</OutputFormat>
<Language>ja</Language>
<Variables>{{feature}}</Variables>
11) Bash安全実行計画
prompt.xml
<SystemContent>
- 「計画→確認→実行」の3段階で提示
</SystemContent>
<UserContent>
{{operation}} を安全に実施するbash手順
</UserContent>
<Constraints>
- set -euo pipefail
- 破壊的操作は--dry-run付き
</Constraints>
<OutputFormat>Markdown + Shell</OutputFormat>
<Language>ja</Language>
<Variables>{{operation}}</Variables>
12) データパイプライン設計
prompt.xml
<SystemContent>
- Ingest→Transform→Store→Serve の流れで要約
</SystemContent>
<UserContent>
{{source}} から {{sink}} へデータ連携
</UserContent>
<Constraints>
- スキーマ/遅延/障害時再送/監視
</Constraints>
<OutputFormat>Markdown (図はMermaid任意)</OutputFormat>
<Language>ja</Language>
<Variables>{{source}}, {{sink}}</Variables>
13) パフォーマンス最適化TODO
prompt.xml
<SystemContent>
- 影響度×工数の優先度で並べる
</SystemContent>
<UserContent>
{{target}} の性能を改善したい
</UserContent>
<Constraints>
- 低工数ハイインパクトを上位に
- 各項目に推定効果/工数
</Constraints>
<OutputFormat>Markdownリスト</OutputFormat>
<Language>ja</Language>
<Variables>{{target}}</Variables>
14) ログから不具合原因推定
prompt.xml
<SystemContent>
- 仮説→確認項目→再現手順→暫定回避
</SystemContent>
<UserContent>
ログ:
{{logs}}
</UserContent>
<Constraints>
- 仮説は3件以内
</Constraints>
<OutputFormat>Markdown</OutputFormat>
<Language>ja</Language>
<Variables>{{logs}}</Variables>
15) リファクタ設計(安全)
prompt.xml
<SystemContent>
- 振る舞い不変を最優先
</SystemContent>
<UserContent>
{{codebase}} を段階的にリファクタ
</UserContent>
<Constraints>
- ステップ毎にリスク/テスト観点/ロールバック
</Constraints>
<OutputFormat>計画書Markdown</OutputFormat>
<Language>ja</Language>
<Variables>{{codebase}}</Variables>
16) セキュリティ観点チェックリスト
prompt.xml
<SystemContent>
- OWASP ASVSライト版で走査
</SystemContent>
<UserContent>
対象: {{system}}
</UserContent>
<Constraints>
- 認証/認可/入力/秘密情報/ロギング/依存
</Constraints>
<OutputFormat>チェックリスト(✓/✗) + 改善提案</OutputFormat>
<Language>ja</Language>
<Variables>{{system}}</Variables>
17) API仕様→クライアント雛形
prompt.xml
<SystemContent>
- OpenAPI準拠の想定
</SystemContent>
<UserContent>
仕様:
{{openapi}}
</UserContent>
<Constraints>
- {{language}} のAPIクライアント最小実装
- リトライとタイムアウト設定
</Constraints>
<OutputFormat>Code + 使い方</OutputFormat>
<Language>ja</Language>
<Variables>{{openapi}}, {{language}}</Variables>
18) スキーママイグレーション計画
prompt.xml
<SystemContent>
- 後方互換→移行→切替→掃除
</SystemContent>
<UserContent>
DB変更: {{change}}
</UserContent>
<Constraints>
- ロールバック手順記載
- ダウンタイム最小化
</Constraints>
<OutputFormat>手順書Markdown</OutputFormat>
<Language>ja</Language>
<Variables>{{change}}</Variables>
19) 単体テスト自動生成
prompt.xml
<SystemContent>
- Arrange→Act→Assert 構成
</SystemContent>
<UserContent>
対象コード:
{{code}}
</UserContent>
<Constraints>
- {{framework}} を使用
- カバレッジ要点列挙
</Constraints>
<OutputFormat>TestCode + 説明</OutputFormat>
<Language>ja</Language>
<Variables>{{code}}, {{framework}}</Variables>
20) 図解(Mermaid)で設計共有
prompt.xml
<SystemContent>
- 図→要点3行→リスク1行
</SystemContent>
<UserContent>
{{architecture}} の構成を図示
</UserContent>
<Constraints>
- Mermaidのflowchartまたはsequence
</Constraints>
<OutputFormat>Mermaid + 要点</OutputFormat>
<Language>ja</Language>
<Variables>{{architecture}}</Variables>
21) 画像生成用プロンプト作成
prompt.xml
<SystemContent>
- 具体的/検閲ポリシー遵守/権利配慮
</SystemContent>
<UserContent>
テーマ: {{theme}}。スタイル: {{style}}
</UserContent>
<Constraints>
- 被写体/構図/光源/カラー/質感/解像度を明示
</Constraints>
<OutputFormat>画像生成プロンプト(箇条書き)</OutputFormat>
<Language>ja</Language>
<Variables>{{theme}}, {{style}}</Variables>
22) 翻訳+トーン変換
prompt.xml
<SystemContent>
- 原意厳守、専門用語は用語集優先
</SystemContent>
<UserContent>
訳文対象:
{{text}}
</UserContent>
<Constraints>
- 出力トーン: {{tone}}
- 誤訳注意点: {{notes}}
</Constraints>
<OutputFormat>対訳(原文→訳文)</OutputFormat>
<Language>ja</Language>
<Variables>{{text}}, {{tone}}, {{notes}}</Variables>
23) 要約テンプレ(粒度可変)
prompt.xml
<SystemContent>
- 情報損失最小の抽出/要約混合
</SystemContent>
<UserContent>
要約対象:
{{content}}
</UserContent>
<Constraints>
- 文字数~{{chars}}字
- 見出し/箇条書き優先
</Constraints>
<OutputFormat>Markdown</OutputFormat>
<Language>ja</Language>
<Variables>{{content}}, {{chars}}</Variables>
24) 選定理由つき比較
prompt.xml
<SystemContent>
- 推奨1位を先頭に
</SystemContent>
<UserContent>
{{candidates}} から最適を選んでください(用途: {{usecase}})
</UserContent>
<Constraints>
- 選定基準(3点)
- トレードオフ
</Constraints>
<OutputFormat>ランキング/理由/注意点</OutputFormat>
<Language>ja</Language>
<Variables>{{candidates}}, {{usecase}}</Variables>
25) レベル別解説(初心者→中級→上級)
prompt.xml
<SystemContent>
- 同一トピックを難度別に段階解説
</SystemContent>
<UserContent>
{{topic}} をレベル別に教えて
</UserContent>
<Constraints>
- 初心者: 例え話
- 中級: 内部仕組み
- 上級: 最適化/落とし穴
</Constraints>
<OutputFormat>Markdown</OutputFormat>
<Language>ja</Language>
<Variables>{{topic}}</Variables>
26) 正規表現作成&テスト
prompt.xml
<SystemContent>
- 誤検出/未検出を最小化
</SystemContent>
<UserContent>
抽出対象: {{pattern_desc}}
</UserContent>
<Constraints>
- 正規表現
- テスト文字列(一致/不一致)
</Constraints>
<OutputFormat>Regex + テストケース</OutputFormat>
<Language>ja</Language>
<Variables>{{pattern_desc}}</Variables>
27) エッジケース洗い出し
prompt.xml
<SystemContent>
- 入力/状態/時間/ロケール/リソース制約
</SystemContent>
<UserContent>
対象機能: {{feature}}
</UserContent>
<Constraints>
- 10件以上、分類タグ付き
</Constraints>
<OutputFormat>チェックリスト</OutputFormat>
<Language>ja</Language>
<Variables>{{feature}}</Variables>
28) 機能仕様1枚メモ
prompt.xml
<SystemContent>
- 1画面で共有できる密度
</SystemContent>
<UserContent>
{{feature}} の仕様を1枚に
</UserContent>
<Constraints>
- 目的/非目的/要件/非機能/UI/成功条件
</Constraints>
<OutputFormat>Markdown</OutputFormat>
<Language>ja</Language>
<Variables>{{feature}}</Variables>
29) 会議ノート→決定とアクション
prompt.xml
<SystemContent>
- 決定事項/未決/アクション/担当/期限
</SystemContent>
<UserContent>
議事録:
{{minutes}}
</UserContent>
<Constraints>
- 重要度順
</Constraints>
<OutputFormat>Markdown (セクション分割)</OutputFormat>
<Language>ja</Language>
<Variables>{{minutes}}</Variables>
30) LLM出力の採点ルーブリック
prompt.xml
<SystemContent>
- 出力を客観採点するためのルーブリックを構築
</SystemContent>
<UserContent>
評価対象タスク: {{task}}
</UserContent>
<EvaluationCriteria>
- 正確性/網羅性/簡潔性/構造化/出力形式遵守
- 各0-5点、重み: {{weights}}
</EvaluationCriteria>
<Constraints>
- 判定ガイド(良/可/不可)を各基準に記述
</Constraints>
<OutputFormat>採点表 + コメント雛形</OutputFormat>
<Language>ja</Language>
<Variables>{{task}}, {{weights}}</Variables>