Dify

Dify 三昧:DifyでAI開発を始めよう – AWS環境構築とチャットボット作成

はじめに

前回より少し時間が空いてしまいました。こんにちは、ディーネットのよろず請負、深見です。
(※最近は社内でのDify担当になっています)

前回は駆け足でしたが、Difyの概要とAWS環境での構築について簡単にご紹介しました。今回は前半で前回のおさらいとしてAWS環境での構築ポイントをまとめ、後半ではDifyアプリとしてチャットボットの作成手順を詳しくご紹介します。

実際のDifyアプリ作成を通して、Difyでのアプリケーション開発がいかに簡単であるかを体感いただけると思います。

Dify環境構築のおさらい

前回はAWS環境をベースに、Difyのコミュニティエディションを使ったサーバ構築をご紹介しました。主な構成要素は以下の通りです:

  • AWS のネットワーク環境(VPC)の作成
  • Dify サーバとなる EC2 インスタンスの準備
  • ALB(Application Load Balancer)の作成
  • Bedrock の設定

VPC の作成

特別なポイントはありませんが、注意点としてはEC2を作成するサブネットをPublicにするかPrivateにするかという選択があります。

セキュリティを考慮するとPrivateサブネットが望ましいのですが、その場合はDifyのメンテナンス作業に注意が必要です。DifyのバージョンアップなどではGitHubへのアクセスが必要となるため、NATインスタンスやNAT Gatewayの設定を検討する必要があります。

前回の構築では、この点を考慮してサブネットをPublicとして設計しました。
※Publicサブネットを選択する場合は、セキュリティグループでの制限など、適切なセキュリティ対策を講じることが重要です。

EC2 インスタンスの作成

EC2インスタンスはLinuxサーバとして構築します。推奨スペックは以下の通りです:

  • インスタンスタイプ:t3.medium(2vCPU, 4GBメモリ)
  • ディスク容量:50GB以上を推奨
  • サーバOS:Docker + docker-compose が利用できれば問題なし
    (AmazonLinux2023やAlmaLinux9系での動作確認済み、Ubuntuでも問題ありません)
  • gitコマンドも利用できるように準備

ALB の作成

Difyサーバを構築した時点では、HTTPでの通信のみとなります。一時的な利用や、セキュリティグループで自社からのアクセスのみに限定する場合は問題ありませんが、社外からのアクセスも必要となる場合はSSL化によるHTTPS通信が必要です。

ここではALBを介してDifyサーバへアクセスする構成とし、SSL証明書はACMを利用してALBに設定しています。

ALBの利用には以下のメリットがあります:

  • サイトのSSL化
  • ルールによるアクセス制御
  • Amazon Cognitoと組み合わせることによるDifyアプリへの認証機能の追加

Bedrock の設定

DifyでモデルプロバイダーとしてBedrockを利用する場合、事前にBedrockでモデルアクセスの許可(アクセスの付与)を設定する必要があります。Difyではアクセス許可を与えられたモデルのみが利用可能となります。

IAM の設定

通常、DifyでBedrockを利用するにはアクセスキーとシークレットアクセスキーが必要ですが、現在のDifyではIAMロールに対応しています。事前にEC2へIAMロールを適用しておけば、アクセスキーとシークレットアクセスキーは不要となります。

セキュリティ上、アクセスキーの使用は避けたいところですので、IAMロールでの対応が推奨されます。

以下はDifyがBedrockにアクセスするために必要なIAMポリシーの参考例です:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeModel",
                "bedrock:InvokeModelWithResponseStream"
            ],
            "Resource": "*"
        }
    ]
}

※Resourceについても、利用するモデルで制限をかけることをお勧めします。

Difyアプリ(チャットボット)の作成

それでは、実際にDifyでチャットボットアプリを作成してみましょう。

  1. Workspace上の「最初から作成」を選択
    dify-ws001

  2. 「チャットボット」を選択
    dify-ws002

  3. 「アプリのアイコンと名前」と「説明(任意)」に情報を入力し、[作成]をクリック
    dify-ws003

  4. 基本設定画面が表示されます。初回は特に設定変更せず、そのまま進みましょう

  5. [更新を公開]をクリックし、続いて[アプリを実行]をクリック
    dify-ws004

  6. ブラウザで別タブ(ウィンドウ)が開き、チャットボットとして利用できるようになります
    dify-ws005

これだけで簡単にチャットボットが作成できました!

Difyアプリ(チャットボット)の調整

チャットボットの動作調整は「手順」(プロンプト)で行います。ここでチャットボットの性格付けをし、話し方や特徴、得意分野などを設定できます。

プロンプトの記述に迷った場合は、便利なお助け機能があります:

  1. 右上の[自動]をクリックする
    dify-ws006
  2. 「プロンプト生成器」が開きます
    dify-ws007
  3. [指示]欄に希望する内容を箇条書きで記述
    dify-ws008
  4. [生成]をクリックすると、指示に沿ったプロンプトが自動生成されます
    dify-ws009
  5. 内容に問題なければ、[適用]をクリック
    dify-ws010
    ※注意:適用すると元の[手順]の内容が上書きされますので、元の内容が必要な場合は事前にコピーなどをしておいてください。
    dify-ws011

変更後は[更新を公開]をクリックし、[アプリを実行]で動作確認します。
dify-ws012

この段階ではほぼデフォルト設定での作成となりますので、イメージと異なる場合は自動生成したプロンプトを編集して調整するか、再度プロンプト生成器で作り直すとよいでしょう。

プロンプト調整は試行錯誤の過程を楽しみながら、ぜひ感覚を掴んでいただければと思います。ChatGPTを利用されている方であれば、プロンプト作成のコツはある程度理解されているかもしれません。

おわりに

今回も駆け足気味になりましたが、Dify活用の一部をご紹介できたかと思います。

「Difyを自社向けに導入したいけれど、なかなか大変そう...」と感じる方は、ぜひ当社にご相談ください。当社ではDify導入をサポートするサービスをご用意しております。詳しくは、以下のURLをご参照ください。

https://denet.ad.jp/cloudassist/aws/solution-example/dify/

今後もDify関連の記事を予定しています。ラインナップとしては:

  • Difyアプリの作成(チャットフロー、ワークフローなど)
  • Difyの機能拡張であるPluginについて
  • DifyのRAG機能におけるナレッジの詳細解説
  • DifyとAmazon Bedrockの組み合わせによる応用例
  • Difyと他のサービス(Slackなど)との連携
  • Difyアプリの定期実行方法

など、様々なトピックを予定しています。不定期での投稿となりますが、ご了承ください。


返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA