【実例付】Chat-GPTの使い倒し方 05[ プロンプト入力26の原則]を読み解く④魔法の呪文!
アブダビのモハメド・ビン・ザイード人工知能大学 (MBZUAI) の研究者グループが発表した、大規模言語モデル(LLM)とのインタラクションを最適化するための「26の原則」。その①~⑧まで補足説明をしてきました。
今回は⑨、⑫の説明です。有名なプロンプトの「呪文」も含みます。
⑨明確なタスク指示:「あなたのタスクは」と指示→◎「どんな役回りで、何をしてほしいのか」最初に伝えよう
僕たちはChat-GPTを使う時に、それが質問なのか、雑談なのかを深く考えずに、プロンプトを書く場合が結構あります。
例えば、
僕
「最近、新NISAとかよく耳にしてね。でも、友達に聞いてもやってないって、もうすぐ定年だし、資産運用とか考えないと思うんだよね。」
という感じでプロンプトを打ち込むと、
Chat-GPTは
・新NISAの仕組みを教えたらいいの?
・資産運用のアドバイスをしたらいいの?
・定年後のお金について一般論を答えればいいの?
・雑談に付き合って、楽しい会話をすればいいの?
と、何をすればいいかわからなくなります。
「最初に書く」がコツ
ですので、プロンプト入力する時、
・僕は君に何かを調べてほしい:「リサーチャーとして、回答して」
・質問したいんだ:「知識者として、質問を理解して回答して」
・意見を聞きたいんだ:「アドバイスザーとして、アドバイスして」
といった具合に、Chat-GPTに「どんな役回りで、何をしてほしい」のかを最初に書くと、その次に入力するプロンプトの理解の正確度があがり、解答も期待に近いものが返ってきやすいです。
対人コミュニケーションでもありがちなことですよね。
「あのさぁ、それ質問してるの?それとも単なる独り言?」って言われたこと……僕はあります(笑)。
コツは、「最初に書く」ことです。初対面でも、まずは自己紹介ですよね。AIと対話する時も、それは同じです。
その次にある、
⑩ペナルティの提示:「ペナルティあり」と伝える
⑪自然言語による回答指示:「自然言語で回答して」と指示
は、どちらも、使う必要はないと僕は思いますので、解説から省きます。
⑫先導的な言葉の使用「ステップバイステップで考えて」と指示→◎プロンプトの「呪文」としても超有名
これは、プロンプトの「呪文」として、とても有名ですよね。
AIにより効率的な自然言語文を入力させ、解答精度をあげる方法の研究を、「プロンプト・エンジニアリング」と呼ばれています。
この「プロンプト・エンジニアリング」で呪文と呼ばれているものがいくつかあります。特に、「連鎖的な思考」を意味する「CoT(Chain-of-Thought)として有名なのが、「ステップ・バイ・ステップ」です。
なにやら、難しそうな話になってきましたね。順を追って説明します。
そもそも生成系AIは、推論や計算が苦手です。
不思議に思われるかもしれませんが、その理由は、彼らは、基本、僕たちの言葉を聞いて、その回答にふさわしい言葉を関数計算し、並べることで、解答しているからです。
関数計算してるだけですので、そこに、あまり「推論、思考」というメカニズムは存在していないからです(このメカニズムを生成系AIにどう組み込むかが今後の課題でAGIへの道になります)。
推論手順の流れを含める/含めない
そこで、Chat-GPTを使う際に、「こんな風に考えると答えが出せるよ」という考え方の例をプロンプトに提示してから質問する、という方法で、正しい回答を導き出すことが、よく行われてきました。
最初のほうは、簡単な算数の問題を出す前に、同じような問題を出し、その解き方、つまり「問題の推論の方法」を示してから答えを出す、ということを、プロンプトに書いたうえで、質問しています。
すると、「答えは9個」と正解してますよね。
でも2番目の例では、同じような問題とその答えだけをプロンプトに書いて、解き方を教えないまま、質問しています。
すると、「答えは27個」と間違いましたね。
フューショット・プロンプティング
プロンプト入力時に、あらかじめ、いくつか推論方法を学習させてから、質問する方法を、フューショット・プロンプティングと呼ばれています。
このようにプロンプトを打つ際に、事前学習をその場でさせて、推論の能力を即席で身につけさせてから、解答させると、正しい回答が出るということが、生成系AIの開発過程でわかりました。
でも、毎回、プロンプトを入力する時に、推論方法を例を書いて説明するのは面倒ですよね?
ゼロショット・プロンプティング
そこで、こうした推論学習させるための、フューショット・プロンプティングを入力せずに、正解を出せないか……。色々と研究されて生まれてきたのが、ゼロショット・プロンプティングという方法です。
要は、解き方を一切示さずに、正しく解答させるプロンプトの打ち方です。そこに使われて劇的な効果を生み出したのが、「step by step」という呪文なのです。
プロンプトに「step by step」という言葉を入れるだけで推論精度が上がるテクニックがZero-shot CoTです。結論に至るまでの推論の過程を回答させることで推論の質が上がります。
たったこれだけなの?
ええ、たった、これだけなんです。だからまさに「呪文」と呼ばれているわけです。
それは本当?と思われるでしょうから、実験してみましょう。GPT4は頭がいいので、GPT3.5で実験します。
【実例】呪文「ステップバイステップ」のすごさ
僕
「私は、八百屋で10個のリンゴを買いました。友達に2個、家族に2個渡しました。それから5個のリンゴを買って、1個食べました。リンゴの残りは何個ですか?」
GPT3.5
「最初に八百屋で10個のリンゴを買いました。友達に2個渡し、家族にも2個渡しました。したがって、最初に買ったリンゴから2個 + 2個 = 4個が減りました。それから5個のリンゴを追加で買いました。そして1個食べました。したがって、最初の4個のリンゴに5個追加され、1個減ったことになります。
4個 + 5個 - 1個 = 8個のリンゴが残っています。答えは8個です。
なんだかすごく考えているようですが、答えは間違いですね。正解は10個です。
では、次に「step by step」の呪文を使ってみましょう。
僕
「私は、八百屋で10個のリンゴを買いました。友達に2個、家族に2個渡しました。それから5個のリンゴを買って、1個食べました。リンゴの残りは何個ですか?ステップバイステップで考えて下さい。」
GPT3.5
「ステップバイステップで考えてみます。
最初に、八百屋で10個のリンゴを購入しました。リンゴの数は10個です。
友達に2個のリンゴを渡しました。残りのリンゴは10個 - 2個 = 8個です。
家族にも2個のリンゴを渡しました。残りのリンゴは8個 - 2個 = 6個です。
その後、さらに5個のリンゴを購入しました。残りのリンゴは6個 + 5個 = 11個です。
最後に、1個のリンゴを食べました。残りのリンゴは11個 - 1個 = 10個です。
したがって、リンゴの残りは10個です。」
正解です!「ステップバイステップで考えて下さい」と付け加えたら、正解しました。まさに呪文ですね。
推論能力と「呪文」
この「ステップバイステップ」という呪文がなぜ効果があるのか?は正確にはわかっていません。
おそらく、ステップを経て、順を追って考えてくれ、と指示することで、Chat-GPTが自ら、1ずつ順を追って考えるように自分を制御して考えるようになるからだと思われます。
ちなみに、GPT4だと、この問題、「ステップバイステップ」の呪文なしに正解しました。徐々に生成系AIは、推論の能力を上げてきているということですね。あと数年したら、この呪文は必要なくなるでしょう。
「ステップバイステップ」の応用が会話のコツ
さらに。この呪文を使うよりも、段階を踏んで考えさせることを会話に応用して、導き出したい答えや案を、導き出すことに使っています。
このテクニックは、Chat-GPTと会話する時にも、応用が効くのです。
僕
「XXXを考えよう。でも考えるのは難しので、一緒に、ステップバイステップで考えていこうよ」
GPT
「はい。頑張って、ステップバイステップで考えます」
僕
「まずはね、この文章を読み込んで書いてることを理解して」
GPT
「はい。読み込みました」
僕
「次にね、この文章の重要なポイントをみつけてみてよ」
GPT
「重要なポイントは、XXX...」
僕
「では、次に、そのポイントの3番目と5番目について考えてみよう」
GPT
「はい。考えます」
僕
「・・・」
つまり順を追って、段階的に、まさに「ステップバイステップ」で、会話をしていくのが、Chat-GPTと上手に会話する基本なのです。
次回に続きます。
大規模言語モデル(LLM)とのインタラクションを最適化するための「26の原則」
①礼儀を省く:「お願いします」などの礼儀用語は不要
②対象者を明示:「専門家向け」など返答を受ける対象者を明示
③複雑なタスク分割:複雑なタスクを簡単なプロンプトに分ける
④肯定的指示の使用:否定的な言葉ではなく肯定的な言葉を使用
⑤明確化のための指示:「簡単な言葉で」「中学生にも分かるように」等
⑥報酬の提示:「良い解答には報酬を出す」と示す
⑦事例を提示:既存の事例を使用
⑧プロンプトのフォーマット:###Instruction###」で始め、適宜「###Example###」や「###Question###」を含める。
⑨明確なタスク指示:「あなたのタスクは」と指示。
⑩ペナルティの提示:「ペナルティあり」と伝える。
⑪自然言語による回答指示:「自然言語で回答して」と指示。
⑫先導的な言葉の使用:「ステップバイステップで考えて」と指示。
⑬偏見の排除:「偏見を持たず、ステレオタイプに依存しない」と指示。
⑭ユーザーとの対話促進:問題解決までモデルに質問させる。
⑮テストを含む指導:テストを出してもらい、自分の理解度を試す。
⑯モデルへの役割割り当て:モデルに特定の役割を割り当てる。
⑰デリミターの使用:特定の区切り文字を使用。
⑱繰り返しの使用:特定の単語やフレーズを複数回使用。
⑲思考の連鎖:中間ステップを生成し、事例を組み合わせる。
⑳出力プライマーの使用:期待される出力の始まりでプロンプトを終える。
㉑詳細なテキストの作成指示:「詳細に書いて」と指示。
㉒スタイル変更の防止:「スタイルを変更しない」と指示。
㉓複数ファイル対応のコーディングプロンプト:複数のファイルにまたがるコーディング作業の効率化のために、自動的に新しいファイルを作成し、生成されたコードを適切なファイルに挿入するスクリプトの作成を提案。
㉔特定の言葉で続ける:「与えられた言葉で完成させて」と指示。
㉕モデルの要件の明示:コンテンツを制作するためにモデルが守らなければならない要件を、キーワード、規定、ヒント、指示などの形で明示。
㉖サンプルに基づくテキスト作成:サンプルと同じ言語で書くよう指示。
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?