Dify入門ガイド:初期セットアップ

Dify入門ガイド:環境構築

SIOS Tech Labの龍ちゃんです。2024年は「誰でも簡単に」AIツールが作れるDifyが登場して大いに沸いていましたね。弊社では、Azureを利用したサービス開発が多くあるため、Azure OpenAI Serviceがリリースしてそちらばかり触っていました。2025年はDifyなどのノーコード・ローコードツールを駆使して、AIサービスの開発・検証を進めていきたいと考えています。

いまから入門:Difyとは

生成AIアプリ開発ツール「Dify」の特徴については、おそらく皆さんなんとなくわかっているかと思います。実際触ってみた感想としては、手軽さに驚いています。

専門的なAIエンジニアやアプリエンジニアがいなくても、GUIの操作で簡単に生成AIアプリを作ることができます。また、豊富なLLMモデルと接続することができるので、異なる会社提供のLLMを同じ環境で動作するアプリなども自作することができます。

また、OSSでソースコードが提供されているので、必要に応じてどこまでもカスタマイズを行うことができます。非エンジニアからエンジニアまで、幅広いユーザー層にとって有用なツールです。

Difyブームも落ち着いて、ドキュメントやナレッジも豊富になった2024年でした。幅広い領域で使用ユーザーがいる生成AI活用ツールとして弊社でも注目していました。これから入門して追いつきたい方に向けてナレッジをまとめていきます。

Dify開発環境

Difyの開発をお手軽に始める方法としては、「Dify Cloud」「Docker Compose」「ローカルソースコード」が提供されています。複数の観点で利点などをまとめた表が以下になります。

開発環境手軽さカスタマイズ性デプロイ
Dify Cloud不要
Docker ComposeDocker環境
ローカルソースコード複数必要
開発環境ストレージ複数ユーザーSSO
Dify Cloudクラウドプラン次第構築済
Docker Compose実行環境可能要構築
ローカルソースコード実行環境に保存可能要構築

Dify Cloud」は一番お手軽に始めることができます。サイトにアクセスしてGoogleでログインすれば、すぐに利用開始です。非エンジニアの方が試すには、一番楽な方法となります。

Docker Compose」では、Docker環境が必要になります。ソースコードをGitから持ってきて、Docker Composeコマンドを実行するだけで環境を立ち上げることができます。情報も実行環境に保存されるため、ローカル実行ではローカルに情報が保存されます。

ローカルソースコード」では、複数の環境(データベース,Python,Node,etc…)が必要なります。ソースコードをGitから持ってきて複数の環境での起動が必要になるため、だいぶ上級者向きの環境構築となります。それぞれの環境をコードレベルで起動することができるので、カスタマイズ性はとても高いです。

それぞれの環境の特徴としてはこんな感じ!

  • Dify Cloude:とてもお手軽!非エンジニアの方はここから始めよう
  • Docker Compose:クラウド上で作業したくないエンジニア、カスタマイズはあんまりしないけどローカルマシンで実行したい人向け
  • ローカルソースコード:がっつりカスタマイズしたい人向け!起動までの道のりは長い!

今回のガイドでは、「Dify Cloud」と「Docker Compose」での環境構築について記載していきます。

Dify Cloud

事前準備として以下のものが必要となります。

  • 有効なメールアドレス or Google アカウント or GitHubアカウント

Dify.aiにアクセスしてログインすれば、すぐに利用可能です。以下、最初の画面です。

1人での利用で、軽いお試しであれば無料プランで作業することができます。複数人で開発を進めたい場合は、Planをアップグレードが利用可能です。この辺りは、使用規模と利用用途によって変わるかと思います。

Docker Compose

事前準備として以下のものが必要となります。

  • Git
  • Docker 19.03~
  • Docker Compose 1.28~

こちらの公式リファレンスを参考に作業を進めていきます。まずはGitを使ってソースコードをローカルに持ってきましょう。

git clone https://github.com/langgenius/dify.git

持ってきたら、dokcerフォルダに移動して、環境変数をコピーしてDocker Composeを用いて起動します。

cd dify/docker

cp .env.example .env

docker compose up -d

これで、http://localhost/installにアクセスすれば、初期設定画面が出てきます。あとは画面のノリに従って設定すれば利用可能になります。

つまづいたポイント

Dify DevContainer起動

DifyのリポジトリにDevContainerの設定が入っていました。最初は、こちらで起動できるのかと考えました。環境内には、node環境、Python環境、Docker環境がセットされていました。そのため、ローカルソースコード開発用の設定だと考えられます。

Dify ナレッジが消える・ナレッジ作成ができない

Difyでは、独自の文書を知識(ナレッジ)として登録することができます。その際につまづいたポイントとしては以下になります。

  • ナレッジ作成後、すぐはナレッジ利用ができるがすぐ参照することができなくなる
  • ナレッジ作成ができない

調べていくと、DifyのDocker Composeに追加で設定をしてあげる必要が出てきました。weaviateのポート設定を追記することで解消することができました。

weaviate:
  image: semitechnologies/weaviate:1.19.0
  ports:
    - "8000:8000"
  profiles:
    - ""
    - weaviate
  restart: always
  volumes:
    # Mount the Weaviate data directory to the con tainer.
    - ./volumes/weaviate:/var/lib/weaviate
  environment:
    # The Weaviate configurations
    # You can refer to the [Weaviate](<https://weaviate.io/developers/weaviate/config-refs/env-vars>) documentation for more information.
    PERSISTENCE_DATA_PATH: ${WEAVIATE_PERSISTENCE_DATA_PATH:-/var/lib/weaviate}
    QUERY_DEFAULTS_LIMIT: ${WEAVIATE_QUERY_DEFAULTS_LIMIT:-25}
    AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: ${WEAVIATE_AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED:-false}
    DEFAULT_VECTORIZER_MODULE: ${WEAVIATE_DEFAULT_VECTORIZER_MODULE:-none}
    CLUSTER_HOSTNAME: ${WEAVIATE_CLUSTER_HOSTNAME:-node1}
    AUTHENTICATION_APIKEY_ENABLED: ${WEAVIATE_AUTHENTICATION_APIKEY_ENABLED:-true}
    AUTHENTICATION_APIKEY_ALLOWED_KEYS: ${WEAVIATE_AUTHENTICATION_APIKEY_ALLOWED_KEYS:-WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih}
    AUTHENTICATION_APIKEY_USERS: ${WEAVIATE_AUTHENTICATION_APIKEY_USERS:-hello@dify.ai}
    AUTHORIZATION_ADMINLIST_ENABLED: ${WEAVIATE_AUTHORIZATION_ADMINLIST_ENABLED:-true}
    AUTHORIZATION_ADMINLIST_USERS: ${WEAVIATE_AUTHORIZATION_ADMINLIST_USERS:-hello@dify.ai}

別環境で、localhost:8000番を使用していてポートの設定が勝手に割り振られたなどの可能性は無限大です。一度、コンテナを落として再アップしてください。

おわり

今回は、Difyの環境構築について解説しました。クラウド版とDocker Compose版の2つの方法を紹介しましたが、初めて触る方はクラウド版から始めることをお勧めします。次回は、実際にDifyを使って簡単なAIアプリケーションを作成する方法について解説していきたいと思います。

これからDifyを使ってゴリゴリ開発して、ブログ投稿していきます。

ではまた!

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメントを残す

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