🤖

LibreChatで社内版ChatGPTを構築

2024/02/20に公開

概要

社内版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の導入

https://docs.librechat.ai/install/index.html
このページにすべてが記載してあります。画像付きでとてもわかり易いです。
Chromeの翻訳機能を使うとよいでしょう。

Google認証

https://docs.librechat.ai/install/configuration/user_auth_system.html#google
社内の人だけ使用するため、ユーザタイプは"内部" を選択。

Azure OpenAI Service(AOAI)

https://docs.librechat.ai/install/configuration/ai_setup.html#azure-openai

弊社では現在、WEST US (米国西部)を使用しています。
東日本リージョンだとGPT-4-Turbo(1106‐Preview)がまだ利用できません。
現在使用できるモデルはこちらをどうぞ

https://learn.microsoft.com/ja-jp/azure/ai-services/openai/concepts/models#model-summary-table-and-region-availability

ちょっと苦戦したポイントのみ解説します

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が利用可能になったら検証予定です。

GitHubで編集を提案
GMOメディアテックブログ

Discussion