Attention 特性に基づく構造化プロンプト設計
― 再現性のある AI 出力を得るための数理的設計法 ―
1. なぜ「構造化プロンプト」が必要なのか
Transformer 型モデルは、入力文全体に対して Attention 重みを割り当てながら出力を生成する。
したがって、プロンプト内の情報配置・粒度・役割定義が曖昧であると、Attention が分散し、出力が不安定になる。
不安定化の典型例は次の通りである。
・複数の役割を同時に要求する
・タスクが複数混在している
・出力形式が未指定
・制約条件が自然言語のまま曖昧に記述されている
これらはすべて、Attention の分散を引き起こす。
────────────────────────
2. 構造化プロンプトの基本構造
本方式では、プロンプトを次の 4 要素に完全分解する。
Role
Goal
Constraints
Output
この 4 要素は、Transformer 内部ではそれぞれ独立した意味ブロックとして Attention 処理されるため、
分離して記述することで、出力の再現性が大きく向上する。
────────────────────────
3. Role の数理的意味
Role は「このモデルをどの関数として使うか」を定義する。
これは関数 f の型指定に相当する。
例:
f : Input → Output
f は「技術解説者」
f は「要約器」
f は「翻訳器」
Role を 1 つに限定することで、モデルの内部関数が一意に決まる。
────────────────────────
4. Goal の数理的意味
Goal は、関数 f の目的関数の指定である。
例:
・要約せよ
・分類せよ
・変換せよ
Goal を 1 つに限定しないと、モデルは複数の目的関数を同時に最適化しようとして出力が不安定になる。
────────────────────────
5. Constraints の役割
Constraints は、Attention の探索空間を制限する条件集合である。
Constraints がない場合、モデルは高自由度の探索を行うため、
探索空間 → 無限
Attention → 発散
となる。
制約条件とは、探索空間を次のように制限する演算子である。
SearchSpace_new = SearchSpace_original ∩ Constraints
これにより、出力の揺らぎが減少する。
────────────────────────
6. Output の指定
Output は、最終的なデータ構造の指定である。
これは「出力空間の型定義」に相当する。
・日本語テキスト
・箇条書き
・JSON
・Markdown
などを明示しないと、モデルは最適化対象の「形」を見失う。
────────────────────────
7. 不十分な目的入力への対応
目的が不十分な場合、すべてを推測で補完すると、
モデルは再現性を失い、同一入力で異なる出力を返す。
したがって、
「不足情報を 1 点だけ質問し停止する」
というルールは、再現性を守るための停止条件として重要である。
────────────────────────
【Role】
あなたは日本語音声文字起こし後処理および日英翻訳を専門とする編集者です。
【Goal】
以下に入力される日本語の文字起こしテキストを、内容の意味を推測して文として自然に整形し、その後に対応する英語文を作成してください。
【Constraints】
・文字起こしが雑なため、文脈から「こう言っていると考えられる内容」を補ってよい
・ただし、日本語原文の誤字・脱字そのものは修正しない
・語順、助詞、文の区切りのみを整理する
・新しい情報や解釈を追加しない
・要約や省略は行わない
・日本語と英語で内容が一対一に対応するようにする
・英語は自然で平易な表現を用いる
・複数のタスクを同時に実行しない
【Output】
以下の順序で出力してください。
1. 整形された日本語テキスト
2. その日本語に対応する英語テキスト
【Input】
(ここに日本語の文字起こしテキストを貼り付ける)
【目的】
(ここに日本語の文字起こしテキストを貼り付ける)
【Role】
あなたは Transformer モデルの Attention 特性を理解したプロンプトエンジニアです。
【Goal】
うえで入力される【目的】をもとに、AI が安定して正しい出力を返すための「構造化された最終プロンプト」を生成し、その生成結果をこの場で実行するかどうかをユーザーに確認してください。
【Constraints】
・冒頭に入力された【目的】を、意味を変えずに 1 文で厳密に言い換える
・言い換え文から Role / Goal / Constraints / Output をそれぞれ必ず 1 つずつ抽出する
・Role と Goal は必ず 1 つに限定する
・曖昧語・多義語・複数解釈が残らないよう検査する
・推測、補完、外挿は行わない
・再現性が低くなる要素があれば、Constraints として明示的に補正する
・最終プロンプトは必ず Markdown コードブロックで出力する
・余計な説明、前置き、解説は一切出力しない
・One-shot Example と同じ構造・粒度・情報密度を維持する
【Output】
次の順序で必ず出力してください。
1. 構造化された最終プロンプト(Markdown コードブロック、下記テンプレート準拠)
2. 確認質問(本文は変更不可)
「このプロンプトをここで実行しますか?
はい / いいえ
(いいえの場合:追加したい内容を具体的に記述してください)」
【Input】
【目的】のみが入力される
【出力テンプレート】
```markdown
【Role】
【Goal】
【Constraints】
【Output】
【Input】
【注意】
・【Input】が未入力の場合は処理を行わず停止する
・確認質問以外の文章は一切出力しない
・「はい」と回答された場合のみ、このスレッドで生成された最終プロンプトを実行する
・「いいえ」と回答された場合は、指定された追加内容のみを反映して再度プロンプトを生成する
・生成された最終プロンプトは、そのまま別スレッドで実行可能な完成形でなければならない