いろいろなChatGPT/Code Interpreterクローンを試す
モチベーション
ChatGPT Plusを使って入るけれども、
- 業務に関する情報の投入はリスクがある(基本的に投入はしないとしても、強制できるわけではない)
- データ学習を無効化できるけれども、その代わり過去のチャット履歴やプラグイン等は使えなくなる。いちいち切り替えるというのもきっと忘れそう。
- GPT-4やCode Interpreterには利用制限がある
等、仕事で使うことを考えると少し使いにくい。
ChatGPTクローンを使うことでAPI経由での利用となり、API経由でのやりとりは言語モデルの学習には使用されないため、業務でも使いやすくなる(はず)
ということで、オープンなChatGPT実装をいくつか試してみる。基本的にはAzure OpenAI Serviceを使いたいので、その観点でいろいろ見ていく。
基本的には商用利用に問題があるようなものは対象外とする方針。なのでダメそうならリストから削除します。
Chat実装
Chatbot UI
→ 確認済
BetterChatGPT
→ 確認済
YakGPT
→ 確認済
LibreChat
→ 確認済
Text generation web UI
→ 確認済
AzureChatGPT
→確認済
Code Interpreter実装
GPT-Code UI
→ 確認済
Code Interpreter API
→ 確認済
SlashGPT
→ 確認済
以下は不採用
GPT4Freeを使っている。
まあ業務で使うならもうこれでいい気はする。
とはいえ、オープンなChatGPT実装試すのもそれはそれで学びはあるので、引き続き。
今のところブラウザで使うなら、
🥇 LibreChat
🥈 BetterChatGPT
🥉 Chatbot UI
って感じです、個人的には。もうちょいPythonで書かれたものがあればなー、と思うけど、PythonならStreamlitとかChainlitを使うよね、という気はしてる。
text-generation-web-uiとYakGPTも試したので、それを踏まえて、現時点での個人的な評価を下に書いた。
今のところ、個人的にはLibreChat一択かなぁ。ユーザが分かれているのは良いと思うし(とはいえ管理機能は現状ないけども)、一番大きいのは開発が継続してるっぽいところ。OSSだし自分で手を入れればいいとは思うけど、やらないで済むならそれに越したことはないし、TypeScriptはあんまり自信ないのだよね。。。
もうちょいPythonで書かれたものならメンテできるかなー、と思うけど、PythonならまあStreamlitとかChainlitを使うよね、という気はする。
次はCode Interpreterクローンを試していく。
Code Interpreterクローンは、両方ともまだAgent的な動きができてなくて都度都度指示してあげないといけないので、まだまだこれからって感じ。どっちかというとGPT-Code UIのほうが現時点だとそれっぽくはなってるかなーとは思う。
中身を読んでなくて適当なことを言うと、Code Interpreter APIはLangChainで書かれているので、Agentの実装がしやすいんじゃないかな。
いずれにせよ今後に期待。
個人的まとめ
とりあえずLibreChatは、AzureでもOpenAIでも普通に使えるし、社内で使うのにも十分耐えれると思う。開発も継続してるようだし、プラグイン機構もあるので頑張ればいろいろできるだろうし。それ以外は今からだとちょっとつらいかな。
Code Interpreter系は時期尚早、ただちゃんと動くとただのチャットよりも面白いはず。
Azure公式からも。
Code InterpreterクローンがいかにCode Interpreter「らしく」振る舞えているかどうかは、
- Agentっぽくtrial and error的に振る舞ってくれるか
- Agentが誤った方向に行った場合に軌道修正を行えるUIがあるか
だとおもっている。特にUI周りはGPT-Code UIしか選択肢がない感じで、こういうのはChainlitでやればいいのでは?と思って調べてみたらすでにあった。
それぞれ別の人だけども、
- 1つ目はCode Interpreter APIにChainlitのUIをつけた感じ
- 2つ目は独自実装にChainlitのUIをつけた感じ
という感じ。
どっちかというと前者の方がコンポーネントが分かれていていいかなーとは思うけど、基本的なところだけなのでそれっぽく動かすにはいろいろ追加する必要がありそう。後者は独自実装なんだけど、プラグイン的な要素があったり、あと会話履歴も実装してある模様
で調べてたらChainlitのサンプルコードをおいたcookbookがあった。
後者のほうはコードはこちらにも入ってる。作者の方のレポジトリよりもスッキリしてるかな。
ちょっと試してみたい。
ものすごく参考になります!Chainlitだと不満な点はありますか?
Chainlitいいですよ。シンプルにチャット特化なものを作るのはとても簡単です。今ならStreamlitにChatコンポーネントあるのでそれも選択肢になるのではないかなと思います。
ありがとうございます!バージョンアップの度に移行しないといけない部分があるのでどうなのかなと思ってるんですが、認証や会話の保存ができるのがいいなと。Streamlitでもできるんですかね?プロトタイプでなく本番運用でも使えると思われますか?身近に詳しい人間がいないので質問ばかりしてしまって申し訳ありません!
一応このスクラップの主題は「社内業務向けにChatGPT相当をOSSで提供(API利用でログを取るなりというイメージ)するにはどんなものがあるか?」ということなので、WebUIフレームワークであるchainlit/streamlitそのものの話とはやや趣旨が違うかもしれません。その前提でご理解ください。
バージョンアップの度に移行しないといけない部分があるのでどうなのかなと思ってるんですが、
「移行」という意図がちょっとわからないのですが、chainlitはまだ若いプロジェクトだと思うので、v0.3.0のときのような破壊的な変更が今後あってもおかしくはないと思います。そのあたりを踏まえて技術選定をすることになるだろうとは思います。
認証や会話の保存ができるのがいいなと。Streamlitでもできるんですかね?
認証はこういうものがあるみたいですねm,私自身は使ったことはないですが。あと、ごくごく簡易なものであればsession stateとかでもできるんじゃないでしょうか。
会話の保存というのはChatGPTだと左に並ぶようなやつのことですかね?streamlitはチャットに限らないいろいろなWebアプリのUIをpythonで作りやすいというのがウリだと思いますので、chainlitに比べれば自由度は高いですが、逆に言うと、ないもの・必要なものは自分で実装することになるのではないかと思います。
プロトタイプでなく本番運用でも使えると思われますか?
冒頭にも記載しましたが、社内向けとか業務向けのOSS選定がこのスクラップの主題です。本番環境と仰ってるのは外部向けに自社プロダクトとして開発・提供する、その際のフレームワークとして使用したい、ということなのかな?と推測するのですが、そこは要件や環境などを総合的に判断して選択することになるのではないでしょうか?
少なくともプロトタイプを作るには非常に良いものだと思いますが。