![見出し画像](https://assets.st-note.com/production/uploads/images/100662163/rectangle_large_type_2_76de1423d0d336fa1c62d62b38201eeb.png?width=1200)
ChatGPTへの質問力向上のすすめ〜ワインを添えて〜
開業医をしつつ、Ubie株式会社で働いてる白石です。
現在、ChatGPTをはじめとするLLM(大規模言語モデル)が話題ですが、その質問の仕方についてPrompt Engineering Guideによくまとまっており、基本となる考え方をについて、備忘録も兼ねて記事を書くことにしました。
また、実践として「晩御飯に相応しいいい感じのワインをChatGPTと選ぶ」ということ例にすすめていきます。
ちなみに「今日の料理にあうワインを教えてください」とするとこのようになります。
![](https://assets.st-note.com/img/1679220198591-8mM109GYJu.png?width=1200)
0. 基本のキ
より具体的に聞く
最初の「今日の料理にあうワインを教えてください」だとかなり一般的な答えになってしまっています。より具体的に聞いてみましょう。
ちなみに今日の晩御飯はキーマカレーだったのでキーマカレーにあうものをきいてみました。ちょっと具体的な回答になってきましたね。
![](https://assets.st-note.com/img/1679220578258-A6WEUP4oTH.png?width=1200)
より具体的にどういう状況かを教える
さらに状況や、どういう立場に立って答えてもらうかを指定すると効果的です。
「あなたはソムリエです。家で、妻と二人で、晩御飯にキーマカレーを食べるときにちょうどいいワインを教えてください。」と聞いてみました。
![](https://assets.st-note.com/img/1679220657371-UWy1ZW4N1M.png?width=1200)
どう聞くのがより具体的なのかはトライ&エラーは必要
もしかしてこういう聞き方もできるかも、と思ったら変えてみることが大事です。求めていた答えに大きく近づくかもしれません。
先程の質問文の「ワイン」を「赤ワイン」に変えて
「あなたはソムリエです。家で、妻と二人で、晩御飯にキーマカレーを食べるときにちょうどいい赤ワインを教えてください。」
と聞いてみました。
今度はグルナッシュやテンプラリーニョをすすめてくれるようになりました。
![](https://assets.st-note.com/img/1679220733390-RNyjQSW671.png?width=1200)
これまででも変化を楽しめるところですが、Prompt Engineeringを参考に、質問する際のテクニックを記載していきます。
1. 回答例を示してみる Few-Shot Prompting
ChatGPTはいきなり質問をなげかけても、ある程度質問には答えてくれます。(これを「Zero-Shot prompting」と呼ばれます)
そこに、回答の例をいくつか見せることで、回答の精度をあげるテクニックになります。(これをFew-Shot Prompting)
以前はこれがよかったよ、を書いてみました。
「あなたはソムリエです。家で、妻と二人で、晩御飯にキーマカレーを食べるときにちょうどいいワインを教えてください。
以前にキーマカレーを食べたときは、アルバリーニョのフレッシュな酸味が合っていて美味しかったです。」
![](https://assets.st-note.com/img/1679220960906-4A5ZyQFaim.png?width=1200)
またこのタイミングで、具体的に買いにいけるものがいいなあと思い直し「銘柄と価格をかけ」というとこんな感じになりました。存在しないワインがでてきてしまいました。
![](https://assets.st-note.com/img/1679221119433-Z81yPXzMOu.png?width=1200)
2. 回答ステップを示してあげる Chain-of-Thought Prompting
質問からいきなり回答に辿り着くのではなく、ステップ踏むことを明示的に指示することで、回答の精度をあげる手法になります。
今回ですと、
まずキーマカレーに合うワインの品種を答える
↓
その中でおすすめの銘柄を選んでもらう
というステップを踏んでふんでもらえばいいのではと思い以下のようにきいてみました。
「あなたはソムリエです。家で、妻と二人で、晩御飯にキーマカレーを食べるときにちょうどいいワインを答えてください。 キーマカレーにあうワインの品種をひとつ考え、その品種の中で、価格が五千円未満のものを3つずつ教えてください。」
説明がより詳細になった感じがします。
![](https://assets.st-note.com/img/1679221199469-cERTokOiey.png?width=1200)
追記:ちなみに英語に翻訳して聞くと、実在するよさそうなワインをすすめてくれました。
![](https://assets.st-note.com/img/1679221414945-FnSd2wXHLi.png?width=1200)
3. 前提知識を与えておいてあげる Generated Knowledge Prompting
あらかじめ前提知識を与えておくことで回答精度をあげる手法になります。
今回は僕と妻の好みをざっくり与えてみます。
「あなたはソムリエです。家で、妻と二人で、晩御飯にキーマカレーを食べるときにちょうどいい赤ワインを教えてください。
妻はピノ・ノワールが好きです。
僕はカベルネ・ソーヴィニヨンが好きです。」
すると好みに合わせてきてくれました。
![](https://assets.st-note.com/img/1679221533978-DmEDdSk0rl.png?width=1200)
4. そのほか
これは手入力におけるテクニックではないですが、Automatic Prompt Engineerといって雑に入力したプロンプトを最適なプロンプトにしてくれるサービスを使うというテクニックもあります。
Automatic Prompt Engineerの一例(PromptPerfect)
かなり具体的に指示をしてくれるようになります。
![](https://assets.st-note.com/img/1679222105026-RHI4FLMDPi.jpg?width=1200)
終わりに
ChatGPTを皮切りに、これからは優秀なAIにいかに指示をうまく出すか、ということが重要になってくるかと思います。
プロンプトを生成するためのプロンプトや、プロンプトを最適化するサービスなどがでてきますが、それらを扱う上でもベーシックな部分を学んでおくことは重要と考え、ワインを例に遊んだものをまとめてみました。
適宜updateしていこうと思います。
追記1. 表形式での出力してみやすくする
複数種類について比較したいとき、表形式での出力をするとよいようです。
「表形式で教えてください。 表には、ワインの品種、特徴、おすすめの銘柄、価格帯を表示してください。」と追加して聞いてみました。
![](https://assets.st-note.com/img/1679236588708-VUH3x8BCqB.jpg?width=1200)
追記2. 必要に応じてChatGPTに質問してもらう
情報不足かどうかを判断してもらい、もし足りない場合は質問するように指示します。
今回は
「オススメのワインを提示するのに、情報が足りない場合は、質問を投げかけてください」
とつけてみました。
![](https://assets.st-note.com/img/1679237799541-nfbFiZCc3m.png?width=1200)