Closed8

ChatGPTクローンを試す(LibreChat編)

kun432kun432

LibreChat

https://github.com/danny-avila/LibreChat

  • JavaScript製
  • OpenAI/Azure OpenAIだけでなく、 BingAI、ブラウザChatGPT、 PaLM2、Anthropic (Claude)も選べる。
  • 本家にない機能が使える
  • プラグインが利用できる?

これはちょっと期待できそう?

インストール

インストール方法は色々用意されているけどDockerで。
https://github.com/danny-avila/LibreChat/blob/main/docs/install/docker_install.md

$ git clone https://github.com/danny-avila/LibreChat && cd LibreChat

でdocker-compose.yamlはこんな感じ。特に変更はいらなさそう。

https://github.com/danny-avila/LibreChat/blob/main/docker-compose.yml

APIキーを設定。

$ cp -pi .env.example .env

Azure周りの設定はこの辺。

##########################
# AZURE Endpoint:   
##########################

# To use Azure with this project, set the following variables. These will be used to build the API URL.
# Chat completion: 
# `https://{AZURE_OPENAI_API_INSTANCE_NAME}.openai.azure.com/openai/deployments/{AZURE_OPENAI_API_DEPLOYMENT_NAME}/chat/completions?api-version={AZURE_OPENAI_API_VERSION}`;
# You should also consider changing the `OPENAI_MODELS` variable above to the models available in your instance/deployment.
# Note: I've noticed that the Azure API is much faster than the OpenAI API, so the streaming looks almost instantaneous.
# Note "AZURE_OPENAI_API_COMPLETIONS_DEPLOYMENT_NAME" and "AZURE_OPENAI_API_EMBEDDINGS_DEPLOYMENT_NAME" are optional but might be used in the future

# AZURE_API_KEY=
# AZURE_OPENAI_API_INSTANCE_NAME=
# AZURE_OPENAI_API_DEPLOYMENT_NAME=
# AZURE_OPENAI_API_VERSION=
# AZURE_OPENAI_API_COMPLETIONS_DEPLOYMENT_NAME=
# AZURE_OPENAI_API_EMBEDDINGS_DEPLOYMENT_NAME=

# Identify the available models, separated by commas *without spaces*. 
# The first will be default. 
# Leave it blank to use internal settings. 
AZURE_OPENAI_MODELS=gpt-3.5-turbo,gpt-4

# To use Azure with the Plugins endpoint, you need the variables above, and uncomment the following variable:
# NOTE: This may not work as expected and Azure OpenAI may not support OpenAI Functions yet
# Omit/leave it commented to use the default OpenAI API

# PLUGINS_USE_AZURE="true"

ふむ、この書き方だとAzureはモデル一つしか選べない気がするな。デプロイメント名はモデルごとに異なるので。

あとAzureでFunction Callingが使えるようになったらプラグインで実装されるっぽいのが読み取れる。

ということでこんな感じで。

(snip)
OPENAI_API_KEY="XXXXXXXXXXXXX”
(snip)
AZURE_API_KEY=XXXXXXXXXXXXX
AZURE_OPENAI_API_INSTANCE_NAME=xxxxxxxx
AZURE_OPENAI_API_DEPLOYMENT_NAME=gpt-35-turbo
AZURE_OPENAI_API_VERSION=2023-05-15
AZURE_OPENAI_MODELS=gpt-35-turbo

エンドポイント名は"https://xxxxxxx.openai.azure.com"の先頭部分(xxxxxxx)だけなので注意。デプロイメント名とそれに紐づくモデル名は適宜修正。

あと複数プラットフォームのモデルを使えるようなのでOpenAIも有効にしてみた。

起動

$ docker compose up

ブラウザでアクセスしてみるとログイン画面が表示されるので、アカウント作ってログインすればOK。登録したよ!みたいな画面も一切でないし、メールアドレス必須だけどMTAないので実際に送られているかもわからないが、ログインはできた。

ログインするとこんな感じ。見た目はほとんど同じ。

モデルはここから切り替えれる。

細かいパラメータの変更も可能。

プラットフォームごと言語モデルを切り替えることもできる。今回はOpenAI/Azure OpenAIしか設定していないけど、他についてもAPIキーなどの設定をしておけばよいし、この画面からも設定できる模様。

認証もあるし、ある程度のユーザ管理機能はある様子。(とはいえ管理用インタフェースはまだないらしい)。個々人で使う場合のプライバシーみたいなものも一応は守られるかも。

でなんとプラグインが実装されている!

ChatGPT公式のものと比べると少ないもののWolfram AlphaやGoogle Searchなどが用意されているので、Web検索しながら、みたいなことはできるっぽい。将来的にはプラグインを自分で開発できるようになるらしいが、ドキュメント等はまだない模様。ChatGPT公式のものと互換性があるのかも不明。

せっかくなのでSerper APIを有効にして最近のことを聞いてみた。

コンテキストがうまく引き継がれていないようにみえるけど、一応機能はしている模様。

普通にGPT-4とかでやると、会話のコンテキスト自体はちゃんと引き継がれているので、このプラグインを使う場合のコンテキストの扱いがちゃんとできてないんだと思う。

やはりしょうがないけど、OpenAIの場合はデプロイメント名の関係上、モデルを一つしか設定はできない。とはいえ、ストリーミングもちゃんと動いてるので、Chatbot UIやBetterChatGPTよりも自然に支える。

スマホでも使える。Chatbot UIやBetterChatGPTでもできるかどうかは確認できてない。

あと個人的に熱い!と思ったのは、MeiliSearchが動いている。ドキュメント検索と連動か?!とちょっと期待したのだけど、現時点ではチャット内容の全文検索ができるだけらしい(ログ的な感じに近い)。ただ一応そういう想定もあるようなので、将来的に期待したい。

所感

  • かなりChatGPTに寄せてきている感ある。
  • Chatbot UIやBetterChatGPTにあったようなプロンプトや履歴を管理しやすく、みたいな使い勝手を良くする機能追加、というよりは、いろいろなプラットフォームの言語モデルに広く対応って感じの方向性に思える。
  • プラグインはやっぱり期待感ある。(追記:ChatbotUIもプラグイン機構はあった)
  • Azureに関して言うと、これまでの3つの中では一番しっかりしているように思える。AzureでFunction Callingが対応したときのことを想定しているもの良い。

機能的には一番豊富な印象。アカウントがちゃんと別になってるのは良いし、OAuth認証なんかもあったりするので、社内で建てるとかならここまで紹介してきた中では一番良さそうに思える

あと、Chatbot UIはほぼ開発が止まっていて、BetterChatGPTも開発スピードやややゆっくりに見えるのに対して、LibreChatはかなりの頻度でコミットが頻繁に走ってるのも、今後に期待ができそう。

kun432kun432

ChatGPTプラグインとの互換性はある模様

This update introduces ChatGPT Plugins (OpenAPI specs) for use with our Plugins endpoint! One of the main use cases we gain from integrating them to LibreChat is to allow use of official plugins with gpt-3.5 models, and without ChatGPT Plus. Read the full documentation to learn how to add/configure them, although I've included some.

https://github.com/danny-avila/LibreChat/releases/tag/v0.5.5

kun432kun432

バージョンアップ

普通ならこれでOK。breaking changesとかもあるので、そのあたりはリリースノート見て確認(.envの項目がけっこう変わってたりするし)

$ git pull
$ docker compose build --no-cache
$ docker compose up

バックグラウンドで動かしてないのは、v0.5.7からv0.6.0にアップデートしたら、なんかディレクトリの権限おかしくなってたみたいで、MeilisearchとMongDBコンテナが動かなかったので、ちゃんと起動してるかを確認するため。

$ chownr -R xxx:xxx data-node
$ chownr -R xxx:xxx meili_data

問題なければこれで。

$ docker compose up -d
kun432kun432

久々にアップデートした。v0.6.10。.envにも変更いろいろ入ってるのでそこは確認。それ以外は上の手順でOK。Claude3にもGeminiにも対応してて良きだなー。あとはCohereに対応して欲しいところ。

過去のバージョンではフォントのライセンス問題があるようなので、引き続き使いたい場合はv0.6.10にアップデートする必要があるとのこと。

https://github.com/danny-avila/LibreChat/releases

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