Difyワークフローの作り方:ノーコードとカスタムツールで拡張する実践ガイド
ヨミアゲAI編集部
AI音声・動画制作に関する情報をお届けします
2026年3月時点において、DifyはLLMアプリケーション開発を加速する強力なプラットフォームとして進化を続けています。特に、視覚的なUIを通じてノーコードで複雑なワークフローを構築できる点が大きな魅力です。しかし、Dify単体では対応できない外部サービスとの連携や、特定の高度な処理を組み込みたい場合、**カスタムツール(プラグイン)**の開発が不可欠となります。本記事では、Difyのノーコードワークフローを最大限に活用しつつ、必要に応じてローコードで機能を拡張するカスタムツールの作り方と組み込み方について解説します。
Difyノーコードワークフローの基本とカスタムツールの役割
Difyの「スタジオ」機能を使えば、ユーザーはドラッグ&ドロップ操作でプロンプト、ツール、モデルなどを組み合わせ、独自のLLMアプリケーションをノーコードで構築できます。例えば、RAG(Retrieval Augmented Generation)アプリケーションや、シンプルなチャットボットなどは、コーディングなしで数分で作成可能です。
しかし、以下のようなケースでは、カスタムツールの導入がDifyの真価を発揮します。
- Difyが標準で提供していないAPIを持つ外部サービスと連携したい。
- 特定のデータ形式の解析や、複雑なロジックをLLMの思考プロセスに組み込みたい。
- 既存の社内システムとDifyアプリケーションを連携させたい。
ここで登場するのが、Pythonなどの言語で開発する**Difyカスタムツール(プラグイン)**です。これらはDifyの機能を大幅に拡張し、ノーコードで構築されたワークフローに、ローコードで開発された高度な処理能力を付与します。
Difyカスタムツール(プラグイン)の作成とDifyへの組み込み手順
Difyのカスタムツールは、Dify Plugin Daemonという専用のツールを使って開発・実行し、Difyと連携させます。ここでは、URLの内容を抽出する「URL Extractor」ツールを例に、具体的な手順を見ていきましょう。
1. Dify Plugin Daemonのセットアップ
Difyカスタムツールの開発には、Dify Plugin Daemonが必須です。これをローカル環境にセットアップします。
💡 ポイント: 2026年3月時点では、Dify Plugin Daemonのバージョンは
v0.5.3が広く利用されています。
# 1. GitHubからバイナリをダウンロード
curl -o dify -L https://github.com/langgenius/dify-plugin-daemon/releases/download/0.5.3/dify-plugin-linux-amd64
# 2. 実行権限を付与し、/usr/local/bin/へ移動
chmod +x dify
sudo mv dify /usr/local/bin/
# 3. バージョン確認
dify version
# v0.5.3 が表示されることを確認
このセットアップは、Ubuntu 24.04 LTS環境(Windows 11上のWSL2を含む)を前提としています。Python 3.12とGit 2.53.0がインストールされていることを確認してください。
2. カスタムツールの初期化とロジック実装
次に、dify plugin initコマンドでツールのひな形を作成し、Pythonでロジックを実装します。
# プラグインプロジェクトを初期化
dify plugin init
対話形式で以下の情報を入力します。
- Plugin Name:
url_extractor - Plugin Title:
URL Extractor - Project Directory:
url_extractor - Development Language:
python - Template:
tool - Permissions:
Tools/Enabledのみ選択
これにより、url_extractorディレクトリが作成され、その中に必要なファイルが生成されます。
次に、url_extractor/src/plugins/url_extractor.pyファイルを編集し、ツールのロジックを記述します。
from dify_plugin import tool
import requests
from bs4 import BeautifulSoup
@tool(
name="url_extractor",
description="Extracts the title and content from a given URL.",
tool_parameters=[
{
"name": "url",
"type": "string",
"description": "The URL to extract content from.",
"required": True,
}
],
)
def invoke(url: str) -> dict:
"""
指定されたURLからタイトルとコンテンツを抽出します。
"""
try:
response = requests.get(url, timeout=10)
response.raise_for_status() # HTTPエラーを確認
soup = BeautifulSoup(response.text, 'html.parser')
title = soup.title.string if soup.title else "No title found"
paragraphs = soup.find_all('p')
content = "\n".join([p.get_text() for p in paragraphs[:5]]) # 最初の5つの段落を抽出
return {"title": title, "content": content}
except requests.exceptions.RequestException as e:
return {"error": f"Failed to access URL: {e}"}
except Exception as e:
return {"error": f"An unexpected error occurred: {e}"}
このコードは、@toolデコレータでツールを定義し、invokeメソッドでURLからタイトルとコンテンツを抽出する処理を実装しています。
⚠️ 注意: 開発中は、ローカルでツールをテストすることが重要です。
dify plugin run --config-file url_extractor/dify-plugin.yamlコマンドでローカルサーバーを起動し、http://127.0.0.1:5001/url_extractor/invokeエンドポイントに対してcurlなどでリクエストを送信して動作を確認してください。
3. Difyへのツール組み込みとワークフローでの活用
ローカルで動作確認ができたカスタムツールをDifyに組み込みます。2026年3月時点のDify 1.13.0クラウド版での手順です。
- Difyの管理画面にログインし、「ツール」セクションへ移動します。
- 「カスタムツール」タブを選択し、「作成」をクリックします。
- 「API」タブを選択し、以下の情報を入力します。
- ツール名:
URL Extractor - APIタイプ:
OpenAPI - URL:
http://127.0.0.1:5001/url_extractor/openapi.yaml(Dify Plugin Daemonが公開するOpenAPI仕様のURL) - 認証:
なし
- ツール名:
- 「確認」ボタンをクリックし、DifyがOpenAPI仕様を正常に読み込めることを確認します。
- 「ツールを作成」で保存します。
これで、カスタムツールがDifyに登録されました。次に、このツールをノーコードワークフローに組み込みます。
- Difyの「スタジオ」で新しいチャットフローを作成します。
- ワークフロー内で「ツール」ブロックを配置します。
- ツールブロックの設定で、先ほど作成した
URL Extractorツールを選択します。 - LLMがユーザーの入力(例: 「このURLの記事を要約して」)に応じて、このツールを呼び出すようにプロンプトやモデルを設定します。
これにより、ユーザーがURLを提示すると、LLMがカスタムツールを呼び出してURLの内容を抽出し、その情報を元に要約などの応答を生成する、といった高度なアプリケーションがノーコードとローコードの組み合わせで実現できます。
ノーコードとローコードでDifyワークフローを最大限に活用する
Difyは、その直感的なノーコードインターフェースにより、LLMアプリケーション開発の敷居を大きく下げました。しかし、真に強力なアプリケーションを構築するには、Difyのコア機能と、カスタムツールによる拡張性を組み合わせることが鍵となります。
2026年3月時点では、Difyのカスタムツールエコシステムはさらに成熟し、より多くのテンプレートやライブラリが提供されることで、ローコード開発の効率も向上しています。ノーコードでアイデアを素早く形にし、必要に応じてカスタムツールで深掘りする。このアプローチこそが、Difyを最大限に活用し、ビジネス価値の高いLLMアプリケーションを迅速に市場投入するための最善策と言えるでしょう。