AI AWS Mattermost 開発者ブログ

MattermostをEC2上に雑に立ててAIプラグインを使ってみる

ディーメイクAdvent Calendar 2023 12/06の記事です。

こんにちは、CTOのsakasaiです。

今回はディーメイクでも利用しているチャットツールMattermostAmazon EC2上で起動して、プラグイン「Mattermost AI Plugin」をインストールして試してみたいと思います。

Amazon EC2起動

最初にEC2を起動します。

以下の構成で起動します。(スペック等にとくに意味はありませんが、少し大きめにしています)

  • AMI:Amazon Linux 2023
  • インスタンスタイプ:t3.xlarge
  • ストレージ:30GiB,gp3

セキュリティグループはMattermostで使用する8065番を開放しておきます。

必要に応じてSSHやEC2 Instance Connectエンドポイントなどを許可設定してください。

EC2セットアップ

EC2が起動できたらSSH等でEC2に接続し、事前準備を行います。

最初にdocker等のインストールを行います。


# update
sudo dnf -y update

# dockerとgitをインストール
sudo dnf -y install git docker

インストールが出来たらdockerの有効化とdocker-composeを使用できるようにします。


# dockerの有効化
sudo systemctl enable --now docker
sudo systemctl status docker
sudo usermod -aG docker ec2-user
sudo chmod 666 /var/run/docker.sock

# docker-composeインストール
sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
sudo dnf --releasever=36 install docker-compose-plugin

確認します。


$ sudo docker version
Client:
 Version:           24.0.5
 API version:       1.43
 Go version:        go1.20.10
 Git commit:        ced0996
 Built:             Fri Oct 13 00:00:00 2023
 OS/Arch:           linux/amd64
 Context:           default

Server:
 Engine:
  Version:          24.0.5
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.10
  Git commit:       a61e2b4
  Built:            Fri Oct 13 00:00:00 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.7.2
  GitCommit:        0cae528dd6cb557f7201036e9f43420650207b58
 runc:
  Version:          1.1.7
  GitCommit:        f19387a6bec4944c770f7668ab51c4348d9c2f38
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0


$ sudo docker info
Client:
 Version:    24.0.5
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.0.0+unknown
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.18.1
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 0
 Server Version: 24.0.5
 Storage Driver: overlay2
  Backing Filesystem: xfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: systemd
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 0cae528dd6cb557f7201036e9f43420650207b58
 runc version: f19387a6bec4944c770f7668ab51c4348d9c2f38
 init version: de40ad0
 Security Options:
  seccomp
   Profile: builtin
  cgroupns
 Kernel Version: 6.1.61-85.141.amzn2023.x86_64
 Operating System: Amazon Linux 2023
 OSType: linux
 Architecture: x86_64
 CPUs: 4
 Total Memory: 15.41GiB
 Name: ip-XXX-XXX-XXX-XXX.ec2.internal
 ID: ce75be51-8d92-47d2-ae24-efcb63dcf99b
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false


$ sudo docker compose version
Docker Compose version v2.18.1

Mattermostのインストールと起動

次にMattermostをインストールします。

今回はMattermot公式GitHubのdockerリポジトリをcloneしてdockerで起動します。

以下の手順に沿って行っていきます

https://docs.mattermost.com/install/install-docker.html#deploy-mattermost-on-docker-for-production-use


pwd # /home/ec2-user
git clone https://github.com/mattermost/docker
cd docker/

環境設定を行います。


cp env.example .env
vi .env 

以下を変更しました。(変更点のみ抜粋)


# ドメイン設定
DOMAIN=123.456.789.000:8065 # 123.456.789.000は起動したEC2のパブリックIP
# タイムゾーン
TZ=Asia/Tokyo
# postgresバージョン
POSTGRES_IMAGE_TAG=16-alpine # 執筆時点の最新に変更(元は13-alpineでした)
# Mattermostバージョン
MATTERMOST_IMAGE=mattermost-team-edition
MATTERMOST_IMAGE_TAG=release-9.2
# MattermostのURL
MM_SERVICESETTINGS_SITEURL=http://${DOMAIN} # 元はhttps

必要なディレクトリの作成


mkdir -p ./volumes/app/mattermost/{config,data,logs,plugins,client/plugins,bleve-indexes}
sudo chown -R 2000:2000 ./volumes/app/mattermost

ここでMattermostの起動を行います。


sudo docker compose -f docker-compose.yml -f docker-compose.without-nginx.yml up

正常に起動したらブラウザからアクセスします。

http://123.456.789.000:8065/ # 123.456.789.000は起動したEC2のパブリックIP

今回はブラウザのまま続けます。

ユーザーを作成します。

初期設定を行います。

不要な箇所はスキップでOKです。

設定が終わるとMattermostのチャット画面になります。

最初に日本語化だけ行っておきます。

システムコンソール画面でデフォルトの言語を日本語にします。

設定できたらチャット画面に戻ってユーザーの設定で言語を日本語にします。

日本語化出来ました。

一応チャットができるか確認しておきます。

問題なさそうです。

Mattermost AI Pluginの設定

それではAIプラグインのインストールを行っていきます。

最初にMattermostのシステムコンソールでプラグインをインストールするために、プラグインのアップロード許可設定を行います。

一度Ctrl+Cでdockerコンテナを停止し、configを編集します。


sudo vi volumes/app/mattermost/config/config.json

以下を変更しました。


    "PluginSettings": {
        "Enable": true,
        "EnableUploads": true, // falseからtrueに変更

次に以下のGitHubリリースページから最新のプラグイン(tar.gzファイル)をダウンロードしておきます。

https://github.com/mattermost/mattermost-plugin-ai/releases

再度、Mattermostを起動します。


sudo docker compose -f docker-compose.yml -f docker-compose.without-nginx.yml up

起動できたらシステムコンソールを開き、プラグイン管理を開きます。

「プラグインをアップロードする」でダウンロードしたプラグインをアップロードします。

完了すると左メニューに「Mattermost AI Plugin」が出てきます。

「Mattermost AI Plugin」を開き、有効化します。

保存するとプラグインの設定ができるようになります。

Add AI Serviceをクリックし使用するAIを追加します。

今回はOpenAIのAPIを使って、モデルにgpt-3.5-turboを使用する設定にしました。

完了したら保存して、次にチーム設定でAIプラグインのユーザーをチームに加えます。

完了したら保存してチャット画面に戻ります。

Mattermost AI Pluginを使ってみる

まずはチャンネル内で使ってみます。

チームに追加したメンバーにメンションする形で使用することが出来ます。

スレッドで返信が返ってきます。

日本語で話しかけてみます。

ちゃんと返ってきますね。

注意点としては、チャンネル内で会話する場合、必ずメンションをつけないといけないようです。

次にプラグインのもう一つの機能、スレッドの要約をしてもらいます。

Summarize Threadをクリックするとユーザーからダイレクトメッセージで要約が返ってきます。

日本語にしてもらいました。

DMの場合はメンションなしでも会話を続けることができるようです。

その他プラグインでできることなどはGitHubページのREADMEを参照してください。

https://github.com/mattermost/mattermost-plugin-ai/blob/master/README.md

また、MattermostではOpenOpsというフレームワークでMattermostでAIを利用する環境がセットアップできるものも用意されています。

https://github.com/mattermost/openops

https://mattermost.com/blog/open-source-ai-framework/

・このプラグインは現在実験段階です。利用は自己責任でお願いします。
・現時点ではデータベースにMySQLを使用している場合、Mattermost AI Pluginを利用できないようです。
 https://github.com/mattermost/mattermost-plugin-ai/issues/19
・OpenAIを利用する場合、別途APIの利用料が発生しますのでご注意ください。

最後に

MattermostをAmazon EC2上で立ち上げて利用する方法と、Mattermost AI Pluginについて確認しました。

今回は簡単に確認するために環境を作ったので、実際にチャットツールとして使うにはサーバー設定含め考慮しなくてはいけない箇所がありますが、一旦試すだけなら簡単に環境ができることがわかったと思います。

今回は確認しませんでしたが、Mattermost AI PluginではOpenAIの他にもローカルLLMなども使用できるようなので、そちらを試してみるのもいいかと思います。

Mattermostも他のチャットツールと同様にAIを使った機能が今後も充実していくと思うのでチェックしていきたいと思います。

宣伝

ちゃんとしたMattermost環境を利用したいという方はディーメイクでも導入支援サービスを行っていますので、チェックしてみてください。

https://chat.remocla.online/lp/


Recruit

ディーメイクでは各ポジションで一緒に働く仲間を募集中! エンジニア、デザイナー、ディレクターなど、多彩な職種があります。
一緒に成長していきましょう!

最新記事

おすすめ記事リンク

-AI, AWS, Mattermost, 開発者ブログ
-, ,