📖

GPTsを使って、LangChainについて質問できるボットを作ってみた

2023/12/15に公開

はじめに

2023年11月に行われたOpenAIの公式イベントで、「GPTs」という新機能が追加されると発表されました。非常に話題になったので、リリース後実際に使ってみた方も多いのではないでしょう。

自分の場合、PDFを読み込ませたチャットボットが簡単に作れるなら、書籍を前から順に読む必要はなくなって、聞きたいことだけ質問すれば回答を得られるんじゃないかと感じました。

この記事は、『ChatGPT/LangChainによるチャットシステム構築[実践]入門』という書籍を元にチャットボットを作成し、どの程度実用に耐えうるのか検証したものです。

なお、これは「テックキャンプ公式コミュニティ Advent Calendar 2023」の17日目の記事です。
https://adventar.org/calendars/8952

用意したもの

実践する前に以下のものを用意しました。

・ChatGPT Plusのアカウント(月額20ドル)
・『ChatGPT/LangChainによるチャットシステム構築[実践]入門』のPDF(技術評論社のオンラインショップ
で購入したもの)

GPTsの作成方法

GPTsの作成は以下の手順で行いました。

普段使用しているChatGPTのサイトにアクセスします。画面が開いたら、左のサイドバーメニューある「探索する」をクリック。

「CreateGPT」を選択します。

下のような画面が開きます。左半分がボット作成の設定を行う画面、右半分は作成したボットを試しに使ってみるための画面となっています。

最初に、どのようなボットを作成したいか質問されます。LangChainに関するボットを作りたいとフォームに記入しました。また、ピンのアイコンをクリックすることで、アップロードするPDFを選択できます。

ボットの名前を考えてくれるので、採用するかどうかを回答します。「LangChain Expert」と名称で良さそうだったのでOKと答えました。

続いて、ボット用のアイコンを自動的に生成し、これでよいか確認されます。なかなか良いと感じてたのでOKと伝えました。

ボットの役割等を詳しく教えて欲しいと言われます。

最後にどのようなスタイルでの対話を希望するか確認されます。親しみやすいトーンでとお願いしました。

これで一旦ボットが完成したので、右側の画面で試しに使ってみます。ドキュメントの概要を教えて欲しいと伝えたところ、概ね良さそうな回答が返ってきました。

画面に右上にある「保存」をクリックすることで保存ができます。この際、公開範囲も選択できますが、今回は試しに使ってみるだけなので「私だけ」を選びました。

画面が遷移して、サイドバーに今作成したボットが追加されました。ここをクリックすることで、いつでも作成したボットとのやりとりができるようになります。

ここから、いくつか質問を行いどのような回答が返ってくるのか実験してみました。

つくったGPTsに質問してみた

GTPsの使い方として想定していたのは、LangChainでアプリを開発する際に以下のようなことができることです。

・ある機能を実装する際に、参考となる書籍内のコードをそのまま表示して欲しい
・表示されたコードについて、わかりにくい部分は質問のやり取りを繰り返して理解を深めたい
・書籍に載っていないことについて質問したら、「載っていない」と回答して欲しい(他のソースを元にした回答はしないでほしい)

この想定で質問をした結果、うまくいった場合、うまくいかなかった場合がありました。それぞれのやり取りを記載します。

うまくいったQA

最初に、LangChainで何ができるかという基本的な質問をしてみました。

上記のように、若干抽象的すぎる気もしますが書籍の内容に沿った回答が行われました。

続いて、LangChainを使用するメリットについて聞きました。書籍には、LangChainが提供する機能は紹介されているものの、「メリット」にフォーカスして書かれた解説はありません。

上記のように、書籍に書かれた「LangChainの機能」の解説をもとに、使用するメリットとして回答してくれているようです。

次に、本来の目的であるコードの引用ができるか試してみました。

上記のようにコードが回答されました。コードは書籍と全く同一の内容が表示されているため、画像ではモザイクをかけています。

コメントは書籍のコードにはなく、独自に追加されたものです。簡単なコードの解説もされており、このような使い方ができるならかなりいいかもと感じました。

もう少し詳しく解説してくれるか試しました。

回答が長かったため一部のみ記載していますが、各行についていい感じの解説をしてくれました。

続いて、書籍に載っていないことは「載っていない」と答えてくれるか確認してみました。
書籍では、GPT3.5を使用するコードのみが記載されています。

まず、GPT3.5以外を使えるか聞いてみました。

このように、他の言語モデルも使えると回答がありました。このような、他モデルに関する概論的な解説は書籍にもあるので、正しい回答と言えそうです。

次に、明らかに書籍には載っていない質問を行いました。

上記のように資料に含まれていないとの回答です。うまくいっていますね。
一般論での補足があるのもいい感じです。

ここまでを見ると、自分が想定していた使い方がほぼ完璧にできており、実用に足るかなと感じていました。

しかし、質問を続けると失敗例もありました。

うまくいかなかったQA

ここからはうまくいかなかった回答の例です。

ドキュメント内でいくつのアプリを作るか聞いてみました。これは、ドキュメントの特定の箇所を調べるだけでなく、全体をサーチしないと回答できない内容です。

ボットからは、「少なくとも1つ」という、間違ってはいないものの非常に心許ない回答がありました。

RAGの性質上、広範にわたる内容について質問すると、意図した回答が得られないようです。

次は、ドキュメント内のコードを引用してくれるか試した例です。先ほどうまくいったパターンを紹介しましたが、他のコードで試したところ回答が得られませんでした。

このように、言い方などを変えて聞いてみても必要なコードを参照することができませんでした。この部分に期待していたので、ちょっと残念ですね。

実際に使ってみて感じたこと

実用性はありそう?

今回試してみて、技術書のリファレンスをしやすくするためにGPTsを用いることは、現段階では難しいかなというのが率直な感想です。

自分の想定では、「自分の求めているサンプルコードが適切に表示されること」が必須だったのですが、それがうまく行われませんでした。

おそらく、長いコードだと処理の途中で断片化されてしまうため、正しく検索されないのかなと推測しています。

そもそもプログラミング言語は構文が厳密だったり、関数同士が依存しているなど自然言語よりもコンテキストへの依存度が高いのだと思います。なので、どうしてもテキストを分割せざるを得ない処理の場合は扱いにくいのかなと感じました。

どんなPDFならGPTsで活用できそう?

想像になりますが、きっと以下のようなドキュメントの方がGPTsはうまく機能するのではないかと思います。

ニュースなどのウェブ記事

段落が分かれていて、適切な見出しがつけられているような文章はボットにしたときに適切な回答を得られそうな気がします。

1つの記事ならわざわざPDFにしてボットを作るメリットはないと思いますが、あるテーマに関する複数の記事をGPTsに投げれば、例えばプロ野球についてなんでも教えてくれるボットみたいなものが作れるかもしれません。

論文や辞書など

論文を読むためにAIを活用している例はXなどでもよく見かけます。書き方のフォーマットが定まっているテキストはボットとの相性も良さそうです。

同じフォーマットが定まったものとして、辞書を読ませるのも良さそうな気がします。通常の辞書のように完全一致した言葉の意味を調べられるだけでなく、柔軟に検索できる(例えば類語なども検索できたり)なら便利に使えるのではないでしょうか。

引き続き他のドキュメントを使ったGPTsの作成も試してみようと思っています。

Discussion