はじめに
生成AIを使っていると、同じテーマについて質問しているにもかかわらず、回答の質が大きく変わることがあります。
例えば、Dijkstra法について質問する場合でも、
Dijkstra法について教えてください。
と聞くのと、
私はPHPエンジニアです。
配送ルート最適化機能を開発しています。
と聞くのでは、得られる回答が大きく異なります。
なぜこのような違いが生まれるのでしょうか。
今回は Dijkstra法 を題材に
・Context
・Role
・Task
・Output
という4つの要素が、AIの回答にどのような影響を与えるのかを検証してみました。
ベースライン
まずは何も情報を与えずに質問してみます。
Dijkstra法について教えてください。
AIは一般的な説明を返します。
例えば、
・Dijkstra法とは何か
・最短経路問題
・アルゴリズムの流れ
・計算量
といった内容です。
説明としては正しいですが、
・誰向けの説明なのか
・何のために学びたいのか
が分からないため、どうしても教科書のような回答になります。
Contextを追加してみる
次に、背景情報を与えてみます。
配送ルート最適化機能を開発しています。
Dijkstra法について教えてください。
ここで追加したのは Context だけです。
するとAIは、
・配送システム
・物流テキスト
・ルート探索
といった業務との関連を説明し始めます。
Dijkstra法の知識そのものは変わっていません。
しかし、「どの場面で利用するのか」が明確になります。
これがContextの効果です。
Roleを追加してみる
さらに利用者の立場を伝えてみます。
私はPHPエンジニアです。
配送ルート最適化機能を開発しています。
Dijkstra法について教えてください。
ここでは Context に加えて Role が追加されています。
するとAIは、
・PHPでの実装方法
・利用するデータ構造
・パフォーマンス
・メモリ消費
など、エンジニア向けの説明を増やし始めます。
同じAIであっても、教科書から技術メンターへと役割が変わったように見えます。
Taskを明確にする
次に、何をしてほしいのかを明確にしてみます。
私はPHPエンジニアです。
配送ルート最適化機能を開発しています。
Dijkstra法を実務で利用する前提で説明してください。
ここで初めて Task が明確になります。
AIは単なるアルゴリズム解説ではなく、
・実際に利用すべきか
・どのような制約があるか
・負の重みを扱えないという問題
・Google Mapsのような大規模システムとの違い
なども説明するようになります。
回答は「知識の説明」から「実践的なアドバイス」へと変化していきます。
Outputを指定する
最後に、回答形式を指定してみます。
私はPHPエンジニアです。
配送ルート最適化機能を開発しています。
Dijkstra法を実務で利用する前提で説明してください。
以下の順番で説明してください。
1. 何を解決するアルゴリズムか
2. 実際の利用例
3. 処理の流れ
4. PHP実装例
5. 性能と処理速度
6. 導入時の注意点
7. 実務で採用すべきケース
ここでは Output が追加されています。
するとAIは単に質問へ答えるだけではなく、「まるで資料を書いているような構成の回答」
を返すようになります。
検証結果
| 要素 | 追加した情報 | AIの変化 |
| なし | Dijkstra法について教えてください | 教科書 |
| Context | 配送ルート最適化機能を開発 | 業務との関連を説明 |
| Role | PHPエンジニア | 技術メンター |
| Task | 実務利用を前提 | 実践的なアドバイス |
| Output | 回答構成を指定 | ドキュメント作成者 |
まとめ
今回の検証で分かったのは、AIが賢くなったわけではないということです。
変わったのはAIではなく、AIに渡した情報でした。
・Context は「背景」を伝える
・Role は「誰のための回答か」を伝える
・Task は「何をしてほしいか」を伝える
・Output は「どのように答えてほしいか」を伝える
そして、これらが揃うほど、AIはより適切な形で知識を提供できるようになります。
つまり、良いプロンプトとは長いプロンプトではありません。
AIに必要な Context・Role・Task・Output を適切に伝えるプロンプトです。
AIが賢く見える瞬間の多くは、AIそのものが変わったのではなく、私たちの「伝え方」が変わった結果なのかもしれません。
これが今回の検証で得られた最も大きな学びでした。
