とほほのDify入門

目次

Difyとは

対象バージョン

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

Date: 2025-12-05
Windows : Windows 11 Home 24H2
WSL : WSL2
Linux : Ubuntu 24.04 LTS
Docker : 29.1.2
Dify : 1.10.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 のインストール

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

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

# コンフリクトしそうなパッケージを削除する
sudo apt remove $(dpkg --get-selections \
  docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc | cut -f1 )

# Dockerの公式GPGキーを設定する
sudo apt update
sudo apt 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

# Dockerリポジトリを追加する
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update

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

# Docker を起動する
sudo systemctl start docker
sudo systemctl enable docker

Ubuntu ではなく、RHEL/AlmaLinux/Rockey Linux 系であれば下記で大丈夫そうです。

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

Docker Compose をインストールする

次に Docker Compose をインストールしますが、スタンドアロン版のインストールは推奨されなくなり、Docker Desktop をインストールすることが推奨されているようです。

sudo apt install -y gnome-terminal
wget https://desktop.docker.com/linux/main/amd64/docker-desktop-amd64.deb
sudo apt-get update
sudo apt-get install -y ./docker-desktop-amd64.deb

Dify のインストール

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

sudo apt-get install -y jq
git clone --branch "$(curl -s https://api.github.com/repos/langgenius/dify/releases/latest \
  | jq -r .tag_name)" https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env
mkdir -p ./volumes/app/storage
sudo chown -R 1001:1001 ./volumes/app/storage
sudo docker compose up -d

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

http://localhost/install

Dify の画面構成

Dify を使ってみる

ログイン・ログアウト

ログインする

ログアウトする

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

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

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

アプリを作成する

チャットボット

チャットボット はチャットアプリを簡単に作成するものです。

エージェント

エージェント は AI が決められたタスクを実行するものです。[ツール] を用いることにより、他システムとの連携が可能です。

テキストジェネレーター

テキストジェネレーター はユーザーの入力に対して要約・翻訳などの作業を行うものです。

変数を使用する

前述のテキストジェネレーターの「{{query}}」などを 変数 と呼びます。上記で作成した「ロボテキスト」に変数を追加して、英語以外の言語にも翻訳できるようにしてみましょう。

チャットフロー

チャットフロー はチャットボットの高機能版です。キーワードを入力すると Wikipedia を調べて要約を回答してくれるチャットボットを作成してみましょう。

ワークフロー

ワークフロー は Dify の最も基本的な機能です。下記の流れのワークフローを作成してみましょう。

[ユーザー入力]
  ↓    {{ユーザー入力.query}}
[LLM]
  ↓    {{LLM:text}}
[出力]

APIから呼び出す

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

RAG

ナレッジを登録する

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

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

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

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

DSLにエクスポート

DSLからインポート

ノード

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

ユーザー入力(旧:開始)

ワークフローやチャットフローの開始ポイントとなるノードです。Dify 1.9 までは [開始] という名称でした。

回答/出力/終了

チャットフローやワークフローの終了ポイントとなるノードです。チャットフローでは [回答] という名称となります。ワークフローでは Dify 1.9 までは [終了] という名称でしたが、Dify 1.10 では [出力] に変更されました。

LLM

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

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

エージェント

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

質問分類器

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

IF/ELSE

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

イテレーション

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

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

ループ

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

ループノード自体は出力変数をサポートしないので、チャットフローの会話変数を用いた実行例を下記に示します。会話変数 count を2倍、2倍していき、200を超えたらループを終了するサンプルです。

コード実行

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

テンプレート

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

変数集約器

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

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

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

テキスト抽出

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

変数代入

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

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

パラメータ抽出

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

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

HTTPリクエスト

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

リスト処理

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

コメント

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

ツール

ツール

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

カスタム

ワークフロー

MCP

変数

システム変数

ユーザー変数

会話変数

環境変数