SJ blog
ai
A

信頼度ランク

S 公式ソース確認済み
A 成功実績多数・失敗例少数
B 賛否両論
C 動作未確認・セキュリティリスク高
Z 個人所感

プロンプトエンジニアリング実践ガイド:Chain-of-Thoughtから構造化出力まで

LLMから高品質な出力を引き出すプロンプト技術を解説。Chain-of-Thought・Few-shot・XML構造化・System Promptの設計など、実践で使えるパターンを網羅します。

一言結論

LLMの出力品質は「役割設定+Few-shot例示+Chain-of-Thought」の3テクニックを組み合わせることで劇的に向上し、構造化出力(JSON・XML)を指定することでプログラムからの利用も安定する。

なぜプロンプトエンジニアリングが必要か

同じ LLM でもプロンプトの書き方一つで、出力の品質が大きく変わります。

❌ 悪いプロンプト:
「記事を書いて」

✅ 良いプロンプト:
「日本人エンジニア向けに、TypeScriptのジェネリクスについて
800文字程度の技術記事を書いてください。
対象読者は TypeScript 中級者で、コード例を3つ含め、
H2見出しで3セクションに分けてください。」

テクニック1: Role Prompting(役割設定)

あなたは10年以上の経験を持つシニアバックエンドエンジニアです。
PostgreSQL の最適化が専門で、技術的に正確な回答をします。
以下の SQL クエリをレビューしてください:

役割を明確にすることで、出力のトーン・技術レベル・視点が安定します。

テクニック2: Few-shot Learning(例示)

「良い例」を見せることでフォーマットを学習させます。

以下の形式でコードレビューコメントを書いてください。

例1:
コード: `if (user == null) return;`
コメント: 【軽微】null チェックは `user === null` の厳密等価を使うことを推奨します。

例2:
コード: `var name = 'Alice';`
コメント: 【改善】`var` の代わりに `const` または `let` を使用してください。

では以下のコードをレビューしてください:
`function fetchData() { return fetch(url) }`

テクニック3: Chain-of-Thought(思考の連鎖)

複雑な問題には「考え方のステップ」を示させます。

以下のバグを診断してください。
まず「症状の観察」「考えられる原因」「検証方法」「解決策」の4ステップで
順番に考えてから、最終的な回答を示してください。

バグ:
Node.js サーバーが高負荷時にメモリ使用量が増え続ける。
再起動すると正常に戻る。

「Let’s think step by step」という一文を追加するだけでも効果があります。

テクニック4: XML タグによる構造化

Claude をはじめ多くの LLM では、XML タグで情報を整理することで精度が上がります。

<context>
あなたは日本語技術ブログの編集者です。
読者は日本人エンジニア(中級〜上級)です。
</context>

<instructions>
以下の英語の技術情報を読んで、日本語記事を作成してください。
- 正確さを最優先にしてください
- 専門用語は英語のまま使ってください
- コード例は必ずコードブロックで示してください
</instructions>

<source>
[英語の技術記事の内容]
</source>

<format>
タイトル: (50文字以内)
本文: H2/H3 見出しを使い、600〜800文字
</format>

テクニック5: 構造化出力(JSON モード)

コードで処理するデータを取得するときは JSON を指示します。

以下の技術記事から情報を抽出して、JSON形式で返してください。

```json
{
  "title": "記事タイトル",
  "technologies": ["使用技術1", "使用技術2"],
  "difficulty": "beginner|intermediate|advanced",
  "key_points": ["ポイント1", "ポイント2", "ポイント3"],
  "code_languages": ["javascript", "python"]
}

JSONのみを返し、説明文は不要です。


最近のモデル(Claude Sonnet 4.6・GPT-5.4)は構造化出力(Structured Outputs)で型安全に制御できます。Claude では `output_config.format`、OpenAI では `response_format` を使用します。

## テクニック6: Negative Prompting(しないことを指示)

以下のルールを厳守してください:

  • 「もちろん」「承知しました」などの前置きを書かない
  • 「まとめると」で始まる締めくくりを書かない
  • マークダウンの ** は使わない(## 見出しは使う)
  • 主観的な意見を述べない

「しないこと」を明示すると出力が洗練されます。

## System Prompt の設計

一貫した出力を保つためには System Prompt を活用します。

TechBlog 記事執筆 System Prompt

あなたはTechBlogの執筆者です。

ペルソナ

  • 日本語ネイティブのシニアエンジニア
  • 正確で簡潔な文章を書く
  • 必要以上に難しくしない

記事フォーマット

  • H2/H3 見出しで構造化
  • コード例には言語を明示
  • 末尾にソースURLを記載

禁止事項

  • 誤った技術情報の記述
  • 根拠なき断言
  • 過度な修飾語

## まとめ

| テクニック | 効果的な場面 |
|---|---|
| Role Prompting | 専門的な視点が必要 |
| Few-shot | フォーマットを固定したい |
| Chain-of-Thought | 推論・診断・計画 |
| XML 構造化 | 複雑な指示を整理する |
| JSON モード | プログラムで処理するデータ |
| Negative Prompting | 不要な出力を除去 |

プロンプトエンジニアリングは試行錯誤が必要です。出力をログに残して、何が効果的だったかを追跡することを習慣にしましょう。

---

参考: [Anthropic Prompting Guide](https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/overview) / [OpenAI Prompt Engineering](https://platform.openai.com/docs/guides/prompt-engineering)