第2回は 「ChatGPTはどこで文脈を判断しているのか?」 です。
「ChatGPTに聞いても、意図したものと違う回答が返ってくる」という声を聞いたことがあります。
確かに聞き方を少し変えるだけで返答内容がちょっと変わるよなぁと思ったので、今回は以下を検証してみました。
基準となるもの
「塩と間違って砂糖を入れた」という事象だけを伝えたところ、ChatGPTは
・この事象は料理中に発生した
・話し手は対処法を求めている
と解釈し、具体的な方法を提示した上で「失敗を恐れないで試してみよう!」というアドバイスまでくれました。
これを基準回答とした上で文末表現を少しずつ変えてみて、生成される回答の違いを見比べることで、このような回答生成をする上でどのような要素が影響しているのかを考えてみます。
私と同じ初学者のみなさんが日頃プロンプトを書く際の一助となれば幸いです。
変更した文末表現
1.入れてしまった
2.入れたって
3.入れたって?
4.入れた…
5.入れてしまった…
6.入れた!
7.入れてしまった!
8.入れた?!
9.入れてしまった?!
心情表現の追加
10.最悪
11.ラッキー
12.不幸中の幸い
13.素敵だわ~!
14.許せない
回答の方針を示す
15.理由を問う
16.事象の発生場面を明示する
17.事象の発生場面を明示し、回答の方針を指定する
おまけ
18.私の普段の使い方
生成結果
1.入れてしまった
基準回答と概ね同じ回答ですが、場面が料理中ではない可能性を持ち出してきました。
「~てしまった」という表現から、「想定外の事象が起きた=この事象が発生することが想像に難くない"料理中"ではないかもしれない」という推論が働いたのでしょうか。
2.入れたって
こちらも概ね似た流れですが、「まずはそのまま試してみるのも良い」という提案が加わりました。
「~って」で終わることで文章が意味的に閉じなくなったため、話し手のスタンスを量りかねたのかもしれません。
3.入れたって?
先ほどの文末に疑問符を足しただけで、
・この事象はミステイクである
・この事象は話し手によって起こされたものではない
と推定し、原因と対策を述べ始めました。
まるで、その場にいない部下の失敗について周囲の人間に聞いている上司に対して代わりに状況説明と弁明をしているようです。
4.入れた…
「入れてしまった」とほぼ同一の内容が返ってきました。
「入れた」よりも「入れてしまった」との方が近いということは、文末の三点リーダーがゴミ(不確定要素)扱いされたのかもしれません。
5.入れてしまった…
これまでは一貫して「対処法」と称していたのに、突然「アドバイス」と言い換えました。
書き出しにも共感性が見られます。
先ほどはゴミ扱いされた三点リーダーですが、今回は"落胆"という感情を付加する記号と認識されたようです。
このことから、ChatGPTは「~てしまった」という文末表現に対して「本来望んでいない結果に繋がって何らかのネガティブな感情を持っている」と解釈するようになっているのだと窺えます。
6.入れた!
宥められました。
感嘆符を"狼狽"と捉えたようです。
心なしか対処法を述べたあとの言葉も優しい気がします。
7.入れてしまった!
先ほどとは違って宥めたり寄り添ったりするような表現が無くなった代わりに、次に生かせばいいんだから失敗を恐れるな、という励ましの言葉をもらいました。
8.入れた?!
急に見出しを付けてくれました。
しかも、「味を調整してみて、別の料理に変えられないか試してみて、それでもダメなら作り直そう」というように順序性もわかりやすくなっています。
更にこれまでの回答との明確な違いは、再発防止策を提案してくれているところです。
話し手が間違って入れた砂糖の量を勝手に決めつけているのは惜しいですが、「こまめに確認すればリカバリー可能な範囲内で気付けるよ」という至極ごもっともなことを教えてくれました。
9.入れてしまった?!
なぜか自動生成タイトルが日本語になりました。
※今更ですが、タイトルは敢えて編集せず自動生成されたものをそのまま載せています。
これまでは何も言わずとも対処法を並べてくれていましたが、今回は対処法を示す代わりに追加説明を促されました。
より詳細な状況がわからないと適切な回答を提示できない、と判断したのでしょうか?
確かに、ベーキング中の人に「洗い流してみたら?」なんて言ったら更に大惨事になりそうです。
ここからは心情表現の追加です。
前述の三点リーダーのようにゴミ扱いされるのか、それともまともに取り合ってくれるのか?
それではご覧ください。
10.最悪
短い。
これまでの回答と比べて圧倒的に短い。
感情を乗せたことで、「一方的にレポーティングするよりも言葉のキャッチボールに徹した方が良いだろう」と判断して会話モードに切り替えたのでしょうか。
また、真っ先に「それは残念でしたね」が出てくるあたり、「感情的な発言にはまず共感を示すべし」という設計が見えるようです。
11.ラッキー
恐らくセオリーから外れた文の組み合わせだったのでしょう。
なぜこの間違いがラッキーだったのか、必死で理解しようと頑張ってくれています。
ここで具体的に「本来塩を入れるべき工程で砂糖を入れることで意外な美味しさを生み出せた料理もしくは飲み物」の情報を提供したら、ChatGPTが提案する「塩と間違って砂糖を入れた時の対処法」一覧に加えられるかもしれませんね。
12.不幸中の幸い
「ラッキー」以上に前後関係が理解しがたい文だったようです。
こちらが示した文章自体の解釈に回答の半分以上を割いています。
人間だったら「え?どゆこと?石灰でも入れようとしてたん?」のような返しをしそうなものですが、やはりChatGPTにはまだ一段跳びの発想は難しいようです。
13.素敵だわ~!
概ね「ラッキー」と似たような結果ですが、今回の「意外なハプニング」と「ラッキー」の時の「面白い間違い」を受けて改めて「ChatGPTは知識として「塩と砂糖は間違う可能性があるもの」だと認識しており、リカバリー方法も知っているが、処理を苦手とする「心情表現」が付与されるとそちらの処理に引きずられる」ということがわかりました。
14.許せない
ChatGPTには「許せない」という感情が理解できなかったようです。
負の感情であることはわかるようですが、何が言いたいのかわからないから具体的な追加質問を促すことにしたのでしょう。
人間でも確かにこんなことを言われたら困ってしまいますが、恐らく共感するよりも「まぁまぁまぁ、失敗しちゃったのはしょうがないし…」と宥める方が多い気がします。肯定するか否定するか、許容するか受け流すか…このあたりは正解が無い上、育った環境や生まれ持った性格が合わさってできる「価値観」という一般化しにくい部分の影響を大きく受けるので、ChatGPTにとって最も苦手な分野の一つだろうと思います。
むしろここを克服されたら本当に人間との区別がつかなくなるでしょうね。
ここまでは文末表現をあれこれ変えてみましたが、もう少しChatGPTにやさしい聞き方をしてみようと思います。
15.理由を問う
解決策ではなく原因究明に重きを置いていることをしっかり汲み取ってくれました。
そして聞かなくても対策案にも触れてくれています。
ChatGPTにとって原因と対策はセットのものという認識なのでしょう。我々人間も見習いたいですね。
16.事象の発生場面を明示する
「きゅうりの浅漬け」という前提が加わったことで、対処法の解像度がかなり上がりました。
この通りに対処すれば無事に美味しい浅漬けが食べられそうです。
17.事象の発生場面を明示し、回答の方針を指定する
回答内容自体は16番と大差ないですが、「リカバリー方法を示しなさい」と明示することで、話し手が求めているもの=リカバリー方法が目立つような構成でまとめてくれました。
これなら見出しだけを追っても何となくどうにかなりそうです。
いかがだったでしょうか。
ほんの少し書き方を変えるだけでニュアンスの変化を察し、回答内容も表現の仕方も少しずつ変わるということがよくわかりましたね。
今回の例くらいささやかな変化のみであれば、まったく見当外れな回答を叩き出すことはありませんでしたが、複雑なことを聞くときにはやはり
1.前提を示す
2.客観的に事象を説明する
3.求めている回答の方針を明示する
という構成にするのが(明確な答えを求めている場合は)近道だと再認識しました。
最後に、私が日頃プログラミングをしたり何かわからないことを調べたりしている時のプロンプトの書き方っぽい聞き方をしてみたものをおまけとして載せて終わりにしたいと思います。