LibreChatでAzure OpenAIを使う

# はじめに

[LibreChat](https://www.librechat.ai/) で [Azure OpenAI Service](https://azure.microsoft.com/ja-jp/products/ai-services/openai-service)を使うまでの手順を記載しています。
本手順は Windows11 に WSL2 および AlmaLinux9 をインストールした環境で実施しました。

LibreChat は Docker で動作させます。
Docker Desktop は一定規模の企業だと有料となるため利用しません。

RHEL 系の Linux であれば手順変わらずそのまま実施できると思います。
また、LibreChat の設定値などは他 OS でも共通なので、参考になると思います。

WSL2 における AlmaLinux9 の環境構築は、下記記事をご参照ください。
https://qiita.com/ackyv7/items/dee531e64731c7d5f446

:::note warn
本記事は LibreChat v0.75 を基準に作成しています。
他のバージョンだと設定ファイルの変更行数などが異なる可能性があるので、ご注意下さい。
:::

## LibreChat とは

ChatGPT のような Web UI を持つ OSS の AI チャットプラットフォームです。
![LibreChat_Chat.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402149/435505d2-782d-22b1-df88-56ab328b4a35.png)
様々な AI モデルに対応しており、認証機能なども有しています。
ユースケースとして、企業内でチャットボットを作成・提供する場合などが挙げられます。

主な特徴は下記です。

-   **UI が直感的に使える**
    -   ChatGPT ライクなインターフェースで、リアルタイムストリーミング機能が提供されています。
-   **多様な AI モデルが使える**
    -   AWS Bedrock、Azure OpenAI、Anthropic、OpenAI、などのモデルが利用可能です。
-   **カスタムプリセットの作成と共有**
    -   プロンプトなどの設定が保存でき、共有することが可能です。
-   **マルチモーダルに対応している**
    -   画像解析やファイルを用いた対話が可能です。
-   **日本語に対応している**
    -   企業などで利用する場合でも安心です。
-   **会話のインポートとエクスポートができる**
    -   会話履歴のエクスポートやインポートが可能です。
-   **OSS かつ商用利用も可能**
    -   コードは GitHub で公開されており、MIT License なので商用利用も可能です。

## 前提

Azure の Azure AI services 上に OpenAI のリソースおよびモデルがデプロイされていることを前提とします。
私の環境では「GPT-4o」がデプロイされており、これを LibreChat で利用します。

# 手順

WSL において、sudo 権限を持つ一般ユーザでコマンドを実行していきます。

## Docker のインストール

LibreChat を動かすため、Docker をインストールします。

### リポジトリの追加

```shell:コマンド
sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
```

### インストール

```shell:コマンド
sudo dnf install docker-ce -y
```

### バージョン確認

```shell:コマンド
docker --version
```

```shell:結果
Docker version 27.3.1, build ce12230
```

### 自動起動設定
```shell:コマンド
sudo systemctl enable docker
```

### Dockerを起動
```shell:コマンド
sudo systemctl start docker
```

## Git のインストール

LibreChat を Clone するため、Git をインストールします。

### インストール

```shell:コマンド
sudo dnf install git -y
```

### バージョン確認

```shell:コマンド
git --version
```

```shell:結果
git version 2.43.5
```

## LibreChat のインストール

本記事執筆時点での最新版である「v0.7.5」をインストールします。
適宜 [LibreChat のリポジトリ(Tags)](https://github.com/danny-avila/LibreChat/tags)を確認し、`clone`時に適当なバージョンを指定して下さい。

### ホームディレクトリに移動

```shell:コマンド
cd ~
```

### リポジトリのクローン

```shell:コマンド
git clone https://github.com/danny-avila/LibreChat LibreChat -b v0.7.5
```

### LibreChat のディレクトリに移動

```shell:コマンド
cd ~/LibreChat
```

### 環境変数ファイル（.env）の設定

```shell:コマンド
cp .env.example .env
```

#### AI モデルの設定

`.env` ファイルを編集します。
今回は Azure OpenAI 以外は利用しない方針とします。

```env:変更前の.env（56行目）
# ENDPOINTS=openAI,assistants,azureOpenAI,bingAI,google,gptPlugins,anthropic
```

```env:変更後の.env（56行目）
ENDPOINTS=azureOpenAI
```

#### クレデンシャルの作成

下記の LibreChat の URL にアクセスし、`Generate`ボタンを押して、各種クレデンシャルを作成します。
`CREDS_KEY`, `CREDS_IV`, `JWT_SECRET`, `JWT_REFRESH_SECRET`, `MEILI_MASTER_KEY`を控えておいて下さい。

-   [Generate Credentials](https://www.librechat.ai/toolkit/creds_generator)

#### クレデンシャルの設定

.env ファイルの該当箇所を前の手順で控えたクレデンシャルに更新します。

**222 ～ 223 行目**

```env:変更前の.env
CREDS_KEY=f34be...
CREDS_IV=e2341...
```

```env:変更後の.env
CREDS_KEY=xxxxx...
CREDS_IV=xxxxx...
```

**289 行目**

```env:変更前の.env
MEILI_MASTER_KEY=DrhYf...
```

```env:変更後の.env
MEILI_MASTER_KEY=xxxxx...
```

**369 ～ 370 行目**

```env:変更前の.env
JWT_SECRET=16f8c...
JWT_REFRESH_SECRET=eaa51...
```

```env:変更後の.env
JWT_SECRET=xxxxx...
JWT_REFRESH_SECRET=xxxxx...
```

### 設定ファイル（librechat.yaml）の設定

LibreChat で Azure OpenAI を利用する際は、`librechat.yaml`の設定が必要です。
`.env`にも設定項目がありますが、非推奨となっています。

```shell:コマンド
cp librechat.example.yaml librechat.yaml
```

#### Azure OpenAI の情報取得

[Azure Portal](https://portal.azure.com/#home) にログインし、Azure AI Studio を開きます。
左メニューから`デプロイ`を選択します。

![Azure_AI_Studio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402149/4611b12e-3bfd-5d8b-4665-9f40000ee31e.png)

Librechat で利用したい Azure OpenAI のモデルを選択します。
![Azure_AI_Studio_Deploy_List.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402149/a6e542af-15ed-4854-a004-f2e537e69a34.png)

`librechat.yaml`に記載するため、赤枠で示した部分を控えておきます。
![Azure_AI_Studio_Deploy_Details.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402149/e006fe48-d01a-ad06-0d7a-101116b44207.png)

#### librechat.yaml の編集

Terms of service の文言やソーシャルログインの設定もありますが、ここでは Azure OpenAI の設定だけを行います。
編集前のファイルの 94 行目～ 186 行目について下記通り書き換えます。(n)には先の手順で控えた値を入れて下さい。

```yaml:librechat.yaml 変更後（94行目～）
endpoints:
  azureOpenAI:
    # Endpoint-level configuration
    titleModel: "Azure OpenAI Service"
    plugins: true
    assistants: false
    groups:
    # Group-level configuration
    - group: "Azure OpenAI Service"
      apiKey: "(1)"
      instanceName: "(2)"
      # Model-level configuration
      models:
        gpt-4o:
          version: "(3)"
          deploymentName: "(4)"
```

### docker-compose.ymlの編集
`librechat.yaml`を読み込むように編集します。
23行目～28行目の`volumes`を下記通り変更して下さい。
```yaml:docker-compose.yml 変更前（23行目～）
    volumes:
      - type: bind
        source: ./.env
        target: /app/.env
      - ./images:/app/client/public/images
      - ./logs:/app/api/logs
```

```yaml:docker-compose.yml 変更後（23行目～）
    volumes:
      - type: bind
        source: ./.env
        target: /app/.env
      - type: bind
        source: ./librechat.yaml
        target: /app/librechat.yaml
      - ./images:/app/client/public/images
      - ./logs:/app/api/logs
```

### LibreChat の起動

`docker copmose`で起動します。
イメージサイズが大きいので初回は時間がかかります。

```shell:コマンド
sudo docker compose up -d
```

### LibreChat のユーザ登録

Web ブラウザを開いて`http://localhost:3080`にアクセスしてください。
正しく設定がされていれば、LibreChat のログインページが開きます。

新規登録からユーザを作成します。
![LibreChat_Login.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402149/8e4d0b72-2a85-7ff9-6c86-57a0441e89f3.png)

適当な情報を入力します。現在の設定では新規登録に伴うメールは送信されません。
メールアドレスとパスワードはログインに使うので忘れないようにして下さい。
![LibreChat_Register.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402149/f641b7dc-7066-64f7-494f-2a141b7bd861.png)

アカウント登録が完了するとログインページに遷移するので、登録した情報でログインします。
トップページが表示され、AI モデルに Azure OpenAI が表示されていることを確認します。
![LibreChat_Top.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402149/c14dd926-0cef-e5a4-9782-282ce7b15d1e.png)

メッセージを送信し、エラーにならなければインストール完了です。
![LibreChat_Chat.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402149/435505d2-782d-22b1-df88-56ab328b4a35.png)

以上となります。おつかれさまでした。
不明点や誤りあればお知らせ頂けますと幸いです。