先日、chainlitを使ってchatbotのUIを作ってみました。
chainlitは、chatbotのUIを作成するためのOSSで、streamlitに似たようなものです。
使い方は非常に簡単で、langchainとの互換性も良いので、試してみました。
まず最初は、langchainを使ってRAGのchatbotを作成し、それをchainlitに接続しました。私のPCにはGPUがないため、ColabのGPUを使って、ngrokでトンネリングしました。ここは少しやり方がわからなかったので時間かかってしまいました。
私が作ったchatbotは、ChatGPTのようにファイルをアップロードすると、そのファイルを参照しながら対話するタイプのものです。イメージは⇩の通りです。
ファイルを読み込んだ後は、質問に答えることができます。
中身は基本的なRAGをベースに、会話履歴を覚える機能と参照元を返す機能を追加しました。法律知識に関するPDFをアップロードし、「クーリングオフ制度」についての質問をしてみました(実は私もこの制度についてよく知らなかったのですが)。回答の参照元を見ると、質問に正しく答えられていることがわかります。
また、⇩のスクリーンショットはchainlitの特徴的な機能の一つで、チェーン全体の動作プロセスを確認できます。どのチェーンからどのチェーンに、どのような内容が渡されていくのかが一目でわかるので、とても便利だと感じました。
興味ある方試してみてください: