Closed22

いろいろなChatGPT/Code Interpreterクローンを試す

kun432kun432

モチベーション

ChatGPT Plusを使って入るけれども、

  • 業務に関する情報の投入はリスクがある(基本的に投入はしないとしても、強制できるわけではない)
  • データ学習を無効化できるけれども、その代わり過去のチャット履歴やプラグイン等は使えなくなる。いちいち切り替えるというのもきっと忘れそう。
  • GPT-4やCode Interpreterには利用制限がある

等、仕事で使うことを考えると少し使いにくい。

ChatGPTクローンを使うことでAPI経由での利用となり、API経由でのやりとりは言語モデルの学習には使用されないため、業務でも使いやすくなる(はず)

ということで、オープンなChatGPT実装をいくつか試してみる。基本的にはAzure OpenAI Serviceを使いたいので、その観点でいろいろ見ていく。

kun432kun432

基本的には商用利用に問題があるようなものは対象外とする方針。なのでダメそうならリストから削除します。

Chat実装

Chatbot UI

https://github.com/mckaywrigley/chatbot-ui/
→ 確認済

BetterChatGPT

https://github.com/ztjhz/BetterChatGPT/
→ 確認済

YakGPT

https://github.com/yakGPT/yakGPT
→ 確認済

LibreChat

https://github.com/danny-avila/LibreChat
→ 確認済

Text generation web UI

https://github.com/oobabooga/text-generation-webui
→ 確認済

AzureChatGPT

https://github.com/microsoft/azurechatgpt

→確認済

Code Interpreter実装

GPT-Code UI

https://ricklamers.io/posts/gpt-code/
→ 確認済

Code Interpreter API

https://blog.langchain.dev/code-interpreter-api/
→ 確認済

SlashGPT

https://github.com/snakajima/SlashGPT
→ 確認済

以下は不採用

GPT4Freeを使っている。
https://github.com/ramonvc/freegpt-webui

kun432kun432

今のところブラウザで使うなら、

🥇 LibreChat
🥈 BetterChatGPT
🥉 Chatbot UI

って感じです、個人的には。もうちょいPythonで書かれたものがあればなー、と思うけど、PythonならStreamlitとかChainlitを使うよね、という気はしてる。

text-generation-web-uiとYakGPTも試したので、それを踏まえて、現時点での個人的な評価を下に書いた。

kun432kun432

今のところ、個人的にはLibreChat一択かなぁ。ユーザが分かれているのは良いと思うし(とはいえ管理機能は現状ないけども)、一番大きいのは開発が継続してるっぽいところ。OSSだし自分で手を入れればいいとは思うけど、やらないで済むならそれに越したことはないし、TypeScriptはあんまり自信ないのだよね。。。

もうちょいPythonで書かれたものならメンテできるかなー、と思うけど、PythonならまあStreamlitとかChainlitを使うよね、という気はする。

kun432kun432

Code Interpreterクローンは、両方ともまだAgent的な動きができてなくて都度都度指示してあげないといけないので、まだまだこれからって感じ。どっちかというとGPT-Code UIのほうが現時点だとそれっぽくはなってるかなーとは思う。

中身を読んでなくて適当なことを言うと、Code Interpreter APIはLangChainで書かれているので、Agentの実装がしやすいんじゃないかな。

いずれにせよ今後に期待。

kun432kun432

個人的まとめ

とりあえずLibreChatは、AzureでもOpenAIでも普通に使えるし、社内で使うのにも十分耐えれると思う。開発も継続してるようだし、プラグイン機構もあるので頑張ればいろいろできるだろうし。それ以外は今からだとちょっとつらいかな。

Code Interpreter系は時期尚早、ただちゃんと動くとただのチャットよりも面白いはず。

kun432kun432

Code InterpreterクローンがいかにCode Interpreter「らしく」振る舞えているかどうかは、

  • Agentっぽくtrial and error的に振る舞ってくれるか
  • Agentが誤った方向に行った場合に軌道修正を行えるUIがあるか

だとおもっている。特にUI周りはGPT-Code UIしか選択肢がない感じで、こういうのはChainlitでやればいいのでは?と思って調べてみたらすでにあった。

https://medium.com/@lifanov.a.v/building-your-own-code-interpreter-with-chainlit-and-codeinterpreter-api-6540cc79bf42

https://github.com/boyueluzhipeng/GPT_CodeInterpreter

それぞれ別の人だけども、

  • 1つ目はCode Interpreter APIにChainlitのUIをつけた感じ
  • 2つ目は独自実装にChainlitのUIをつけた感じ

という感じ。

どっちかというと前者の方がコンポーネントが分かれていていいかなーとは思うけど、基本的なところだけなのでそれっぽく動かすにはいろいろ追加する必要がありそう。後者は独自実装なんだけど、プラグイン的な要素があったり、あと会話履歴も実装してある模様

で調べてたらChainlitのサンプルコードをおいたcookbookがあった。

https://github.com/Chainlit/cookbook

後者のほうはコードはこちらにも入ってる。作者の方のレポジトリよりもスッキリしてるかな。

https://github.com/Chainlit/cookbook/tree/main/openai-functions-codeinterpreter

ちょっと試してみたい。

yachimatyachimat

ものすごく参考になります!Chainlitだと不満な点はありますか?

kun432kun432

Chainlitいいですよ。シンプルにチャット特化なものを作るのはとても簡単です。今ならStreamlitにChatコンポーネントあるのでそれも選択肢になるのではないかなと思います。

yachimatyachimat

ありがとうございます!バージョンアップの度に移行しないといけない部分があるのでどうなのかなと思ってるんですが、認証や会話の保存ができるのがいいなと。Streamlitでもできるんですかね?プロトタイプでなく本番運用でも使えると思われますか?身近に詳しい人間がいないので質問ばかりしてしまって申し訳ありません!

kun432kun432

一応このスクラップの主題は「社内業務向けにChatGPT相当をOSSで提供(API利用でログを取るなりというイメージ)するにはどんなものがあるか?」ということなので、WebUIフレームワークであるchainlit/streamlitそのものの話とはやや趣旨が違うかもしれません。その前提でご理解ください。

バージョンアップの度に移行しないといけない部分があるのでどうなのかなと思ってるんですが、

「移行」という意図がちょっとわからないのですが、chainlitはまだ若いプロジェクトだと思うので、v0.3.0のときのような破壊的な変更が今後あってもおかしくはないと思います。そのあたりを踏まえて技術選定をすることになるだろうとは思います。

認証や会話の保存ができるのがいいなと。Streamlitでもできるんですかね?

認証はこういうものがあるみたいですねm,私自身は使ったことはないですが。あと、ごくごく簡易なものであればsession stateとかでもできるんじゃないでしょうか。
https://ecoagi.ai/ja/topics/Streamlit/streamlit-authentication

会話の保存というのはChatGPTだと左に並ぶようなやつのことですかね?streamlitはチャットに限らないいろいろなWebアプリのUIをpythonで作りやすいというのがウリだと思いますので、chainlitに比べれば自由度は高いですが、逆に言うと、ないもの・必要なものは自分で実装することになるのではないかと思います。

プロトタイプでなく本番運用でも使えると思われますか?

冒頭にも記載しましたが、社内向けとか業務向けのOSS選定がこのスクラップの主題です。本番環境と仰ってるのは外部向けに自社プロダクトとして開発・提供する、その際のフレームワークとして使用したい、ということなのかな?と推測するのですが、そこは要件や環境などを総合的に判断して選択することになるのではないでしょうか?

少なくともプロトタイプを作るには非常に良いものだと思いますが。

このスクラップは2023/07/30にクローズされました