とほほのDify入門

目次

Difyとは

対象バージョン

本書は下記のバージョンを対象として執筆しています。

Date: 2025-10-19
Windows : Windows 11 Home 24H2
WSL : WSL2
Linux : Ubuntu 24.04
Docker : 28.5.1
Docker Compose : 2.40.0
Dify : 1.9.1

インストール

WSL2 のインストール

WSL2 がインストールされていない場合は [コマンドプロンプト] を起動して WSL2 をインストールします。Docker Desktop for Windows を利用している場合は Docker Desktop のバックエンドも WSL2 である必要があります。

wsl --install

Ubuntu 24.04 のインストール

WSL2 上に Ubuntu の最新安定版 24.04 をインストールします。

wsl --list --online
wsl --install Ubuntu-24.04

インストールできたら、Ubuntu 24.04 を起動します。

wsl --distribution Ubuntu-24.04

Docker, Docker Compose のインストール

Ubuntu 24.04 上に Docker と Docker Compose をインストールします。

# 作業ディレクトリ(例えば$HOME)に移動する
cd $HOME

# コンフリクトしそうなパッケージを削除する
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc
  do sudo apt-get remove $pkg
done

# Dockerレポジトリを追加する
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
  https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

# Docker CE と Docker Compose をインストールする
sudo apt-get -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

RHEL/AlmaLinux/Rockey Linux 系であれば下記で構いません。

dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
dnf -y install docker-ce docker-ce-cli

Docker を起動します。

sudo systemctl start docker
sudo systemctl enable docker

Dify のインストール

Dify をコンテナとして起動します。

git clone https://github.com/langgenius/dify.git
cd dify/docker
sudo docker compose up -d

ブラウザから下記にアクセスし、管理者のメールアドレス、ユーザー名、パスワードを設定してください。

http://localhost/install

Dify の画面構成

Dify を使ってみる

ログイン・ログアウト

ログインする

ログアウトする

プラグインをインストールする

モデルをインストールする

ツールをインストールする

アプリを作成する

チャットボット

エージェント

テキストジェネレーター

変数を使用する

チャットフロー

ワークフロー

APIから呼び出す

ワークフローをAPIから呼び出す

RAG

ナレッジを登録する

チャットボットからナレッジを利用する

ワークフローからナレッジを利用する

ナレッジ登録時のパラメーター

エクスポート・インポート

DSLにエクスポート

DSLからインポート

ノード

ワークフローやチャットフローでは下記のブロックノードを使用することができます。

開始

ワークフローやチャットフローの開始ポイントとなるノードです。

終了

ワークフローの終了ポイントとなるノードです。

回答

チャットフローの終了ポイントとなるノードです。

LLM

LLM(大規模言語モデル)ノードです。

RAG 機能として [ナレッジ] を検索します。

エージェント

ユーザーからの問い合わせに応じて AI を用いてツールを自動的に選択・実行することができるノードです。

質問分類器

入力内容に応じて [クラス1] と [クラス2] ... などに分岐します。[IF/ELSE] ノードと似ていますが、[IF/ELSE] ノードが厳密な条件によって機械的に分岐するのに対して、[質問分類器] ノードは LLM を用いた推論により分岐します。

IF/ELSE

変数が指定した文字列を含んでいるなどの条件を指定して処理を分岐します。[質問分類器] と似ていますが、[質問分類器] が LLM を用いた推論によって分岐するのに対して、指定した文字列を含んでいるかなどの単純なルールで分岐します。

イテレーション

配列型変数の個々の要素に対してサブワークフローを実施した結果を返します。

使用例を下記に示します。

ループ

条件を満たすまでループするノードです。

ループノード自体は出力変数をサポートしないので、チャットフローの会話変数を用いた実行例を下記に示します。

コード実行

Python3 または JavaScript のコードを実行するノードです。

テンプレート

Jinja2 のテンプレートを用いて文字列整形するノードです。

変数集約器

IF/ELSE ノードなどで分岐したノードの出力変数をひとつの出力変数にまとめます。

下記に使用例を示します。

下記にグループを使用した例を示します。

テキスト抽出

ファイルを読み込みテキストを抽出します。ファイルは TXT, MARKDOWN, PDF, HTML, DOCX 形式などをサポートしています。画像や動画は対応していません。

変数代入

受け取った変数を 会話変数 に代入します。会話変数はチャットの流れの中で常時記憶しておくメモリの役割を担います。

下記に使用例を示します。

パラメータ抽出

テキストから構造化されたパラメータを LLM を用いて抽出します。

下記に使用例を示します。

HTTPリクエスト

HTTPリクエストを発行するノードです。

リスト処理

リスト型の変数に対して処理を行います。

コメント

ブロックノードではないですが、ワークフロー編集画面でマウスを右クリックして [コメントを追加] でコメントを追加することができます。ノードの近くにおいて処理内容のメモを記載することができます。

ツール

ツール

ワークフローで使用する下記などのツール群があります。

カスタム

ワークフロー

MCP

変数

システム変数

ユーザー変数

会話変数

環境変数