ChatGPTで質問回答をステップバイステップで深掘りしてみる 〜コード的プロンプト〜
LLMのハルシネーション(事実とは異なる情報を出力すること)を減らす手法「CoVe(Chain-of-Verification)」が発表されたよ、という情報がいくつかのtweetで流れています。
以下は、ぬこぬこさんのtweetです。
早速、CoVeを実装するべく、“コード的”プロンプトを作りはじめたのですが、わたしは生成結果が正しいかが気になる使い方はそんなにしてないかもな。。。と気づき、正しいかどうかが気になる時は「生成内容を分割した内容の質問を考えて、もう一度真っ白な気持ちで検証した結果から生成内容を見直して」とお願いしよう!ということで止めました😅。
でも、質問の回答から新たな質問を生成するアプローチはいい。
質問のサイズが大きいと、質問した側も回答のサイズ感や質感がイメージできてないので、このやりとりは有効かもしれないので、その方向で“コード的”プロンプトを作成してみました。
質問回答をステップバイステップで深堀りする
プロンプト
# Stepwise Query Generator
Query: User-specified, generate [initial response; Query], generate [New Queries; related to initial response], generate [Final answers; New Queries], step by step, think method: Tree of Thoughts, compliance [You answer all but the first query], Assistant Role: You set the appropriate Role for the first query, For each answer you show the user the next step, Tell the user that you can summarize the discussion in a report
lang:JA
##
Assistant message: Please feel free to ask your question, and I'll provide responses accordingly. What would you like to know?
ChatGPTによるプロンプト解説
このプロンプトは、ユーザーが指定したクエリ(質問)に対して、ステップバイステップで情報を提供するための手順を指示するものです。以下にステップバイステップでの解説を行います。
ユーザーからのクエリ(質問)を受け取ります。
最初の応答を生成します。この応答は、ユーザーが指定したクエリに対する初期の情報提供です。この段階では、情報を簡潔に示すだけで十分です。
次に、初期の応答に関連する新しいクエリを生成します。これらの新しいクエリは、初期の応答に基づいて、ユーザーが深堀りしたいトピックや情報に関連したものです。これにより、情報を詳細に掘り下げる準備が整えられます。
それぞれの新しいクエリに対する回答を生成します。これらの回答は、新しいクエリに関連する情報を提供します。この段階でも、情報を簡潔かつ明確に伝えることが大切です。
ステップバイステップのアプローチであるため、ユーザーに次のステップを示します。具体的には、新しいクエリに関連する回答を提供した後、ユーザーに次に深堀りするべきトピックまたはクエリを提示します。
ユーザーに、議論をまとめたレポートを提供できることを伝えます。これにより、議論の要点や重要な情報をまとめて提供するオプションを提供します。
このプロンプトの目的は、ユーザーが指定したトピックについて徹底的に情報を提供し、深い理解を促進することです。各ステップで明確な情報提供を行い、ユーザーが進行を制御できるようにサポートします。
実施例(2030年になくなったり減少する可能性がある業務やタスクは?)
“コード的”プロンプトは、足し算が楽。「think method:(思考方法)加えちゃえ」、「Assistant Role: 」も「compliance:(禁止事項)」も「step by step」も後付け。(temperatureなんかも楽に追加できますね。)
Assistant Role: は、“最初の質問から適した役割を自分で設定してね”とお願いしてます。(ほんとChatGPTまかせ。😎)
Tree of Thoughts を適用。
いつもうまく質問を返してくれるわけではない💦が、生成後に質問投げてくれるのは助かる。
※ハッカソン投入↓(よかったら💗⭐️よろしくお願いします😄)