🐡

Prompt Engineeringとは

2023/08/25に公開

"Prompt Engineering"とは、AI(とくに自然言語処理AI)に対する問いかけ(プロンプト)を工夫することで、よりよい結果を得るためのテクニックを指します。
AIに対する質問や指示の仕方を最適化することで、AIのパフォーマンスを向上させるのが目的です。
これを理解するためには、まずAIの動作原理を簡単に理解する必要があります。
AIは大量のテキストデータから学習し、質問や要求に対してもっとも適切な回答を提供しようとします。
しかし、AIにとって「最適な回答」はその質問や要求の仕方によって変わります。

ここでは、そのテクニックをいくつか紹介します。

Few-Shot Learning

「Few-Shot Learning」は、少数の例(ショット)を用いて新しいタスクを学習するAIの能力を指します。
これは、人間が新しいことを学ぶときと似ています。
たとえば、新しいボードゲームを学ぶとき、ルールを数回説明されれば大体理解できますよね。
AIも同様に、少数の例を用いて新しいタスクを学習する能力があります。これがFew-Shot Learningです。

Few-Shot Learningの例

事前に例文のフォーマットを与えることで、その形に沿った回答をAIから得られます。

プロンプト:

「ゲッツ」はダンディ坂野さんのお決まりのジョークです。
「ゲッツ」の例文は「ダンディ坂野はゲッツと言ってみんなを笑わせた」。
「トゥース!!」は春日さんのお決まりのジョークです。
例文を考えてください。

AI:

「春日は独特のユーモラスな表情を浮かべて、"トゥース!!"と言った。周囲の人々はすぐに爆笑した」

例文がない場合はかなり自由な回答が得られると思いますので、試してみてください。

Chain-of-Thought

「Chain-of-Thought」はAIが問題を解決するための思考の流れを追跡し、それを利用する能力を指します。
これは、数学の問題を解くときに解答の過程を書き出すことに似ています。
各ステップを明確に示すことで、どのように最終的な答えに至ったかを理解しやすくします。
AIの場合も、どのように結論に至ったかの過程を追うことができると、その答えの信頼性や理解が深まります。

Chain-of-Thoughtの例

中間的な推論過程を提示することで正しい結果を導きます。
最後の質問だけをAIに与えた際には誤った回答をすることがありました。

プロンプト:

Q: あなたは地球から出発して、火星を訪れ、それから木星に行く旅行の計画を立てています。火星までは平均で225日、火星から木星までは平均で800日かかります。
出発から帰国までの合計旅行日数を計算してください。休息日は考慮せず、行きと帰りの移動日数は同じとします。
A: 火星までの行きと帰りは(225*2)450日、火星から木星までの行きと帰りは(800*2)1600日です。全体で2050日かかります。
Q: あなたは地球から出発して、月を訪れ、それから火星に行く旅行の計画を立てています。月までは平均で3日、月から火星までは平均で500日かかります。
出発から帰国までの合計旅行日数を計算してください。休息日は考慮せず、行きと帰りの移動日数は同じとします。
A: 月までの行きと帰りは(3*2)6日、月から火星までの行きと帰りは(500*2)1000日です。全体で1006日かかります。
Q: あなたは地球から出発して、月を訪れ、それから火星に行く旅行の計画を立てています。月までは平均で4日、月から火星までは平均で200日かかります。
出発から帰国までの合計旅行日数を計算してください。休息日は考慮せず、行きと帰りの移動日数は同じとします。
A:

AI:

月までの行きと帰りは(4*2)8日、月から火星までの行きと帰りは(200*2)400日です。全体で408日かかります。

Zero-shot COT Prompting

上記のように推論過程を明示しなくても、「段階的に記述してみましょう」と指示することで同様の効果が得られます。

Zero-shot COT Promptingの例

プロンプト:

Q: あなたは地球から出発して、月を訪れ、それから火星に行く旅行の計画を立てています。
月までは平均で4日、月から火星までは平均で200日かかります。
出発から帰国までの合計旅行日数を計算してください。休息日は考慮せず、行きと帰りの移動日数は同じとします。
段階的に記述してみましょう。

AI:

もちろんです。旅行の計画を段階的に計算してみましょう。

  1. 地球から月への移動:
    地球から月への移動には平均で4日かかります。

  2. 月から火星への移動:
    月から火星への移動には平均で200日かかります。

  3. 帰国の移動:
    火星から月への移動にも200日かかるため、帰国の移動も同じく200日かかります。

計算すると、次のようになります:

  • 行きの移動日数: 4日 (地球から月) + 200日 (月から火星)
  • 帰りの移動日数: 200日 (火星から月) + 4日 (月から地球)

行きと帰りの移動日数は同じですので、行きと帰りの合計移動日数は次の通りです:

4日 (地球から月) + 200日 (月から火星) + 200日 (火星から月) + 4日 (月から地球) = 408日

したがって、出発から帰国までの合計旅行日数は408日となります。

場合によってはプロンプトを節約するよりも回答が長くなることもあります。
推論過程が明らかな場合は、先に明示する方が効率的かもしれません。

ReAct(言語モデルにおける推論と行動の相乗効果)

「ReAct」はReasoning(推論)とActing(行動)の造語です。
ReActは、私たちが日常生活で次の行動を決める際の手法に似ています。
たとえば、分からないことがあればGoogleで検索します。
同じことを大規模言語モデルに動的に行わせることが可能です。

ReActの例

たとえば、大規模言語モデルに「株式会社ソルクシーズの設立年」を問い合わせても、学習データに含まれていないため回答できません。
しかし、Google検索をActingとして指定すると、AIがその行動を選択し、呼び出し元のプログラムが当社の沿革から情報を取得します。
その結果を用いて、「1981年」を回答できます。

ReAct

まとめ

こちらに紹介した以外にも多くのテクニックがあります。

下記を参考に自身で実行してみてください。

参考:Prompt Engineering Guide

株式会社ソルクシーズ(事業戦略室)

Discussion