最近、どっぷりLLMにハマっているsonesuke( https://twitter.com/sonesuke )です。
TL;DR
- Chain of Thoughtの考え方を図解してみた
- この記事には続きがあります
ChatGPT限界?
普通のChat GPTの使い方に飽きてきたことはありませんか?
- 返答が無難すぎておもしろくない。
- 最近のことを知らない。
- 間違っていることを自然に返す。
こういうやつを、うまく使う方法って意外に難しいのよねーとか、考えていませんか?
しかし、冷静に考えてみると、人間だって知らないことに関する情報は、そんなふうになってません?
- 知らないという状態をうまく隠しながら、当たり障りのないことを無難に答える。
- 自分の知っていることをつなぎ合わせて答える。
どこか身に覚えのある話でしょう。ChatGPTの中でも似たようなことが起きています。
ChatGPTは2021年9月までの情報しか学習していません。しかも、全てのウェブページを学習したわけでもありません。
知らないとき、あなたならどうする?
ところで、みなさん、知らない話題が出てきたら、どうしてます?
ネットで調べて、2, 3個を記事を読んで、概要を掴んでから喋ったりしませんか?
それ、ChatGPTでもできませんかね? つまり、こういうふうに3ステップでやってみてはどうでしょうか?
では、まずベースラインとしてChatGPTに2022年の出来事を聞いてみましょう。
お題は「2022年にアニメ化されたチェンソーマンについて」でいきましょう。
スーパー嘘つきです。チェンソーマンのアニメは、2022年の10月開始です。2022年1月ではありませんし、過去のことなので予定ではありません。
では、さっきの手順にそって聞いてみましょう。
ステップ1: 質問から「調べること」を抜き出す
「チェンソーマン」「アニメ」「スタート」が抜き出されました。
ステップ2: 「調べること」をググって関係ありそうなことを抜き出す。
ステップ1で抜き出したキーワードでググってみます。
ググった一番トップのURL(https://chainsawman.dog/)にアクセスして全選択コピペでコンテンツを貼り付けて、関係ありそうな情報を抜き出します。
不発っぽいですね。ページが、ほとんど絵なので、意味のあるテキストがほとんどないせいでしょうか?
では2つめのURL(https://chainsawman.dog/onair/)に取り掛かりましょう。コンテキストが長いのでキャプチャを2分割にします。
おぉ、いい感じですね。まさにドンピシャなページだし、きちんとテキストがあるので、良いヒントになったのでしょうか。最後に3つめのURL(https://www.tv-tokyo.co.jp/anime/chainsawman/)です。こちらもコンテキストが長いのでキャプチャを2分割です。
うーん、不発っぽいですね。横のニュース情報にやたらとポケモンのコンテンツがあったため、ポケモンページだと思ったみたいです。
ステップ3: 「調べたこと」をまとめて質問の答えをつくる
ステップ2で出力させた箇条書き連結し、新たなコンテキストとして入力して、もう一度答えさせてみましょう。
おぉ、きちんと2022年10月11日からのスタートという答えにも辿り着いています。また、放送局や時間帯などの情報もついて、いい感じです。
後半の「このウェブサイトは〜」のくだりは、ちょっと意味が分かりませんが、満足できる結果になったのではないでしょうか?
Chain of Thought
いかがだったでしょうか? え? まて、Chain of Thought の説明がまだだって?
さっきのが、Chain of Thoughtです。図解するとこういうことです。
赤字、緑字のところをみると質問が、連鎖していることがわかります。
今回は、説明するために、全部、手作業でやりましたが、あれをユーザーに見せずにやったら、「考え中」みたいに見えますよね。つまり、Chain of Thought (思考の鎖) です。
やっていることはシンプルで
- 質問に関してやるべきこと(サブタスク)を列挙する
- サブタスクを処理する
- サブタスクの結果をみて、最初に質問に答える
まぁ・・・・人間がやっていることと同じですね。
「え、でも、お前ググったよね?」
「コピペしてるときに答え見えてたじゃん?」
「めんどくせー」
・・・・そう、思った人。これを手でやってたら、めんどくさいんです。
勘のよいあなたなら気づいたと思います。つまり、コード化すれば良いのです。
次回は、これのコード化にトライします。