3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[技術 第3回] 7層プロンプトエンジニアリング ― たった1行がAIの人格を決める

3
Last updated at Posted at 2026-03-03

UKA-GYRE 開発記 ― 技術深掘り編 第3回

前回の記事:

この記事は「UKA-GYRE 開発記」 技術深掘り編 第3回 です。
同じ情報でも「どこに」「どう」渡すかで出力が180度変わる。この不安定さをどう飼い慣らしたかを解説します。

1. 冒頭の事件 ―― 「ISTJなのにポエム」

ある日、ISTJタイプのクライアントに対して生成されたコメントが、データと数字ではなく感情たっぷりの詩的な文体だった。
「数値に基づいた分析を重視し、具体的な行動提案を行うこと」と明記してあるのに、だ。

原因は 指示の内容ではなく「配置」 だった。
MBTIスタイルの指示をプロンプトの中盤に配置していたところ、終盤のRAG事例(温かく共感的な文体)にAIが引っ張られ、ルールより具体例を優先してしまった。

この事件から、UKA-GYREのプロンプト設計が始まった。

2. 7層プロンプトの配置哲学 ―― 配置は内容と同じくらい重要

7層プロンプトの「各層に何を書くか」は読み物編第4回で紹介した。
この記事では、 「なぜその順番なのか」 という設計判断に踏み込む。

2.1. Primacy Effect ―― AIは「先に聞いた話」を重視する

LLMは「最初に提示された指示」を最も忠実に守る傾向がある。
プロンプトの先頭近くに書いた指示ほど遵守率が高く、後半に書いた指示ほど「忘れられやすい」。
これはLLMの認知バイアスであり、会議や授業と同じだ。
最初に聞いた話が一番印象に残り、中盤は薄れやすい。

この性質を設計に活用した。

位置 配置する情報 設計意図
先頭(第1〜2層) 役割定義 + MBTIスタイル 「何者としてどう話すか」を最初に刷り込む
中盤(第3〜5層) 方針 + 数値 + 生データ 判断材料を提供。事実ベースの領域
後半(第6層) RAG事例 参考資料。先入観のフィルター越しに読ませる
末尾(第7層) 強制命令 最後の念押し。遵守率を底上げ

2.2. MBTIスタイルを第2層に置いた理由

MBTIスタイルの指示は、ISTJのポエム事件を受けて中盤から第2層(最上位近く)に引き上げた。

引き上げた結果、スタイルの遵守率は劇的に改善した。
AIの「先入観」にスタイルを刷り込み、その後のすべての情報をスタイルのフィルター越しに処理させる。
この順番が鍵だった。

2.3. RAGコンテキストをあえて後半に置く理由

RAGコンテキストを第6層(後半)に置いたのも意図がある。
参考事例は有用だが、AIは事例の文言をそのままコピーしがちだ。
先にMBTIスタイルと戦略を「先入観」として植え付け、事例はあくまで「参考」として後から渡す。
これにより、「事例を参考にしつつも、このクライアントのスタイルで書く」行動を誘導している。

2.4. 「2回伝える」サンドイッチ構造

第2層で「どう話すか」を先頭近くで刷り込み、第7層で「何を参考にするか」を末尾で念押しする。
最初と最後に最重要ルールを配置するサンドイッチ構造だ。

なぜ同じことを2回書くのか。
2025年12月、Google Researchが興味深い研究結果を報告している(Prompt Repetition Improves Non-Reasoning LLMs)。
プロンプトをそのまま2回繰り返すだけで、LLMの正答率が有意に向上する
70件の評価対象のうち47件で改善し、正答率が低下したケースはゼロだったという。

実際にこの構造を導入して以降、重要ルールの遵守率が明確に向上した。

3. Lost in the Middle問題とRAG4層防御

7層のプロンプトが長くなるにつれて、新しい問題が浮上した。 RAGの知識をAIがガン無視する

苦労してナレッジベースを構築し、的確な過去事例を検索し、プロンプトに注入した。

なのにAIが「それっぽいが中身の薄い」汎用コメントを書いてくる。

原因は「Lost in the Middle」問題だ。
プロンプトが長くなるほど、AIは前半と末尾の情報に注意を集中し、 中間部の情報を軽視する 傾向がある。
7層プロンプトの中でRAGは第6層。
長いプロンプトの後半に位置するため、せっかくの知識がプロンプトの海に沈んでしまうのだ。

3.1. 4つの仕掛けで多層防御する

この問題を、4つの仕掛けを重ねた多層防御で解決した。

仕掛け1:構造的な分離。
RAGの参考事例を、他の情報と視覚的に分離した。
XMLライクなタグ(HTMLに似た開始・終了の目印)で<参考事例></参考事例>で囲み、プロンプトの中で「ここは特別なセクションである」とAIに認識させる。

📘 なぜXMLタグが効くのか
LLMは学習データの中でXML/HTMLタグを大量に見ているため、<タグ名>...</タグ名>という構造を「1つのまとまり」と認識しやすい。タグで参考事例を囲むと、AIが「ここから先は別の種類の情報だ」と判断し、地の文との混同を防げる。

地の文と参考事例の境界を曖昧にしない。

仕掛け2:前後挟み技法のRAGへの応用。
RAGセクションの 直前 に「以下の参考事例を必ず参照すること」、 直後 に「上記の参考事例を踏まえた上でコメントを生成すること」と、挟み撃ちにする。
AIが参考事例を読み飛ばそうとしても、その前後で二度念を押される構造だ。

仕掛け3:引用義務。
「参考事例の中から、今回の状況に最も近い事例を少なくとも1つ特定し、その要素をコメントに反映すること」と指示した。
漠然と「参考にしろ」ではなく、「どの事例をどう使ったか」を特定させることで、AIが事例を実際に読む動機を作る。

仕掛け4:ペナルティ宣言。
最後の層として、 「参考事例を無視した独自判断のみのコメントは不合格とする」 と明記した。
「参考にしてね」という穏やかな依頼より、「無視したら不合格」というペナルティの方がAIにはるかに効く。

この4つを重ねた結果、RAGの知識無視率はほぼゼロになった。

RAG知識活用の4層防御構造

1つの対策では足りない。
構造・位置・義務・ペナルティの4層で防御して、ようやくAIは「過去の知恵」をきちんと活用するようになった。

4. temperature=1.0の冒険 ―― 制約が自由を生む逆説

推論パラメータの中で、最も意外な設定がtemperatureかもしれない。
UKA-GYREでは temperature=1.0 (創造性最高値)で運用している。

📘 temperatureとは
temperature(温度)はAIの出力の「ランダムさ」を制御するパラメータだ。0に近いほど毎回同じ安定した出力になり、1.0に近いほど多様で創造的になるがハルシネーションの危険性も増す。多くのプロダクションシステムでは0.3〜0.7に下げる。

最初は0.6で運用していた。安全だと思った。
しかし、2〜3週間運用するうちに異変に気づいた。
コメントが似たり寄ったりになる
同じクライアントに同じような状況が続くと、AIは毎回ほぼ同じ表現を返してくる。
「今日もカロリーは少し控えめでしたね。タンパク質はしっかり摂れています」。
トレーナーから「AIっぽい」「テンプレート感がある」というフィードバックが増え始めた。

思い切って1.0に上げた瞬間、世界が変わった。
同じ「カロリーやや不足、タンパク質十分」の状況でも、ある日は食材の選び方に触れ、別の日はトレーニングとの関連に言及し、また別の日は週全体の流れから語りかける。
マンネリ化が消えた

これは普通なら危険な設定だ。temperature=1.0は「暴走」と隣り合わせのはずだ。
UKA-GYREで1.0が成立する理由は、 7層プロンプトという「制約」が、自由を安全にしているから だ。

  • MBTIスタイルが最上位で「どう話すか」を縛る。
  • 内部ラベルが「何について話すか」を縛る。
  • RAGの参考事例が「どのレベルで話すか」の基準を示す。
  • RAG4層防御が「参考資料を無視する」暴走を封じる。

これだけの制約に囲まれていれば、temperatureを上げても出力は 「制約の中で」 揺らぐだけだ。

制約があるから自由にできる。制約がなければ、自由は暴走になる。

これは直感に反する逆説だが、UKA-GYREのプロンプト設計の核心はここにある。

5. S3ベースの動的設定管理 ―― 実験サイクルの速さが品質を決める

プロンプトのチューニングで最も重要なのは、 実験サイクルの速さ だ。

「この一文を加えたらどうなるか」。
答えは実験しないとわからない。
実験に30分かかるか30秒かかるかで、1日に回せる実験の回数が桁違いに変わる。

UKA-GYREでは、プロンプトに関する全ての設定をS3上のファイルで管理している。
プロンプトの文言、MBTIの定義、ラベルの説明文、推論パラメータ、RAG設定。
設定を書き換えれば、5分以内に反映される。
Lambda再デプロイは不要だ。

さらに、 カスタム版とデフォルト版の2段フォールバック構造 を持たせている。
実験的な設定はカスタム版としてアップロードし、問題があればカスタム版を削除するだけでデフォルトに戻せる。
ロールバックに要する時間はゼロだ。

プロンプトのハードコードは論外として、環境変数による管理でも「変更 → ビルド → デプロイ → 反映」のサイクルを回す必要がある。
S3ベースの動的ロードは、このサイクルから「ビルド」と「デプロイ」を完全に除去する。

6. プロンプト制御の設計哲学

プロンプトエンジニアリングに正解の方程式はない。だからこそ、変更可能性を最大化する。

7層の配置設計も、RAG4層防御も、temperature=1.0の冒険も、全て数十回の試行錯誤から生まれた。
MBTIスタイルの指示を中盤から第2層に移動しただけでISTJのポエム問題が消えたように、正解は理論からではなく実験から見つかる。

この試行錯誤を支えたのが、S3ベースの動的設定管理だ。
プロンプトの文言、MBTIの定義、推論パラメータ。全てがS3上のファイルとして管理され、Lambda再デプロイなしに反映される。
「この一文を加えたらどうなるか」を数十秒で検証できる。

変えるコストが低ければ実験の回数が増え、実験の回数が増えれば正解に近づける。
プロンプト制御の品質を決定づけたのは、プロンプトの巧みさではなく、実験サイクルの速さだった。


次回は、この制御エンジンと対をなす「学習エンジン」の話だ。
昇華バッチが「経験」を「知恵」に変える仕組みと、それを支えるCDKインフラの設計判断を語る。


コラム:嘘をつくAIと、詩を書くAIは同じ仕組みで動いている

AIが存在しない論文を引用したり、架空の事実をもっともらしく語る「ハルシネーション」。
多くの人がこれをバグだと思っている。しかし実はこれ、AIの「創造性の源泉」そのものだ。

AIの内部には「事実のデータベース」と「空想のデータベース」が分かれているわけではない。
常に「次に来る確率が高い単語」を紡いでいるだけだ。
気の利いた比喩を生み出すメカニズムと、もっともらしい嘘を生み出すメカニズムは、全く同じだ。

もしハルシネーションを完全に排除したら、AIはただの検索エンジンに戻ってしまう。
だからこそ、夢想家には夢を見させたまま、百科事典を持たせる。
RAG+7層プロンプトは、まさにその「創造性を殺さずに囲い込む」設計だ。


次回の記事:


3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?