見出し画像

【決定版】ChatGPTでより良い回答を導き出す魔法のプロンプト「◯◯で考えて」

こんにちは!生成AIプロンプトデザイナーのヒロです!

>>>自己紹介記事はこちら

ChatGPTでは回答を高めるプロンプトというものがあります。

前回、前々回の記事でもお伝えしましたが、今回はさらに私が使っている回答精度を高める魔法のプロンプトについてお伝えしていきます(内緒だよ)。


ChatGPTの回答精度を上げる基本について

ChatGPTの性能を向上させるには、ChatGPTにヒントを与えたり、一つの答えを出す前に中間で答えを出してもらってから深く掘り下げるなどChatGPT自身に考えてもらうことをします。

これにより、より高度なタスクだったり複雑なタスクを処理できるようになります。

複雑なタスクを処理させる場合に有効で、ChatGPTに事前にその答えに通じるヒントや、方向性、一度特定のタスクを処理してもらうことで、推論能力が高まっていくのです。

ChatGPTに答えを出させる前に情報を処理してもらうことでこちらが意図する情報を出力する方法を、専門的な言葉では中間推論ステップだとか思考の連鎖(Chain-of-Thought(CoT))と言います。

ChatGPTの大規模言語モデル(LLM)は膨大なデータを学習しているため一回で答えを出したり、一度に処理をしようとするとうまく回答が導き出せなかったり、ハルシネーション(幻覚)や誤作動を起こしたりするからです。

最も基本的な中間推論は「ステップに分けて考えて」

これはプロンプトの中でもよくみるプロンプトだと思いますが、思考の連鎖(CoT=中間推論)で代表的なプロンプトとして、「ステップに分けて考えてください」があります。

推論能力を高めるプロンプト=ステップに分けて考えて

「ステップに分けて考えて」という指示を与えることで、ChatGPTに段階的に処理を促せるようになり、一気に答えに辿り着くのではなく、段階的に答えを出力しようとします。

これによりChatGPTの推論能力が高まるのです。

「ステップに分けて考えて」と指示することで思考の連鎖(CoT=中間推論)がうまれ、大規模言語モデル(LLM)がどのようなステップで答えを出したのかも可視化されるため、どこの部分を修正すればいいのか、わかりやすくなり、次の指示でどのステップでどんな追加情報(ヒント)を与えればいいのか、修正しやすくなるというメリットもあります。

【ChatGPTに中間推論を指示するプロンプト】

・ステップに分けて考えてください
・Step by Stepで考えてください
・Let's think step by step

なお英語で指示をしても、「入力」に値する項目が日本語である場合、日本語で返答してくれます。

もしも英語で返答が来た場合は「日本語で出力してください」などのプロンプトを加えれば日本語で返してくれます。。

Zero-shotでの「ステップに分けて考えて」の使い方

ChatGPTではヒントを与えるほど、こちらが意図する方向に働き求めている答えを出力しやすくなります。

要するに思考の連鎖では「考え方」をChatGPTに与えます。

これにより、ヒントなしのいわゆるZero-shot(ゼロショット)プロンプトでも思考の連鎖(CoT=中間推論)を使うと、特定の答えを出力しやすくなります。

例えば下記のようにです。

ステップに分けて考えてください。
(ここに指示したい内容)

以上のように、ChatGPTに「ステップに分けて考えて」というキーワードを入力するだけで、思考の連鎖(CoT=中間推論)が機能します。

ただしやはりヒントを与えた方がこちらが意図する方向に働きやすく、つまりヒントを一つ与える「One-shot」やヒントを複数与える「Few-shot」の方が、特定の答えを求めやすくなります。

・Zero-shot=ヒントなしのプロンプト
・One-shot=ヒントが一つのプロンプト
・Few-shot=ヒントが複数のプロンプト

なお、これら3つのプロンプトの違いについては下記記事で解説していますので参考にしてください。

「ステップに分けて考えてください」の精度を向上させるプロンプト

以上で見たようにChatGPTはプロンプトひとつで、その回答の精度が変わることを理解していただけたかと思うのですが、「同じステップに分けて考えて」でも、実は、さらにChatGPTの思考の連鎖(CoT=中間推論)を高めるプロンプトがあります。

これはヒントなしのZero-shotで、どのフレーズを足すとより性能が向上するのかを試した研究論文からの引用になりますが、下記のように報告されています。

・Zero-shotのみ
正確さ:17.7

・Let's think this out in a step by step way to be sure we have the right answer.
(正しい答えが得られるようにステップバイステップで考えてください)
正確さ:82

・Let's think step by step
(ステップバイステップで考えてください)
正確さ:78.7

・Let's think about this logically
(これについて論理的に考えてください)
正確さ:74.5

・Let's solve this problem by splitting it into steps.
(この問題をステップに分けて解決してください)
正確さ:72.2

・Let's be realistic and think step by step
(現実的かつステップバイステップで考えてみましょう)
正確さ:70.8

・Let's think like a detective step by step
(探偵のようにステップバイステップで考えてみましょう)
正確さ:70.3

・Before we dive into the answer,
(答えに入る前に、)
正確さ:55.7

・The answer is after the proof.
(答えは証明の後に)
正確さ:45.7

>>>Large Language Models Are Human-Level Prompt Engineers

Large Language Models Are Human-Level Prompt Engineers

言葉ひとつ、フレーズひとつ付け加えることで質問に対する返答の正確さが変わっていることがわかります。

その他、ChatGPTの回答精度を上げるプロンプト

他にもChatGPTの回答精度を上げる方法はあります。

下記はクジラ飛行机さんの著書から引用したものですが、これらのフレーズを使うことでZero-shot CoTが誘発されると報告されています。

・質問について、ステップごとに考えてください。
・ひとつひとつのステップを明確に示してください。
・答えに至るまでの、中間推論ステップを明らかにしてください。
・質問について、箇条書きで考えをまとめながら、答えを出してください。
・正しい答えを求めるために、箇条書きで整理しながら考えてください。
・答えをいきなり出すのではなく、ひとつずつ箇条書きで考えてください。
・答えに加えて推論の経過も示してください。
・途中経過をひとつずつ列挙しながら、質問の答えを考えてください。

Zero-shot CoTを誘発するフレーズ

つまり、ChatGPTにいきなり答えを求めさせるのではなく「手順を詳しく説明してください」などのフレーズによって手順を考えさせて、その手順を記してもらうことで、ChatGPTの推論能力が高まるというわけです。

またそれだけではなく途中経過を記してもらったり、箇条書きで考えをまとめてもらったり、ChatGPTに論理的に少しずつ考えてもらうことでその精度が向上させることができる、ということです。

以前書いた「深呼吸」というキーワードも同じです。

このようにChatGPTではプロンプトによって回答精度がまるで変わってきます。

ぜひ参考にしていただいて、よりイメージ通りの回答を得られるように工夫してみてください。

まとめ

・思考の連鎖=Chain-of-Thought(CoT)=中間推論ステップ

【中間推論を与えるプロンプト】
ステップバイステップで考えて

いいなと思ったら応援しよう!