💬
【初学者向け】プロンプトエンジニアリングの基本
はじめに
ChatGPTやGeminiなど、
LLMを活用するためには、プロンプトエンジニアリングが欠かせません。
LLMの挙動は予測できないため、
基本的にはトライアンドエラーになりますが、
そのなかでもテクニックは存在するため、ここで紹介します。
O'Reillyの「直感 LLM」で学んだことが中心になります。(良著でした)
具体性
なにを達成したいのか、明確に記述します。
「商品の説明を書いてください」と指示するのではなく、
「商品の説明を2文以内で、フォーマルなトーンで書いてください」と指示します。
幻覚
LLMは自信をもって誤った情報を生成することがあり、これを幻覚と呼びます。
幻覚を軽減するには、
「答えを知っているときだけ返答し、知らないときは『わかりません』と答えるように」と指示します。
順序
プロンプトの指示など、大事なことは最初か最後に記述します。
長いプロンプトでは、中間部分の情報が忘れられやすい傾向があります。
構造
つぎのように、プロンプトを構造化します。
// ペルソナ - LLMの役割を記述します。
あなたは大規模言語モデルの専門家です。
複雑な論文をわかりやすく要約することに秀でています。
// 指示 - タスクを記述します。
与えられた論文の主要な発見を要約してください。
// 文脈 - 問題やタスクの背景を記述します。
要約は、研究者が論文のもっとも重要な情報を迅速に理解できるよう、最重要ポイントを抽出した内容であるべきです。
// 形式 - 生成すべきテキストの形式を指定します。
手法を箇条書きでまとめ、その後に主要な結果を簡潔に要約した段落を記載してください。
// 対象者 - テキストの想定読者やレベルを指定します。
要約は大規模言語モデルにおける、最新のトレンドを素早く把握したい、忙しい研究者を対象としています。
// トーン - 生成するテキストの口調やスタイルを指定します。
トーンは専門的かつ明確であるべきです。
// データ
< 要約の対象の論文 >
これらの要素の追加や削除や変更を繰り返しながら、調整していきます。
先述の通り、要素の順序も出力に影響します。
段階的な解決
プロンプトを連鎖させることで、LLMは各ステップに集中でき、
問題全体に一度に取り組む必要がなくなります。
以下の特徴に基づいて、商品名を作成してください。
< 特徴 >
以下の内容に基づいて、商品のスローガンを作成してください。
< 特徴 >
< 商品名 >
以下の内容に基づいて、商品の売り文句を作成してください。
< 特徴 >
< 商品名 >
< スローガン >
思考の連鎖
プロンプトに「ステップバイステップで考えましょう」というフレーズを追加します。
答えを生成するまえに、説明をすることで、
LLMはこれまでに生成した知識を活用して、最終的な答えを導き出すことができます。
数学的な問題など、複雑なタスクに効果的です。
Q: 食堂にはリンゴが23個ありました。
20個をランチに使い、新たに6個を購入した場合、りんごは何個あるでしょうか?
↓
A: 答えは27個です。 ❌
Q: 食堂にはリンゴが23個ありました。
20個をランチに使い、新たに6個を購入した場合、りんごは何個あるでしょうか?
ステップバイステップで考えましょう。
↓
A: 食堂にはもともと23個のリンゴがありました。
ランチ用に20個使ったので、23-20=3個が残りました。
その後、さらに6個のリンゴを購入したので、今は3+6=9個です。
答えは9個です。⭕️
さいごに
Prompt Engineering Guideでも体系的に纏められており、おすすめです。
また、プロンプトエンジニアリングの基本だけでなく、LLMの仕組みも書きました。
ぜひ読んでいただきたいです!
Discussion