プロンプトエンジニアリングプロセスの定義
プロンプトエンジニアリングは、生成AIツールの入力を設計し、大規模言語モデルを調整して出力を洗練させるための工学技術です。
プロンプトは入力と呼ばれ、生成AIツールによって生成される回答は出力と呼ばれます。入力レベルでの正確性と特異性(ここでプロンプトエンジニアリングが重要になります)こそが、生成AIツールがより正確で具体的な回答を生み出す上で仕組みです。効果的なプロンプトエンジニアリングにより、生成AIツールはコードの生成、マーケティングコピーの作成、画像の生成、テキストの分析と統合などの生成タスクをより効果的に実行します。
プロンプトエンジニアリングは論理とコーディングの原理を組み合わせています。また、ある程度の人間の創造性も必要です。プロンプトエンジニアリングの要件は技術によって異なる場合がありますが、ほとんどの生成AIツールは自然言語プロンプトまたはクエリを処理できます。言い換えれば、プロンプトエンジニアリングとは、回答の準備方法を導く具体的な指示を添えて質問するようなものです。
プロンプトエンジニアリングの基本
プロンプトエンジニアリングの基本を理解するためには、生成AIと大規模言語モデル(LLM)について復習することが重要です。
生成AIは、テキスト、コード、画像、音楽、またはビデオなどのコンテンツを生成できる人工知能のタイプを指します。大規模言語モデルは、生成AIが出力を生成することを可能にする基盤技術の一部です。
LLMはAIにおける自然言語の基盤です。解析、合成、翻訳、認識、生成など、あらゆるテキスト関連のアプリケーションを可能にします。大規模言語モデルは、多くの場合テキストなどの大量の情報に基づいて訓練され、そのテキストからパターンを学習することで、クエリに対して予測や出力を生成できるようになります。
LLMの予測的側面を理解することは、プロンプトエンジニアリングがどのように機能するかを理解する上で重要です。
- 入力(プロンプト)に値を入力します。これには出力インジケータが含まれる場合があり、モデルに生成される応答のフォーマットを指示します。
- このモデルは、訓練データから学習した推論とパターン(数値の形をとる)を用いて「思考」します。このプロセスでは、パターンを認識しようとするため、生成される結果は予測と呼ばれます。
- 次に、出力、つまり応答を生成します。
基本的なレベルでは、効果的なプロンプトには指示や質問が含まれ、コンテキスト、インプット、または例によって補強されます。
以下に、プロンプトエンジニアリングの基本的な例を示します。
入力:
Plants are
このプロンプトでAIに文を完成させてほしいですが、具体性に欠けています。OpenAIのChatGPT 3.5モデルに入力すると、次の出力が生成されます。

そこで、省略記号を追加することで明確化を試みます。
入力:
植物は…
省略記号だけで、文を完成させる出力が得られます。しかし、モデルは過剰に出力しています。

植物に関する全ての百科事典的な項目を探しているわけではないので、指示を明確にします。
入力:
文章を完成させてください:
植物は
すると、モデルは次のような出力を生成します。

指示をさらに具体化できます。

この反復的な命令チューニングはプロンプトエンジニアリングの基本原理です。モデルによって異なり、必要なタスクに応じてさまざまな形式をとることができます。
なぜプロンプトエンジニアリングが重要なのでしょうか?
プロンプトエンジニアリングは、生成AIの分野において重要な実践です。これは、AI駆動のツールを改善し、その結果としてユーザーエクスペリエンスやユーザーがモデルから得る成果を向上させるためです。
ゼロショットトレーニングは、モデルのトレーニングデータの一部ではないプロンプトを入力して特定の結果を生成するエンジニアリング技術の1つです。
開発者は、GPT-3のような大規模な言語モデルを調整するために、このようなプロンプトエンジニアリングを試みるかもしれません。そうすることで、顧客サービスチャットボットとしての応用を改善したり、契約書やマーケティングメールなど、業界特有のコンテンツ生成能力を向上させたりすることができます。
実際の例でプロンプトエンジニアリングの重要性を見てみましょう。
あるeコマース企業が、顧客サービスを改善するために生成AIツールを組み込んだアプリケーションを構築することを選択しました。同社は、AIアシスタントに顧客の感情を評価し、顧客ファイルや顧客とのやり取りの記録を確認し、顧客の問い合わせに関連する選択肢を提供する能力を求めています。これらの特定のタスクを、同社が販売する製品やサービスの文脈において具体的に実行できるように、プロンプトエンジニアリングの支援を受けてツールを微調整する必要があります。このシナリオでは、プロンプトエンジニアリングにより、アプリケーション内のAIアシスタントが同社とユーザーの両方に有用であることが保証されます。同社は、顧客の体験の安全性を確保し、ツールの誤用を防ぐために、顧客のインプット前にプロンプトを含めることも検討するかもしれません。例えば、良好なユーザーエクスペリエンスを確保するために設計されたプロンプトは「eコマースまたはショッピング体験に関連する質問にのみ回答してください」のようになります。電子商取引やショッピングに関係のない質問については、「その質問には答えられません。代わりにカスタマーサポートに連絡することを検討してください。」と返信します。
プロンプトエンジニアリングの種類
あらゆる種類のタスクや望ましい出力に対して、関連するプロンプトエンジニアリングのタイプがあります。以下はいくつかのプロンプトエンジニアリング技術の種類です。
- 指示型プロンプト:上記の例と同様に、このタイプのプロンプト設計では、設計者は望ましい出力に対する明確な指示を含むプロンプトを作成する必要があります。
- 少数例プロンプト:ゼロショットプロンプトはモデルに求められる回答の例を一切提示しないプロンプトの一種ですが、少数例プロンプトでは、モデルにどのように応答してほしいかを示すために、いくつかの例を入力します。
- 思考連鎖プロンプト:数学の問題に役立つこの手法は、プロンプトに推論の手順を示すことで、モデルが出力で推論過程を示すように構成されています。
- 生成された知識プロンプト:この手法は、事実とそれに関連する情報を与えることで大規模言語モデルを微調整し、まず知識に基づく出力を生成できるようにします。次に、二次的な入力が、モデルに対して、最初の出力で生成した知識と併せて、事実の正確性について促します。それに対し、モデルはクエリに対して正確な応答を出力する必要があります。これは、大規模な言語モデルの精度を向上させるために用いられる手法です。
- 思考ツリー型プロンプト:この手法は、思考の連鎖プロンプトを一般化し、自然言語による中間ステップ、つまり思考をモデルに入力することで、より複雑な問題解決を可能にします。思考ツリーによるプロンプト機能により、言語モデルは中間的な思考が問題解決に及ぼす影響を自己評価する能力を持つようになります。言い換えれば、それはモデルが意図的な推論プロセスを経ることを促す、プロンプトエンジニアリングの手法です。
プロンプトエンジニアリング技術はこの他にもあります。生成AIと大規模言語モデルの研究が続くにつれ、さまざまな新しいプロンプトエンジニアリング技術が登場するでしょう。
プロンプトエンジニアリングの課題と限界
プロンプトエンジニアリングは生成AI技術を最大限に活用するのに役立ちますが、敵対的プロンプト、事実性、バイアスに関連する課題と制限もあります。
敵対的プロンプトは、大規模言語モデルから「敵対的な振る舞い」を引き出すプロンプトインジェクションの一種で、ユーザーに重要な安全性の問題を提示します。これらのタイプのプロンプトは出力を乗っ取り、モデルの精度に影響を与える可能性があります。
さまざまな種類の敵対的プロンプティングが記録されており、プロンプトリーキングやジェイルブレイキングなどが含まれます。これらの技術は、大規模言語モデルを本来意図されていないことを実行させようとするものです。このような行為はしばしば有害です。つまり、プロンプトエンジニアリングは大規模言語モデルの改善に役立つ可能性がある一方で、悪意のあるプロンプトエンジニアリングは逆効果をもたらす可能性があります。
大規模言語モデルによって生成される出力の事実性と偏りは、プロンプトエンジニアリングの限界も示唆しています。大規模言語モデルは、訓練されたデータの質に依存しますが、そのデータにはモデルが学習するバイアスが本質的に含まれています。その結果、たとえ効果的な指示を受けたとしても、このモデルは偏った回答や、非常に説得力があるように見えるものの、正確性や事実性を全く欠いた回答を生成する可能性があります。これらのエラーはハルシネーションとも呼ばれます。入力文字列にコンテキストや知識を追加するなど、プロンプトエンジニアリングをさらに改良すれば出力が改善する可能性はありますが、そのためにはまず、モデルが生成した元の出力が間違っていたことをユーザーが認識する必要があります。
プロンプトエンジニアリングの可能性を最大限に活用するためには、ユーザーは判断力を用い、検証技術やプロセスを適用する必要があります。
人間レベルでは、プロンプトエンジニアリングは労働市場を変革することになるでしょう。McKinseyによると、生成AIは従業員の時間の最大70%を占める作業タスクを自動化する可能性があります1。プロンプトエンジニアリングはすでに一部の分野で需要の高い専門スキルとなっていますが、ほとんどの従業員にとって基本的な要件になると考えられています。産業界や組織は、従業員のスキルアップという課題に直面するでしょう。
効果的なプロンプトエンジニアリングのための戦略
プロンプトエンジニアリングはコーディング、論理、多少の技巧を組み合わせたものです。効果的なプロンプトエンジニアリングの戦略は、これらすべてに依存すべきです。以下の戦略を検討してください。
最初はシンプルに
シンプルに始めましょう。プロンプトの設計は反復的なプロセスであるため、まずは小規模なものから始めることで、モデルがどのように反応するか、そして最適な結果を得るためにプロンプトをどのように形作るかを理解するのに役立ちます。
具体的に
入力レベルでの具体性は出力レベルでの精度を保証します。指示には「完成」、「要約」、「翻訳」などのアクティブなコマンドを使用し、「このテキストをフランス語・カナダ人に翻訳してください」や「メアリー・シェリーのフランケンシュタインを100語以下で要約してください」など、モデルの解釈の境界を明確にする修飾子を追加します。
プロンプトエンジニアリングの基本に関する例を考えてみましょう。プロンプトを洗練させていく中で、モデルが文を完成させる際に、植物についてどのようなことを教えてくれるかを具体的に指定していきます。
モデルに(何をすべきかではなく)何をしてほしいかを伝える
ネガティブではなく、ポジティブに表現してください。つまり、何をしてはいけないかを指示すべきではないということです。繰り返しになりますが、能動態の指示を用い、望ましい結果を具体的に示してください。
簡潔に
具体的にすることは重要ですが、その具体性と簡潔さ、正確さのバランスを取ることが重要です。たとえ具体的であっても、長いプロンプトはモデルを混乱させてしまうことがよくあります。
大規模な言語モデルに指示を与える際には、タスクを実行するための指示に対して、自分がどのように応答するかを考えてみてください。何が求められているのかはっきり分かりますか?指示が長すぎたり、冗長すぎたりして、内容を見失ってしまったことはありませんか?この考え方と、大規模言語モデルの仕組みに関する理解を組み合わせることで、最適な結果を得るためのプロンプトエンジニアリングを行うことができます。
Elasticを用いたプロンプトエンジニアリング
Elasticsearch Relevance Engine(ESRE)は、人工知能搭載の検索アプリケーション向けに構築されており、自然言語処理(NLP)と生成AIを組み合わせて顧客の検索体験を向上させます。
Elasticsearch Relevance Engineを搭載したElastic SecurityおよびObservability向けAI Assistantは、アラートの調査、インシデント対応、クエリの生成や変換において、チームを支援します。Elastic AI Assistantsは、チームのサイバーセキュリティやオブザーバビリティの運用を強化するための推奨プロンプトを提供します。

次にすべきこと
次にすべきこと 準備ができたら、ビジネスにデータを取り入れるための4つの方法をご紹介します。
- 無料トライアルを開始して、Elasticがビジネスにどのように役立つのかを実感してください。
- ソリューションのツアーで、Elasticsearchプラットフォームの仕組みと、ソリューションがニーズにフィットする仕組みをご確認ください。
- Elasticsearchクラスターのセットアップ方法を学習し、45分間のウェビナーでデータの収集とインジェストを開始しましょう。
- 興味を持ってくれそうな人とこの記事を共有してください。メール、Twitter、Facebookで共有しましょう。
脚注
Chui, Michael. “Economic potential of generative AI: The next productivity frontier,” McKinsey, 2023年6月14日, https://www.mckinsey.com/capabilities/mckinsey-digital/our-insights/the-economic-potential-of-generative-ai-the-next-productivity-frontier#/