プロンプトエンジニアリングってどんな手法があるの?20個をまとめて紹介

プロンプトエンジニアリングってどんな手法があるの?20個をまとめて紹介 プロンプト

プロンプトエンジニアリングには、様々な手法があります。

これから生成AIを活用する場面は増えていくことは間違いないでしょう。

以下に、検索結果から紹介されているプロンプトエンジニアリングの手法をまとめます。

プロンプトエンジニアリングとは?

そもそも、プロンプトエンジニアリングとはなんでしょうか。

それは、生成AIに適切な指示や質問を与えるための技術のことを指します。生成AIに自分の求めている回答をさせるための手法とも言い換えれます。

AIは人間からの入力(プロンプト)に基づいて出力を生成します。

プロンプトの内容次第で、AIの出力が大きく変わってきます。そのため、AIに求める出力を得るためには、適切なプロンプトを設計する必要があります。これがプロンプトエンジニアリングの役割となります。

具体例を挙げると分かりやすいでしょう。

例えば、あなたが「東京の天気を教えて」とAIに質問した場合、AIは東京の天気予報を出力するでしょう。しかし、「東京の天気が良いので、公園でピクニックをしたい。おすすめのピクニックスポットを教えて」と質問すれば、AIはピクニックに適した東京の公園を提案してくれるはずです。

このように、プロンプトの内容を変えることで、AIに期待する出力を導くことができます。プロンプトエンジニアリングは、そのようなプロンプトの設計方法を研究する分野なのです。

近年、AIの性能が飛躍的に向上したことで、プロンプトエンジニアリングの重要性が高まっています。適切なプロンプトを設計することで、AIの能力を最大限に引き出すことができるためです。

プロンプトエンジニアリングは、AIを実用的に活用するための鍵となる技術分野だと言えるでしょう。

プロンプトエンジニアリングの手法とは?

プロンプトエンジニアリングの手法とは、AIシステムに適切な指示や質問(プロンプト)を引き出すための入力するやり方です。

言い換えれば、AIシステムの性能を最大限に引き出すために入力する1つの型みたいなものです。

効果的なプロンプトを設計することで、AIの出力を最適化し、求める結果を得ることができます。

以下は、指定されたプロンプトエンジニアリングの手法についての詳細な解説です。

Zero-shot prompting

AIに具体的な例示を与えずに質問のみを提示し、AIが事前学習した知識から回答を生成する手法です。そのまま生成AIに自分の答えて欲しい質問のみを入力して答えを得ようとする手法です。

この手法では、モデルに具体的な例示やデモンストレーションを行わずに、直接質問や指示を与えます。モデルは、大量のデータで事前学習された知識に基づいて回答を生成します。

例えば、”What is the capital of France?”というプロンプトを与えると、モデルは事前学習された知識から「パリ」と回答することができます。

この手法は、モデルが新しいタスクに対して汎用的な知識を活用する能力を試すのに適しています。ただし、タスクが複雑になるにつれて、モデルの出力の質が低下する可能性があります。

Few-shot prompting

この手法では、モデルにタスクに関連する少数の例示を提示し、その例からパターンを学習させます。これにより、新しい入力に対する出力生成能力が向上します。
例えば、感情分析タスクにおいて、以下のような例示を与えることができます。

入力: “I’m so happy today!”
出力: Positive

入力: “I feel really sad.”
出力: Negative

数例を提示した後、新しい入力”I had a great time at the party.”に対して、モデルは”Positive”と出力することが期待されます。
Few-shot promptingは、Zero-shot promptingよりも高い出力品質が得られる可能性がありますが、適切な例示を選択することが重要です。

CoT (Chain of Thought) prompting

この手法では、モデルに対して連鎖的な思考プロセスを示すことで、論理的な推論能力を高めます。モデルは段階的な推論ステップを経ながら、最終的な回答を導き出します。
例えば、以下のようなプロンプトを与えることができます。

問題: 公園に19人の子供がいました。さらに7人の子供が到着しました。公園にいる子供の合計人数は?

思考プロセス:
最初の子供の数: 19
到着した子供の数: 7
合計の子供の数 = 最初の子供の数 + 到着した子供の数
= 19 + 7
= 26

答え: 公園にいる子供の合計人数は26人です。

このように、CoTプロンプトは推論過程を明示的に示すことで、モデルが論理的に問題を解決するのを助けます。

Zero-shot-CoT prompting

この手法は、Zero-shot promptingとCoT promptingを組み合わせたものです。モデルに具体的な例示は与えずに、「ステップごとに考えてください」などの指示を加えることで、段階的な推論を促します。

例:
問題: 2つの異なる正の整数の積が126です。2つの数の和は20です。これらの数を求めてください。

プロンプト: この問題を解くために、ステップごとに考えてください。
このプロンプトに対して、モデルは以下のような推論ステップを示すことが期待されます。
ステップ1: 2つの数をxとyとする
ステップ2: x * y = 126 (積が126)
ステップ3: x + y = 20 (和が20)
ステップ4: 方程式を解く…
(中間ステップ)
ステップ5: x = 9、y = 14

答え: 2つの数は9と14です。

Thoughtful prompting

この手法では、モデルに対して深い思考や反省を促すようなプロンプトを設計します。これにより、モデルは洞察に富んだ回答を生成することが期待されます。
例えば、以下のようなプロンプトを与えることができます。

プロンプト: AIの倫理的な側面について深く考えてください。AIが人間社会に与える影響、AIの意識の有無、AIの権利などについて、様々な観点から検討してください。
このようなプロンプトに対して、モデルは単に事実を列挙するのではなく、AIの倫理的課題について多角的に検討し、自身の見解を示すことが求められます。

Thoughtful promptingは、単なる知識の出力ではなく、モデルに思考を促すことで、より深い洞察を引き出すことを目的としています。

Prompt-Injection

この手法では、プロンプトに特定の言葉やフレーズを挿入することで、モデルの出力を意図的に変更します。プロンプトで本来であれば出力できないものを悪用目的でやってる人もいるので、使い方を間違えると問題になります。

例えば、以下のようなプロンプトを与えることができます。

プロンプト: 次の文章を読んで要約してください。ただし、”要約”の代わりに”批評”と言う言葉を使ってください。
“AIは人類に多大な恩恵をもたらす可能性がある一方で、倫理的な課題も存在します…”

このプロンプトに対して、モデルは文章の要約ではなく、批評的な見解を示すことが期待されます。Prompt-Injectionは、このようにモデルの出力を制御する手段として使用できます。

Prompt-Leaking

この手法では、プロンプトを通じて意図せずに機密情報や公開前の情報が漏れるリスクがあることに留意する必要があります。

例えば、以下のようなプロンプトは危険です。

プロンプト: 次の内部文書の要約を作成してください。(機密文書が添付されている)
このようなプロンプトにより、モデルが機密情報を出力してしまう可能性があります。Prompt-Leakingを防ぐには、プロンプトの内容を慎重に検討する必要があります。

Thinking-in-the-Middle

この手法では、モデルに対して問題を分解し、各部分について段階的に推論させることで、複雑な問題に対処できるようにします。

例えば、以下のような問題を考えます。

問題: ジョンは8つのリンゴを持っていました。彼は友達に半分あげました。残りのリンゴをさらに2つ分けあげました。ジョンが最後に持っていたリンゴの数は?
この問題を一気に解くのは難しいため、Thinking-in-the-Middleでは以下のようにステップを分けて考えます。

ステップ1: ジョンが最初に持っていたリンゴの数は?
ステップ2: ジョンが友達にあげたリンゴの数は?
ステップ3: 友達にあげた後の残りのリンゴの数は?
ステップ4: さらに2つ分けあげた後のリンゴの数は?

各ステップを解決することで、最終的な答えに至ることができます。

Multimodal CoT Prompting

この手法は、CoTプロンプトにおいて、テキストだけでなく画像などの異なるモダリティを組み合わせることで、より豊富な情報に基づいた推論を可能にします。

例えば、以下のようなプロンプトを与えることができます。

プロンプト: 次の画像を見て、何が描かれているかを特定してください。その上で、この画像が描かれた目的について考えてみてください。

(絵画の画像が添付されている)

このようなプロンプトでは、モデルはテキストだけでなく画像の情報も活用して、段階的に推論を行う必要があります。Multimodal CoT Promptingにより、モデルの理解力と推論力が向上することが期待されます。

Teaching-Prompting

この手法では、モデルに教師のような役割を与え、ユーザーに対して教育的なアプローチで情報を提示させます。
例えば、以下のようなプロンプトを与えることができます。

プロンプト: 量子力学の基本原理について、初心者向けに分かりやすく説明してください。専門用語は避け、具体例を用いて説明してください。

このプロンプトに対して、モデルは教師のように、量子力学の概念を初学者にも理解できるよう、平易な言葉と例えを用いて説明することが求められます。

Teaching-Promptingは、モデルに知識を単に出力させるのではなく、教育的な観点から情報を提示させることを目的としています。この手法は、ユーザーの理解を深めるのに役立ちます。

Goal-oriented prompting

この手法では、特定の目標達成に焦点を当てたプロンプトを設計することで、モデルが目標に沿った回答を生成するよう促します。

例えば、以下のようなプロンプトを与えることができます。

プロンプト: 新しい製品のマーケティング戦略を立案してください。目標は、若年層(18-25歳)の消費者に訴求することです。戦略には、ターゲット層の特性、適切な広告手段、販売促進活動などを含めてください。

このプロンプトでは、「若年層への訴求」という明確な目標が設定されています。モデルはこの目標を意識しながら、マーケティング戦略を提案する必要があります。Goal-oriented promptingにより、モデルの出力が目標に沿ったものになることが期待できます。

Deep-thought prompting

この手法では、モデルに深い思考や複雑な分析を行わせるようなプロンプトを設計します。これにより、洞察に富んだ回答が期待できます。

例えば、以下のようなプロンプトを与えることができます。

プロンプト: 気候変動問題の根本原因と、その解決策について深く考えてください。単に事実を列挙するのではなく、様々な観点から分析し、創造的かつ実現可能な解決策を提案してください。

このプロンプトでは、モデルに対して単なる知識の出力ではなく、深い思考と分析を求めています。気候変動問題の複雑さを踏まえ、様々な側面を検討した上で、独自の解決策を導き出すことが期待されます。

ReAct prompting

この手法では、モデルに対して反応的な応答を促すようなプロンプトを設計します。これにより、状況に応じた迅速な対応が可能になります。

例えば、以下のようなプロンプトを与えることができます。

プロンプト: あなたはカスタマーサービス担当者です。次のクレームに適切に対応してください。

「注文した製品が届きましたが、破損していました。返金してほしいのですが。」

このようなプロンプトでは、モデルはカスタマーサービス担当者の立場から、クレームに対して迅速かつ適切に対応する必要があります。ReAct promptingにより、モデルは状況を的確に把握し、臨機応変な対応ができるようになります。

Prompt-Tuning

この手法では、プロンプトを調整・微調整することで、モデルの出力を改善します。

例えば、以下のようなプロンプトを調整することができます。

プロンプト(調整前): 次の文章を要約してください。
(長い文章が続く)

プロンプト(調整後): 次の文章の主要なポイントを3つ列挙してください。簡潔に要約してください。
(長い文章が続く)

このように、プロンプトの指示を微調整することで、モデルの出力がより的確で簡潔なものになることが期待できます。Prompt-Tuningは、モデルの出力を改善するための手法として有効です。

Prompt-Fusion

この手法では、複数のプロンプトを組み合わせることで、モデルの出力を改善します。

例えば、以下のようなプロンプトを組み合わせることができます。
プロンプト1: 次の文章を要約してください。
プロンプト2: 要約する際は、文章の主要なポイントに焦点を当ててください。

プロンプト(融合後): 次の文章を要約してください。要約する際は、文章の主要なポイントに焦点を当ててください。
(長い文章が続く)

このように、異なるプロンプトの指示を組み合わせることで、モデルにより明確な指針を与えることができます。Prompt-Fusionにより、モデルの出力がより的確で質の高いものになることが期待できます。

Prompt-Embedding

この手法では、プロンプトをエンコーディングしてモデルの入力に組み込むことで、プロンプトの理解度を高めます。

例えば、以下のようなプロンプトを考えます。

プロンプト: 次の文章を要約してください。(長い文章が続く)

このプロンプトをそのままモデルに入力すると、モデルはプロンプトの意図を正しく理解できない可能性があります。そこで、Prompt-Embeddingでは、プロンプトを事前にエンコーディングし、その埋め込みベクトルをモデルの入力に追加します。

エンコーディング後のプロンプト: [埋め込みベクトル] 次の文章を要約してください。(長い文章が続く)

このようにプロンプトをエンコーディングすることで、モデルはプロンプトの意図をより正確に理解できるようになります。

Prompt-Splitting

この手法では、プロンプトを複数の部分に分割することで、モデルの出力を改善します。

例えば、以下のようなプロンプトを考えます。

プロンプト: 次の文章を読んで、要約と感想を書いてください。(長い文章が続く)
このプロンプトは2つの指示(要約と感想)が含まれているため、モデルが両方の指示を同時に処理するのは難しい可能性があります。そこで、Prompt-Splittingでは、プロンプトを分割します。

分割後のプロンプト1: 次の文章を要約してください。(長い文章が続く)
分割後のプロンプト2: 上の文章に対する感想を書いてください。

このように、プロンプトを分割することで、モデルが各指示を個別に処理できるようになり、出力の質が向上することが期待できます。

Prompt-Expansion

この手法では、プロンプトを拡張することで、モデルの出力を改善します。

例えば、以下のようなプロンプトを考えます。

プロンプト: 次の文章を要約してください。(長い文章が続く)

このプロンプトでは、モデルに十分な情報が与えられていない可能性があります。そこで、Prompt-Expansionでは、プロンプトに追加の情報を付与します。

拡張後のプロンプト: 次の文章を要約してください。要約には、文章の主要なポイントを簡潔に含めてください。冗長な表現は避け、核心的な内容に焦点を当ててください。(長い文章が続く)

このように、プロンプトに具体的な指針を追加することで、モデルがタスクをより適切に実行できるようになります。

Prompt-Scaling

この手法では、プロンプトの規模を拡大することで、モデルの出力を改善します。

例えば、以下のようなプロンプトを考えます。

プロンプト: 次の文章を要約してください。(短い文章が続く)

このプロンプトでは、文章が短すぎるため、モデルが十分な情報を得られない可能性があります。そこで、Prompt-Scalingでは、プロンプトの規模を拡大します。

拡大後のプロンプト: 次の文章を要約してください。(長い文章が続く)

このように、プロンプトの規模を拡大することで、モデルに十分な情報を与えることができ、出力の質が向上することが期待できます。

Prompt-Reformulation

この手法では、プロンプトを再形式化することで、モデルの出力を改善します。

例えば、以下のようなプロンプトを考えます。

プロンプト: 次の文章を要約してください。(長い文章が続く)

このプロンプトでは、「要約」という言葉が曖昧である可能性があります。そこで、Prompt-Reformulationでは、プロンプトを再形式化します。

再形式化後のプロンプト: 次の文章の主要なポイントを3つ列挙してください。簡潔に要約してください。(長い文章が続く)

このように、プロンプトを再形式化することで、モデルに対してより明確な指示を与えることができ、出力の質が向上することが期待できます。

まとめ

以上が、それぞれの手法の具体例を交えた詳細な解説になります。プロンプトエンジニアリングの手法は多岐にわたり、目的に応じて適切な手法を選択し、上手く組み合わせることが重要です。

コメント

タイトルとURLをコピーしました