🛠️
AI・機械学習

Difyワークフローの作り方:ノーコードとカスタムツールで拡張する実践ガイド

#Dify #ワークフロー #ノーコード #カスタムツール #LLM開発 #ローコード
AI

ヨミアゲ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クラウド版での手順です。

  1. Difyの管理画面にログインし、「ツール」セクションへ移動します。
  2. 「カスタムツール」タブを選択し、「作成」をクリックします。
  3. 「API」タブを選択し、以下の情報を入力します。
    • ツール名: URL Extractor
    • APIタイプ: OpenAPI
    • URL: http://127.0.0.1:5001/url_extractor/openapi.yaml (Dify Plugin Daemonが公開するOpenAPI仕様のURL)
    • 認証: なし
  4. 「確認」ボタンをクリックし、DifyがOpenAPI仕様を正常に読み込めることを確認します。
  5. 「ツールを作成」で保存します。

これで、カスタムツールがDifyに登録されました。次に、このツールをノーコードワークフローに組み込みます。

  1. Difyの「スタジオ」で新しいチャットフローを作成します。
  2. ワークフロー内で「ツール」ブロックを配置します。
  3. ツールブロックの設定で、先ほど作成したURL Extractorツールを選択します。
  4. LLMがユーザーの入力(例: 「このURLの記事を要約して」)に応じて、このツールを呼び出すようにプロンプトやモデルを設定します。

これにより、ユーザーがURLを提示すると、LLMがカスタムツールを呼び出してURLの内容を抽出し、その情報を元に要約などの応答を生成する、といった高度なアプリケーションがノーコードローコードの組み合わせで実現できます。

ノーコードとローコードでDifyワークフローを最大限に活用する

Difyは、その直感的なノーコードインターフェースにより、LLMアプリケーション開発の敷居を大きく下げました。しかし、真に強力なアプリケーションを構築するには、Difyのコア機能と、カスタムツールによる拡張性を組み合わせることが鍵となります。

2026年3月時点では、Difyのカスタムツールエコシステムはさらに成熟し、より多くのテンプレートやライブラリが提供されることで、ローコード開発の効率も向上しています。ノーコードでアイデアを素早く形にし、必要に応じてカスタムツールで深掘りする。このアプローチこそが、Difyを最大限に活用し、ビジネス価値の高いLLMアプリケーションを迅速に市場投入するための最善策と言えるでしょう。

AI音声でナレーションを作ってみませんか?

ヨミアゲAIを試す(無料)