ヘッダー・本文・フッターのプロンプトパターン
複雑な複数タスクのプロンプトにも拡張できる、一貫したプロンプト構成を学びます。
「ヘッダー・本文・フッターのプロンプトパターン」はCoddyKit上の無料AI Prompt Engineeringレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Prompt Engineering学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Prompt Engineeringコースには全4レッスンが含まれています。
ドキュメントとしてのプロンプト
レポート、記事、メールなどの長文ドキュメントでは、認知的に移動しやすいHeader/Body/Footer構造が使われます。読者は各領域に何が含まれるかを予測できます。
同じ原則をプロンプトにも適用できます。プロンプトが数文を超える場合、Header/Body/Footer構造にすると、内容をすばやく確認しやすく、保守しやすく、一貫性のあるものになります。
このパターンはさまざまなモデルで機能し、単純なプロンプトから非常に複雑なプロンプトまで対応できます。
ヘッダーセクション
ヘッダーは、次の2つの質問に答えます。あなたは誰ですか。そしてタスクは何ですか。
ヘッダーでは、モデルのアイデンティティ(ペルソナまたは役割)を設定し、プロンプトの主な目標を示します。それ以外の要素はすべて、この基盤の上に構築されます。
優れたヘッダーは簡潔で、通常は2〜4文です。例、制約、出力ルールは含めません。
header = '''
<header>
You are an expert technical writer specializing in API documentation.
Your task is to write clear, developer-friendly documentation
for the API endpoint described in the body of this prompt.
</header>
'''
print(header)本文セクション
本文には、モデルがタスクを実行するために必要なコンテンツやコンテキストが含まれます。ここが主なデータ領域です。
- 処理対象の原文ドキュメント
- 会話履歴
- 構造化データ(JSON、CSVの断片)
- 参照資料
- ユーザーが実際に入力した内容
本文は最も大きなセクションであり、実行時に動的に挿入されることが最も多い部分です。
def build_body(endpoint_spec):
return f'''
<body>
<endpoint_specification>
{endpoint_spec}
</endpoint_specification>
</body>
'''
spec = 'POST /api/v2/users\nRequest body: {email: string, role: admin|user}\nReturns: {id: string, created_at: ISO8601}'
print(build_body(spec))フッターセクション
フッターには、形式に関する指示と出力スキーマが含まれます。フッターを最後に配置する理由は次のとおりです。
- モデルは上から下へ読み、直前に処理した内容に形式のルールを適用する
- 最後に近い位置にある形式の指示は、無視されにくい
- 同じ出力形式を使うプロンプト間で、フッターを再利用できることが多い
フッターは明示的に記述してください。適切に整形してくださいではなく、次のフィールドを持つJSONオブジェクトを返してくださいと記述します。
footer = '''
<footer>
Format your response as a JSON object with these fields:
{
"endpoint": "string",
"summary": "string (one sentence)",
"parameters": [{"name": "string", "type": "string", "required": true|false, "description": "string"}],
"response_example": "string (JSON)",
"error_codes": [{"code": "number", "meaning": "string"}]
}
Do not include any text outside the JSON object.
</footer>
'''
print(footer)完全なパターンの組み立て
ヘッダー、本文、フッターを組み合わせて、完全で再利用可能なプロンプト関数を作成します。
def build_api_doc_prompt(endpoint_spec):
header = '<header>\nYou are an expert technical writer. Document the API endpoint in the body.\n</header>'
body = f'<body>\n<endpoint>\n{endpoint_spec}\n</endpoint>\n</body>'
footer = '<footer>\nReturn JSON: {"summary": str, "parameters": [...], "response_example": str}\nNo text outside JSON.\n</footer>'
return '\n\n'.join([header, body, footer])
spec = 'GET /api/products/:id\nReturns product details by ID'
print(build_api_doc_prompt(spec))この順序が機能する理由
ヘッダー/本文/フッターの順序は、モデルがコンテキストを処理する方法に対応しています。
- 最初にヘッダー — アイデンティティと目標を確立し、後に続く内容に備えてモデルを方向付ける
- 次に本文 — モデルは、確立された役割とタスクの観点からコンテンツを処理する
- 最後にフッター — 形式の指示がモデルの応答生成の直前に置かれるため、出力構造への影響を最大化できる
形式の指示をヘッダー(最初)に置くと、モデルが応答を書く頃にはその内容の一部を忘れてしまいます。
複雑なプロンプトへの拡張
プロンプトが複雑になっても、Header/Body/Footerパターンは自然に拡張できます。
def build_complex_prompt(persona, task, context_docs, constraints, output_schema):
header = f'<header>\n{persona}\nTask: {task}\n</header>'
docs = '\n'.join(f'<document id="{i+1}">\n{d}\n</document>' for i, d in enumerate(context_docs))
body = f'<body>\n{docs}\n</body>'
constraint_list = '\n'.join(f'- {c}' for c in constraints)
footer = f'<footer>\n<constraints>\n{constraint_list}\n</constraints>\n<output_schema>\n{output_schema}\n</output_schema>\n</footer>'
return '\n\n'.join([header, body, footer])Footerテンプレートの再利用
Footerは出力構造を定義するため、最も再利用しやすいセクションです。一般的なFooterテンプレートは次のとおりです。
FOOTER_JSON = '<footer>\nReturn a valid JSON object. No text outside JSON. No markdown code fences.\n</footer>'
FOOTER_MARKDOWN = '<footer>\nFormat your response as markdown.\nUse ## for section headers.\nUse bullet points for lists.\nMaximum 500 words.\n</footer>'
FOOTER_STRUCTURED = '<footer>\nRespond using this exact structure:\n1. Summary (1 sentence)\n2. Key Findings (bullet list)\n3. Recommendation (1 paragraph)\n</footer>'
print('Footer templates ready for reuse.')Bodyへの動的コンテンツの注入
Bodyは、実行時に動的に構築されることが最も多いセクションです。Bodyに動的な内容を注入する際のベストプラクティスは次のとおりです。
- 注入するコンテンツは必ず名前付きのXMLタグで囲みます
- プロンプトインジェクションを防ぐため、注入する前にユーザー入力をサニタイズします
- 非常に長いドキュメントは切り詰め、Body内に切り詰めたことを記載します
- 注入する各要素に明確なラベルを付けます(document_1、user_query、chat_history)
def safe_inject(user_content, max_chars=3000):
safe = user_content.replace('<', '<').replace('>', '>')
if len(safe) > max_chars:
safe = safe[:max_chars] + '... [TRUNCATED]'
return f'<user_input>\n{safe}\n</user_input>'
raw = 'User provided text here. Could be very long.'
print(safe_inject(raw))コードベース全体で一貫した構造
Header/Body/Footerの真価は、アプリケーション全体で同じパターンを一貫して使用したときに発揮されます。メリットは次のとおりです。
- 新しいチームメンバーでも、どのプロンプトもすぐに理解できます
- コードレビューでのプロンプトレビューが容易になります。レビュアーは確認すべき場所を正確に把握できます
- 自動テストで各セクションを独立して検証できます
- モデル間でのプロンプト移行が容易になります。変わるのは構造ではなくコンテンツだけです
Header/Body/Footerでよくある間違い
パターンの有効性を損なう間違いは次のとおりです。
- Headerに形式の指示を書く — 応答生成から離れすぎているため、モデルが部分的に無視します
- Bodyにタスクの説明を埋め込む — モデルが指示ではなく、処理対象のデータとして扱う可能性があります
- セクション間で制約を分散させる — 監査が難しくなり、矛盾につながります
- Footerがない — プロンプトが複雑になるにつれて、出力構造が予測できなくなります
クイックチェック
Header/Body/Footerパターンでは、出力形式の指示をどこに置くべきでしょうか。また、その理由は何でしょうか。
Header/Body/Footer — 要点
Header/Body/Footerパターンは、ドキュメント構造の規律をプロンプトエンジニアリングにもたらします。
- Header:自分が何者であるかとタスク — その後に続くすべての内容の枠組みを設定します
- Body:コンテンツとコンテキスト — 動的に注入し、意味を持つXMLタグで囲みます
- Footer:形式の指示と出力スキーマ — 出力構造への影響を最大化するため、最後に配置します
- 単純なプロンプトから非常に複雑なプロンプトまで、自然に拡張できます
- 同じ出力タイプを使用するプロンプト間でFooterテンプレートを再利用できます
- コードベース全体で一貫性を保つことで、プロンプトをレビュー、テスト、保守しやすくなります
よくある質問
「ヘッダー・本文・フッターのプロンプトパターン」レッスンは無料ですか?
はい。「ヘッダー・本文・フッターのプロンプトパターン」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Prompt Engineeringコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Prompt Engineeringコースには全4レッスンが含まれています。
「ヘッダー・本文・フッターのプロンプトパターン」で何を学びますか?
複雑な複数タスクのプロンプトにも拡張できる、一貫したプロンプト構成を学びます。 ブラウザで直接実行するハンズオンコードでAI Prompt Engineeringを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
AI Prompt Engineeringを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAI Prompt Engineeringは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「ヘッダー・本文・フッターのプロンプトパターン」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAI Prompt Engineeringレッスンでコードを書いて実行できますか?
はい。すべてのAI Prompt Engineeringレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- XML タグを区切り文字として使う
- モジュール式のプロンプトセクション
- ヘッダー・本文・フッターのプロンプトパターン
- プロンプト整理のベストプラクティス