プロンプトエンジニアリングとは、大規模言語モデル(LLM)に与える指示を設計し、テストし、改良して、必要な出力を安定して得られるようにする実践です。「エンジニアリング」という言葉が重要です。目的は 1 回の良い回答ではなく、プロンプトを実行するたびに同じ品質の回答を得ることです。
実践的な定義
プロンプトとは、モデルが書き始める前に受け取るすべてのものです。指示、背景、例、ドキュメント、そして質問そのものが含まれます。プロンプトエンジニアリングは、その入力に何を含め、どのように配置するかを決めることです。
これには 3 つの活動があります。
- タスクを明確に定めること。重要なことを推測に任せません。
- モデルが持っていない文脈を与えること。たとえば、データ、対象読者、制約です。
- 結果を測定し、勘ではなく根拠に基づいてプロンプトを変えること。
プロンプトエンジニアリングの仕組み
言語モデルは、これまでに見たトークンから次のトークンを予測します。モデルが知ることができるのはあなたのテキストだけで、意図には触れられません。ここから 2 つのことが言えます。
書かなかったことは補われます。 「短い要約」と頼むと、モデルは長さ、対象読者、形式を自分で選びます。次回は別のものを選ぶかもしれません。一貫性のない出力の多くは、プロンプトが決めていなかったことが原因です。
位置と構造が意味を持ちます。 モデルは見出し、区切り、例を、次にどんな種類のテキストが来るかを示す手がかりとして扱います。指示とデータを分け、望む回答の形を示すほうが、形容詞を足すよりも予測を大きく変えます。
次は同じ依頼を 2 通りに書いたものです。
Summarize this report.
Summarize the quarterly sales report below for the EMEA leadership team.
Write 5 bullet points covering revenue by country and the change from
last quarter. Return a markdown list.
<report>
{{report}}
</report>
2 つ目の版は、対象読者、長さ、内容、形式を示し、データの始まりと終わりも明示しています。巧妙な点は何もありません。1 つ目の版が決めずに残したことを、ただ決めているだけです。
プロンプトエンジニアリングが重要な理由
信頼性。 モデルを呼び出すソフトウェアには、予測できる出力が必要です。10 回に 9 回しか JSON を返さないプロンプトでは、残る 1 回のリクエストが失敗します。
コスト。 モデルはトークン単位で課金されます。同じ内容を繰り返したり、不要な文脈を抱えたりするプロンプトは、呼び出しのたびにコストが増えます。測定と削減の方法はトークン最適化を参照してください。
安全性。 プロンプトには、ユーザー、ドキュメント、ウェブページのテキストが含まれることがよくあります。注意しないと、そのテキストが指示を上書きしてしまいます。これをプロンプトインジェクションと呼び、その防御はプロンプトの組み立て方から始まります。
改善の速さ。 プロンプトの変更は数分で済みます。モデルのファインチューニングにはデータ、お金、時間が必要です。ほとんどのタスクでは、プロンプトを改善するのが最も安上がりな方法です。
プロンプトエンジニアリングではないもの
魔法のフレーズ集ではありません。チップを約束する、大文字で書くといった小技の効果は一定せず、モデルのバージョンによって変わります。長く通用するのは、明確な仕様、適切な文脈、そしてテストです。
また、タスクを理解することの代わりにもなりません。プロンプトで頼めるのは、書き手が説明できるほどよく理解していることだけです。
プロンプトエンジニアリングとコンテキストエンジニアリング
モデルが非常に大きな入力を読み、ツールを呼び出せるようになるにつれ、仕事の中心は、1 つの指示の言葉選びから、各ステップでモデルにどんな情報を見せるかの決定へと移りました。これはしばしばコンテキストエンジニアリングと呼ばれます。検索拡張、エージェントへの指示、Model Context Protocol のようなツール接続が含まれます。原則は同じです。モデルに必要なものを、はっきり区切って渡し、気を散らすものは渡さないことです。
次に読むもの
- ステップごとのプロンプトエンジニアリングガイドに沿って、最初の本番用プロンプトを書きましょう。
- プロンプトの種類と主要なプロンプトエンジニアリングの手法を学びましょう。
- プロンプトを PromptFlowEngine のアナライザーに貼り付けて、どの判断が未決のままかを確認しましょう。