LibreChatで社内版ChatGPTを構築
概要
社内版ChatGPTを構築しようということで、OSSであるLibreChatを利用しました。
社内版ChatGPTの導入に至った経緯やその後の効果測定については弊社ブログ記事をご覧ください。
https://blog.gmo.media/internal-chatgpt
今回のZennの記事はシステム構築編となります。
AIはどのサービスを使うか
弊社ではまずはAzure OpenAI Service(AOAI)を採用することにしました。
LibreChatではOpenAI公式のAPIを利用することも可能です(最近AssistantAPIに対応した模様)
基盤まわり
社内全体で使えるドメインがRoute53で管理していることと、AWSの経験者が多いのもあり
サーバ周りはAWSで構築しました。
また、弊社では全社員がGoogleWorkSpaceを使用しているため、認証についてもGoogleのOAuthを活用しました。
後述のLibreChatの.envにクライアントIDなどを設定するだけで簡単に認証が構築できて便利です。
スペックなど
EC2スペック: t4g.medium(arm64系なのでLibreChat公式ビルドは使えません。自前でビルドが必要です)
実際のメモリ使用量はこんな感じです。smallでもギリギリ動くかも
NAME CPU % MEM USAGE / LIMIT MEM %
LibreChat 0.00% 271.4MiB / 3.746GiB 7.07%
mongo-express 0.00% 45.72MiB / 3.746GiB 1.19%
chat-mongodb 0.44% 192MiB / 3.746GiB 5.00%
chat-meilisearch 0.05% 473MiB / 3.746GiB 12.33%
LibreChatの導入
Chromeの翻訳機能を使うとよいでしょう。
Google認証
社内の人だけ使用するため、ユーザタイプは"内部" を選択。
Azure OpenAI Service(AOAI)
弊社では現在、WEST US (米国西部)を使用しています。
東日本リージョンだとGPT-4-Turbo(1106‐Preview)がまだ利用できません。
現在使用できるモデルはこちらをどうぞ
ちょっと苦戦したポイントのみ解説します
AZURE_API_KEY
サブスクリプション内にあるキーとエンドポイントから参照し、設定します
AOAI側の設定
以下にあるモデルが、現在そのリージョンで利用可能なモデルです。
そのモデルを使用して、デプロイを作成します
そして、.envでは以下のようにしました
AZURE_API_KEY=hogehoge
AZURE_OPENAI_MODELS=gpt-4-1106-preview,gpt-4-vision-preview
AZURE_OPENAI_DEFAULT_MODEL=gpt-4-1106-preview
PLUGINS_USE_AZURE="true"
AZURE_USE_MODEL_AS_DEPLOYMENT_NAME=TRUE
AZURE_OPENAI_API_INSTANCE_NAME=hoge
AZURE_OPENAI_API_DEPLOYMENT_NAME=gpt-4-1106-preview
AZURE_OPENAI_API_VERSION=2023-05-15
動作イメージ
OpenAIのChatGPTとそっくりなUIなので、違和感なく利用できますね。
地味に便利なのが、自分の会話の直下にある編集マークを押すことで、その会話を編集したプロンプトを再度なげることができます。
例えば途中で送信してしまったり、もう少し詳しく指示を出し直したいときに便利です。
統計(利用状況調査)
DataGripなど、MongoDBに直接接続することで利用状況の統計をとることができます。
- LibreChat.users : ユーザ一覧
- LibreChat.messages : 会話内容
- LibreChat.transactions : 会話ごとのトークン数など。rawAmountがトークン数
今後の方針
OpenAI公式とAOAIを比べるとAOAIがストリーミングが遅いです。
これは国内リージョンではないせいかのか Azureなのか、まだわからないところです。
国内リージョンでGPT-4-Turboが利用可能になったら検証予定です。
Discussion