💬

【初学者向け】プロンプトエンジニアリングの基本

に公開

はじめに

ChatGPTやGeminiなど、
LLMを活用するためには、プロンプトエンジニアリングが欠かせません。

LLMの挙動は予測できないため、
基本的にはトライアンドエラーになりますが、
そのなかでもテクニックは存在するため、ここで紹介します。

O'Reillyの「直感 LLM」で学んだことが中心になります。(良著でした)

https://www.oreilly.co.jp/books/9784814401154/

具体性

なにを達成したいのか、明確に記述します。

「商品の説明を書いてください」と指示するのではなく、
「商品の説明を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の仕組みも書きました。

ぜひ読んでいただきたいです!

Accenture Japan (有志)

Discussion