第1部:YAMLプロンプトエンジニアリングの根理と基本構造
第1部:YAMLプロンプトエンジニアリングの根理と基本構造
Section titled “第1部:YAMLプロンプトエンジニアリングの根理と基本構造”1. YAMLが「AIの標準言語」なのか
Section titled “1. YAMLが「AIの標準言語」なのか”従来のMarkdown(人間向け)やJSON(機械向け)の欠点を補い、「人間とAIの共通言語」として機能するためです。
- Attentionの効率化: 記号({ } , [ ])が少ないため、LLMが本質的な指示内容に注目しやすくなります。
- 構造の明示: インデントによる階層化が、LLMの思考ステップ(Step-by-Step)と自然に同期します。
- 堅牢性: カンマの欠落や括弧の閉じ忘れによるパースエラーが激減し、システムの安定性が向上します。
2. 職人が守るべき「YAML記述の黄金律」
Section titled “2. 職人が守るべき「YAML記述の黄金律」”LLMに意図を正確に伝えるための、視覚的・構造的ルールです。
| 項目 | 推奨される書き方 | 理由 |
|---|---|---|
| インデント | 2スペース固定(タブ厳禁) | 差分(diff)が見やすく、多くのパーサーが標準とするため。 |
| 長文指示 | **ブロック形式(` | `)**を使用 |
| 命名規則 | 意味のあるキー名(goal, context等) | キー名自体がLLMへの追加指示(メタ情報)として機能する。 |
| コメント | # を積極的に活用 | 開発者の意図をAI(Copilot等)や後任者に伝える。 |
【実践例】美しいプロンプト定義
Section titled “【実践例】美しいプロンプト定義”# 翻訳エージェントの設定agent_config: model: gpt-4o temperature: 0.3 instruction: | あなたはプロの翻訳家です。 以下の制約を厳守してください: - 文末は「です・ます」調 - 専門用語は一般読者向けに補足3. 再利用性を高める「アンカーとエイリアス」
Section titled “3. 再利用性を高める「アンカーとエイリアス」”プロンプトの重複を避け、DRY(Don’t Repeat Yourself)原則を貫くための高度なテクニックです。
&label(定義): 共通設定に名前をつける。*label(参照): 定義した内容を呼び出す。<<:(マージ): 共通設定を取り込みつつ、一部を上書きする。
# ベース設定の定義base_prompt: &default role: assistant format: markdown
# ベースを継承しつつ役割だけ変更technical_writer: <<: *default role: technical_writer第2部:AIエージェント構成と運用の高度化戦略
Section titled “第2部:AIエージェント構成と運用の高度化戦略”1. マルチエージェントの「分業」をYAMLで記述する
Section titled “1. マルチエージェントの「分業」をYAMLで記述する”エージェント同士の連携を設計する際、YAMLは単なる設定値ではなく、「組織図」としての役割を果たします。CrewAI等のフレームワークで推奨される設計パターンです。
- Role-Playの深化:
backstoryキーを用いることで、LLMに特定の専門性やバイアス(背景知識)を固定させます。 - 依存関係の明示:
contextキーを使い、タスクAの出力をタスクBの入力とする「情報の流れ」を定義します。
【構成例】リサーチ&ライティングの分業
Section titled “【構成例】リサーチ&ライティングの分業”researcher: role: 最新技術アナリスト goal: "{topic}に関する3つの重要トレンドを特定する" backstory: | シリコンバレーのVCで10年勤務した経験を持つ分析のプロ。
writer: role: 専門ライター goal: "リサーチ結果を基に、初心者向けの解説記事を執筆する" backstory: | 複雑な概念を比喩を使って説明するのが得意な人気ブロガー。2. プロンプトの「GitOps」化:バージョン管理と検証
Section titled “2. プロンプトの「GitOps」化:バージョン管理と検証”YAMLをコードとして扱うことで、プロンプトの品質をソフトウェア開発と同じレベルで管理します。
- 履歴の追跡: 「なぜこのプロンプトに変更したのか」をGitのコミットメッセージとして残す。
- CI(継続的インテグレーション):
yamllintやactionlintをGitHub Actionsに組み込み、デプロイ前に構文エラーを自動検知する。 - 自動テスト: YAMLファイル内の
expected_outputと実際のLLM出力を比較するテストスクリプトを走らせる。
3. Markdownとの統合:発信と再利用のハイブリッド設計
Section titled “3. Markdownとの統合:発信と再利用のハイブリッド設計”noteや技術ブログでの発信において、「フロントマター」としてのYAML活用が重要です。
-
二層構造のメリット:
-
メタ情報(YAML): モデル名、温度感、トークン制限、ターゲット層。
-
コンテンツ(Markdown): 実際のプロンプト解説、使用例、背景ストーリー。
-
AIアシスタントへの配慮: 記事の冒頭にYAMLブロックを置くことで、読み込ませた瞬間にAIが「この文書の目的と自分の役割」を即座に理解できるようになります。
第3部:トラブルシューティングと自動化の極意
Section titled “第3部:トラブルシューティングと自動化の極意”1. プロンプト職人の「地雷」回避チャート
Section titled “1. プロンプト職人の「地雷」回避チャート”YAMLは自由度が高い反面、些細なミスでシステムが停止します。以下の3点は特に注意が必要です。
| 症状 | 原因 | 対策 |
|---|---|---|
| パースエラー | インデントに Tab が混じっている。 | エディタの設定で「Tabをスペースに変換」を有効にする。 |
| 意図しない型変換 | yes や no をクォートなしで書いた。 | 文字列として扱う場合は必ず "yes" と囲う(YAML 1.1ではBool値と誤認される)。 |
| 記号によるエラー | 内容に : や { が含まれている。 | プロンプト本文は必ず ` |
2. 運用を楽にする「変換・抽出スクリプト」
Section titled “2. 運用を楽にする「変換・抽出スクリプト」”YAMLをただのテキストファイルで終わらせないために、Python等のスクリプトと組み合わせて「生きた資産」にします。
-
YAML → Markdown変換:
-
エンジニアが書いた設定ファイルを、非エンジニアが読める「仕様書」として自動生成する。
-
Jinja2による動的プロンプト生成:
-
YAML内に
{{ user_name }}のような変数を仕込み、実行時に外部データ(DBやAPI)と合成する。 -
Front Matter抽出:
-
大量のMarkdown記事からプロンプト設定(YAML部分)だけを抜き出し、一括テストに回す。
3. 総括:YAMLが拓く「AIネイティブ」な開発
Section titled “3. 総括:YAMLが拓く「AIネイティブ」な開発”2025年以降の開発において、YAMLは単なる「設定」ではなく、「AIへの思考指示書」としての地位を確立しました。
- 構造化の習慣: 「箇条書き」から「YAML構造」へ。これがLLMの推論精度を上げます。
- 分離の徹底: 「コード(実行)」と「プロンプト(指示)」を分ける。これがメンテナンス性の鍵です。
- 資産の共有: YAMLは人間にも読めます。チームやコミュニティ(note/GitHub)で共有し、集合知を加速させましょう。
🛠️ 即使えるYAMLテンプレート(最終確認用)
Section titled “🛠️ 即使えるYAMLテンプレート(最終確認用)”本マニュアルの集大成として、以下の構造をテンプレートとして保存しておくことをお勧めします。
# プロンプト・エンジニアリング・テンプレート v2025metadata: version: "1.0" target_model: "gpt-4o" priority: high
template: system: | あなたは{role}です。 以下の{context}に基づき、{output_format}で回答してください。
few_shot_examples: - input: "例題1" output: "回答例1"
constraints: - "嘘をつかない" - "専門用語を避ける"
# 変数の説明をコメントで残す# {role}: アシスタントの役割(例:税理士)# {context}: ユーザーの背景情報