はじめに
AIを使ったコーディングやデバックが当たり前となった今、次にエンジニアに求められる能力はAIへの指示の出し方(プロンプトの最適化)だと思います。
AIの潜在能力を最大限に引き出すためにはどのように指示をだせばいいのか。
プロンプトに関して自分なりに調べてまとめてみました。
AIが指示を解釈する仕組み
AIは、入力された「言葉」をそのまま理解しているわけではありません。内部では、言葉を
数値の羅列(ベクトル)に変換し、数学的な計算によって「次に続く可能性が最も高い言葉」を導き出しています。
解釈のプロセスは大きく分けて以下の4つのステップがあります。
1. 単語の分解と数値化(トークナイズ・埋め込み)
入力された指示を「トークン」と呼ばれる最小単位に分解し、それぞれの言葉が持つ意味やニュアンスを高次元の数値データ(分散表現)に置き換えます。
2. 文脈と関連性の解析(アテンション・メカニズム)
Transformer(トランスフォーマー)と呼ばれる技術の核となる「自己注意(Self-Attention)」という仕組みを使います。文中のどの単語がどの単語と深く関わっているかを計算し、例えば「それ」が何を指しているのかといった文脈(コンテキスト)を特定します。
3. 多層的な意味解析
数値化された情報は、AIモデルの複雑な層(エンコーダー)を通り抜けます。各層で「文法」「意味」「意図」といった異なるレベルの抽象的な特徴が抽出され、最終的にユーザーの要求を「一つのまとまった意味の塊」として解釈します。
4. 確率に基づいた応答生成
解釈した内容に基づき、膨大な学習データから「この指示に対する最も自然で適切な続き」を1語ずつ予測して文章を作り上げます。
参考資料:
仕組みから考えられた、最適な指示の与え方
AIは指示を受け取った際に、入力された文章に勝手に重みづけを行いその後の処理へ続きます。
アテンション・メカニズムとは
アテンション・メカニズムとは、入力データの中で「今この処理にとって重要な部分はどこか」を動的に判断し、そこに重みを集中させる仕組みです。つまり、AIに勝手に重みづけされないよう、指示を出す段階でこちら側で重みづけをコントロールすることが、精度の高い期待する出力を得るためのポイントになります。
そのため、すでに多くの場で見かけることがあると思いますが、以下のフォーマットをベースに指示を与えることが推奨されています。
## 1.あなたの役割(Role)
(例)
あなたは **シニアクラウドアーキテクト(AWS専門)** です。
---
## 2.目的(Objective)
(例)
あなたのタスクは、**Amazon Aurora と DynamoDB の使い分け指針を技術的に整理する**ことです。
---
## 3.前提・背景(Context)
(例)
- 利用環境は AWS
- システムは Web アプリケーション
- 想定読者:バックエンドエンジニア(中級)
---
## 4.制約条件(Constraints)
(例)
- 推測や憶測は行わない
- 不確かな情報は「不明」と明示する
- AWS公式ドキュメントに基づく説明を優先する
---
## 5.思考方針(Reasoning Instructions)
(例)
- 段階的に論理を展開する
- トレードオフを明示する
- 単純な結論に逃げない
---
## 6.出力要件(Output Requirements)
(例)
- メリット・デメリットを明確に分ける
- 表を使って比較する
- 実務で意思決定に使える内容にする
---
## 7.出力形式(Output Format)
(例)
- 日本語
- Markdown形式
- 見出し+表を使用
1. あなたの役割(Role)
Roleは、AIの「思考モード」と「評価軸」を切り替えるスイッチです。「どの専門家として振る舞うか」によって、出力に使う語彙や技術レベル、判断基準を切り替えます。
役割指定がない場合、出力は一般論・教科書的説明に寄ってしまい、浅く広い説明(最大公約数的な無難な回答)になってしまいます。
2. 目的(Objective)
目的が書かれていないプロンプトでは、与えられた指示に対して、
・解説すればいいの?
・要約すればいいの?
・比較すればいいの?
・判断すればいいの?
とAIを混乱させてしまいます。結果、内容は合っていても期待した結果が出力されない場合が多いです。
3. 前提・背景(Context)
前提が明示的に指定されていないと、AIは勝手に仮定してしまいます。
「オンプレミス環境でのインフラ構成について質問したつもりだったのに、出力回答がクラウド環境前提だった」なんてことになってしまいます。
4. 制約条件(Constraints)
AIの暴走・脱線・想像補完を防ぐためのガードレールです。
AIは自由にすると品質が下がると言われています。
これがないと、AIは「親切すぎて」ユーザーが望んでいない余計な情報まで出力したり、場合によっては根拠のない「それっぽい」回答をしてしまうことがあります。
5. 思考方針(Reasoning Instructions)
AIは基本的に結論を最短経路で出力しようとします。
その結果、トレードオフが無視されたり、回答にブレが生じてしまうことがあります。
仮定や選択肢を明記させることで出力の品質を安定させることができます。
6. 出力要件(Output Requirements)
出力要件が未指定の場合、 「説明が短すぎてその結論に至った理由がわからない」や逆に「説明は長いが不要な内容が多く、本当に欲しい情報が含まれていまい」といったことが起きてしまいます。
そのため、AIにどこまで書けば合格かを指示することが重要になります。
7. 出力形式(Output Format)
出力形式を指定しない場合、毎回の出力のフォーマットに一貫性がなくなってしまいます。
チームでの共有や、コピペ、再利用を容易にするためにも、指定しておくことが推奨されます。
精度をさらに高めるプロンプトのテクニック集
①Markdown記法で指示する
こちらは上記で説明済みですが、精度の高い出力を生成するためには必須です。
Markdownは見出し・箇条書き・表などの構造を明確に示せるため、AIに指示の階層や重要度を正確に理解させることができます。
②英語を使う
エンジニア向けの内容になりますが、世の中の多くの技術文書は英語で書かれており、AIが最も多く学習しているデータも英語ベースのものになります。また、英語は主語・時制・論理接続が明確で、日本語と比較して推論がブレにくいといった特徴もあります。
・プロンプトを英語に翻訳してから渡す
・思考プロセスを英語で行わせる
・英語のサイトをソースに調査させる
・出力結果のみ日本語に翻訳させる
などといった方法があります。
③入力したプロンプトを再読させる
入力したプロンプトを再読させることで、AIに要件の取りこぼしを防がせ、指示遵守率を最大化させることができるそうです。
多ければ多いほど良いわけではなく、2周させるだけで精度が高くなったという研究結果が出ているそうです。
④重要な情報はプロンプトの最初と最後におく
こちらも研究結果からの引用になりますが、AIは文脈の冒頭と終端を特に重視して解釈するため、重要な情報をプロンプトの最初と最後におくことで指示遵守率を最大化させることができるそうです。
⑤検索範囲を明示する
検索範囲を公式ドキュメント・論文などといった一次情報中心に制限することで、誤情報を減らし出力の精度を高めることができます。
⑥根拠となるソースを明示させる
AIの勝手な推論を防止し回答の根拠を可視化できるだけでなく、引用や検証も容易になります。
⑦時間をかけさせる
時間は多少かかってしまいますが、AIのデフォルトの即答モードを抑制させ、精度・網羅性・論理性を意図的に引き上げることが可能になります。
⑧「不明」と書いてよいルール
不明な場合は不明と書かせることで、「推測での回答」や「ハルシネーション」を防止することができます。
ハルシネーションとは
ハルシネーション(Hallucination)とは、AIが事実ではない情報を、もっともらしく断定的に生成してしまう現象です。 知識が「ない/曖昧」な部分を、文脈から推測で埋めてしまうことで起きます。⑨気持ちを訴えかける
「自分を信じ限界を超えてください」や「成長の機会だと捉えて挑戦してください」など感情を込めたプロンプトを追加することで精度をあげることができるようです。プロンプトエンジニアリングもまだまだ奥が深いですね。。
おわりに
今回紹介した内容はあくまで一例であり、すべてのAIモデルに適用するわけではありません。
AIは日々ものすごい勢いで進化しているため、常に最新の情報をキャッチアップしつつ、プロンプトを最適化していく必要があると思いました。
参考記事