2024/6/23更新
DifyがIAMロールに対応しましたので、更新版の投稿を行いました。
DifyをEC2上に構築してBedrockと接続する手順(IAMロール対応版)
LiteLLMを使用する構成は参考になると思いますので、本投稿もぜひ御覧ください。
話題のDifyをEC2上に構築してみました。Amazon Linux 2023(t3.medium)で試しました。
環境準備
Gitインストール
sudo dnf install -y git
Dockerインストール
sudo dnf install -y docker
sudo usermod -aG docker $USER
一度ログアウトして再度ログイン
sudo systemctl start docker
docker version
Client:
Version: 25.0.3
API version: 1.44
Go version: go1.20.12
Git commit: 4debf41
Built: Mon Feb 12 00:00:00 2024
OS/Arch: linux/amd64
Context: default
Server:
Engine:
Version: 25.0.3
API version: 1.44 (minimum version 1.24)
Go version: go1.20.12
Git commit: f417435
Built: Mon Feb 12 00:00:00 2024
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.7.11
GitCommit: 64b8a811b07ba6288238eefc14d898ee0b5b99ba
runc:
Version: 1.1.11
GitCommit: 4bccb38cc9cf198d52bebf2b3a90cd14e7af8c06
docker-init:
Version: 0.19.0
GitCommit: de40ad0
Docker Composeインストール
mkdir $HOME/.docker
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
docker compose version
Docker Compose version v2.27.0
構築
docker-composeが用意されてます。
git clone https://github.com/langgenius/dify.git
cd dify/docker
docker compose up
コンテナイメージをPULLしたあとで起動。
簡単ですね!
使ってみる
ログインしてみましょう。
Bedrockを設定します。右上のメニューから設定
をクリックします。
モデルプロバイダー
を選択すると、Bedrock
がいます。
しかし、この画面、アクセスキー
とシークレットアクセスキー
が必須入力です。
せっかくEC2上で起動しているので、 権限管理はIAMロールでしたい
2024/5/7時点で、Issueが上がっていますが、まだOpen状態です。
ということで、無理やりIAMロールでBedrockを呼び出す形式に変更します。
追加するもの
以前こちらで紹介したLiteLLM
を使います。
手順
一度、Docker Compose
を停止します。(trl + C
)
まず、LiteLLMの設定ファイルを作成します。
model_list:
- model_name: bedrock/claude-3-haiku
litellm_params:
model: bedrock/anthropic.claude-3-haiku-20240307-v1:0
つづいて、docker-compose.yaml
にLiteLLMを追加します。末尾に以下の記述を追加します。
litellm:
image: ghcr.io/berriai/litellm:main-latest
volumes:
- ./litellm/config.yaml:/app/config.yaml
environment:
AWS_REGION: us-east-1
expose:
- 4000
command: [ "--config", "/app/config.yaml" ]
以上です。
docker compose up
モデルプロバイダーの画面でOpenAI-API-compatible
を選択します。
以下の値で設定します。
項目 | 値 |
---|---|
Model Name | bedrock/claude-3-haiku |
API Key | sk-********** ※必須項目ではないですが、入力が必要です |
API endpoint URL | http://litellm:4000 |
これでめでたく、アクセスキーとシークレットキー無しでBedrockが呼び出せます
こういう用途にもLiteLLMいいですね!