🐢Dify | インストール

英語版の記事は[こちら](https://qiita.com/vb-long/items/e92cbfd594fb978bb66d)です。

## Dify
[Dify](https://github.com/langgenius/dify)は、AGIアプリケーションを構築するためのオープンソースGUIプラットフォームです。今回は、[Langchain](https://github.com/langchain-ai/langchain)での開発前に、Difyを使用して迅速にプロトタイプを作成し、テストをします。

## ローカルインストール
Difyのデフォルト設定を使用して簡単にインストールできます

### 必要条件
以下の最低システム要件を満たし、[Docker](https://docs.docker.com/get-docker/)および[Docker Compose](https://docs.docker.com/compose/install/)がインストールされていることを確認してください。
- CPU：2コア以上
- RAM：4GB以上

### ステップ1：Difyをクローンする
Difyリポジトリをクローンします
```powershell
git clone https://github.com/langgenius/dify.git
```
実際には[dify/docker](https://github.com/langgenius/dify/tree/main/docker)ディレクトリのみが必要です

### ステップ2：Difyを起動する
dockerディレクトリに移動し、以下のコマンドを実行します
```powershell
cd dify/docker
docker compose up -d
```

結果：
```powershell
[+] Running 11/11
 ✔ Network docker_default             Created    0.0s
 ✔ Network docker_ssrf_proxy_network  Created    0.0s
 ✔ Container docker-ssrf_proxy-1      Started    1.7s
 ✔ Container docker-db-1              Started    1.6s
 ✔ Container docker-weaviate-1        Started    1.6s
 ✔ Container docker-redis-1           Started    1.7s
 ✔ Container docker-sandbox-1         Started    1.7s
 ✔ Container docker-web-1             Started    1.7s
 ✔ Container docker-api-1             Started    2.3s
 ✔ Container docker-worker-1          Started    2.2s
 ✔ Container docker-nginx-1           Started    2.8s
 ```

### ステップ3：コンテナのステータスを確認する
以下のコマンドを実行して、すべてのコンテナが正常に稼働しているか確認します
```powershell
docker compose ps
```

結果：
```powershell
NAME                  IMAGE                              COMMAND                   SERVICE      CREATED         STATUS                   PORTS
docker-api-1          langgenius/dify-api:0.6.10         "/bin/bash /entrypoi…"   api          5 minutes ago   Up 5 minutes             5001/tcp
docker-db-1           postgres:15-alpine                 "docker-entrypoint.s…"   db           5 minutes ago   Up 5 minutes (healthy)   5432/tcp
docker-nginx-1        nginx:latest                       "/docker-entrypoint.…"   nginx        5 minutes ago   Up 5 minutes             0.0.0.0:80->80/tcp
docker-redis-1        redis:6-alpine                     "docker-entrypoint.s…"   redis        5 minutes ago   Up 5 minutes (healthy)   6379/tcp
docker-sandbox-1      langgenius/dify-sandbox:0.2.1      "/main"                   sandbox      5 minutes ago   Up 5 minutes
docker-ssrf_proxy-1   ubuntu/squid:latest                "entrypoint.sh -f /e…"   ssrf_proxy   5 minutes ago   Up 5 minutes             3128/tcp
docker-weaviate-1     semitechnologies/weaviate:1.19.0   "/bin/weaviate --hos…"   weaviate     5 minutes ago   Up 5 minutes
docker-web-1          langgenius/dify-web:0.6.10         "/bin/sh ./entrypoin…"   web          5 minutes ago   Up 5 minutes             3000/tcp
docker-worker-1       langgenius/dify-api:0.6.10         "/bin/bash /entrypoi…"   worker       5 minutes ago   Up 5 minutes             5001/tcp
```

## Difyへのアクセス
Difyを使用するには、[http://localhost/install](http://localhost/install)にアクセスします

以前にDifyを使用している場合はログイン画面が表示されます、初めての場合はアカウントを作成します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3809913/74571120-ef95-801c-cf85-d18f2d9978c3.png)

ワークスペースは次のように表示されます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3809913/ee7fc8a8-92ba-cb54-186e-d9fbd9422d16.png)

## モデルの設定
右上隅をクリックし、`Settings > Model Provider`を選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3809913/50a44ec4-7433-3365-5053-a901e0238a1e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3809913/2145ecd7-f935-0144-f9ec-f2515ee9026f.png)

### [Ollama](https://www.ollama.com/)を使用する
1. [https://www.ollama.com/](https://www.ollama.com/)にアクセスし、システムに適したOllamaクライアントをダウンロードします
2. Ollamaを実行します（Llama2を使用しますが、他のモデルを選択することもできます。詳細は[Olamaモデル](https://ollama.com/library)を参照してください）
```powershell
ollama run llama2
```
3. `http://localhost:11434`で起動を確認します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3809913/cc8eb386-e43b-44f3-15ad-5b28d818bd05.png)

4. OllamaをDifyに統合する
    - 下にスクロールしてOllamaを選択します
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3809913/c43d4e3d-5331-d987-6234-3adaa65c73ba.png)
    - 次の項目を入力します：
        - Model Name：llama2
        - Base URL：`http://<your-ollama-endpoint-domain>:11434`
        私はDifyをdockerから実行するので、Base URLを`http://host.docker.internal:11434`に設定します。
        Base URLには、Ollamaサービスがアクセス可能なURLを入力します。
        - Model type：Chat
        - Model Context Length：4096
        モデルの最大コンテキスト長です。不明な場合はデフォルト値の4096を使用してください。
        - Maximum Token Limit：4096
        モデルが返すトークンの最大数です。特定の要件がない場合は、モデルのコンテキスト長と一致させることができます。
        - Support for Vision：はい
        モデルが画像理解（マルチモーダル）をサポートしている場合、このオプションをチェックします（例えばllava）。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3809913/9e4d8a5a-fc31-bfab-5511-07e0d0d10e12.png)

### [OpenAI](https://openai.com/index/openai-api/)を使用する
現在、私はOpenAIを使用してプロトタイプを作成してテストしています

OpenAIを選択し、APIキーを入力するだけで十分です
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3809913/4aacbfd6-bc3e-f03b-221d-8328c7cc7cdf.png)

これですべて完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3809913/b6f83131-bc9f-8619-c1d9-75dd604125cf.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3809913/1390d0b1-c254-9084-cd20-712bcc8b2480.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3809913/8e653d98-9f59-4006-b432-2f8d197013bb.png)