Skip to content

第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 “【構成例】リサーチ&ライティングの分業”
agents.yaml
researcher:
role: 最新技術アナリスト
goal: "{topic}に関する3つの重要トレンドを特定する"
backstory: |
シリコンバレーのVCで10年勤務した経験を持つ分析のプロ。
writer:
role: 専門ライター
goal: "リサーチ結果を基に、初心者向けの解説記事を執筆する"
backstory: |
複雑な概念を比喩を使って説明するのが得意な人気ブロガー。

2. プロンプトの「GitOps」化:バージョン管理と検証

Section titled “2. プロンプトの「GitOps」化:バージョン管理と検証”

YAMLをコードとして扱うことで、プロンプトの品質をソフトウェア開発と同じレベルで管理します。

  • 履歴の追跡: 「なぜこのプロンプトに変更したのか」をGitのコミットメッセージとして残す。
  • CI(継続的インテグレーション): yamllintactionlint を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をスペースに変換」を有効にする。
意図しない型変換yesno をクォートなしで書いた。文字列として扱う場合は必ず "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への思考指示書」としての地位を確立しました。

  1. 構造化の習慣: 「箇条書き」から「YAML構造」へ。これがLLMの推論精度を上げます。
  2. 分離の徹底: 「コード(実行)」と「プロンプト(指示)」を分ける。これがメンテナンス性の鍵です。
  3. 資産の共有: YAMLは人間にも読めます。チームやコミュニティ(note/GitHub)で共有し、集合知を加速させましょう。

🛠️ 即使えるYAMLテンプレート(最終確認用)

Section titled “🛠️ 即使えるYAMLテンプレート(最終確認用)”

本マニュアルの集大成として、以下の構造をテンプレートとして保存しておくことをお勧めします。

# プロンプト・エンジニアリング・テンプレート v2025
metadata:
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}: ユーザーの背景情報