Difyのリスト処理とは!?初心者でもわかる実際の使い方!

Difyは、AIアプリケーションを迅速に構築するためのオープンソースプラットフォームです。直感的なインターフェースと強力な機能により、開発者はカスタムチャットボット、AIエージェント、RAGエンジンなどを容易に作成できます。

この記事は、Difyを初めて使う初心者向けに、リスト(配列)処理の基本から応用までを解説します。 

目次

1. Difyのリスト処理とは?

リスト(配列)とは、複数のデータをひとまとまりで扱うためのデータ構造です 。たとえば

["田中", "佐藤", "井上"]

のように、複数の値(この例では文字列)を順序付けて格納できます。リストを使うと、関連するデータをまとめて管理でき、一括操作が可能になるため、複数要素の処理を簡潔に行えるというメリットがあります。Difyにおける「配列変数」も同様で、文字列や数値、ファイルなど複数要素を含む変数として扱われます。

Difyでリストを扱う基本操作には、リストへの要素追加があります。

リストへの要素追加

Difyのワークフローでリストに新しい要素を追加する際は、変数代入ノードを活用する方法がおすすめです。これにより、リストへの要素追加をシンプルかつ直感的に設定できます。

例えば、既存の配列変数 names に新たな情報を追加する場合、以下の手順で実装できます。

変数代入ノードで要素を追加する方法

STEP
配列変数(例: names)を作成

1. Difyの「会話変数」設定画面 を開く。

2. 新しい変数 names を作成し、データ型を array[string] に設定。

3. デフォルト値を「JSONで編集する」以下のように設定:

["田中", "佐藤", "井上"]

4. 保存 する。

STEP
変数代入ノードの設定

1.  Difyのワークフロー編集画面 で 変数代入ノード を開く。

2. 変数 names を選択。

3. 操作を「追加(append)」に設定(※「上書き(overwrite)」ではない)。

4.追加する値を設定:

Tom

Difyのリスト処理は知れば知るほど便利なので、今すぐ実践してみよう!

2. フィルタリング処理(特定の条件に合う要素だけを取り出す)

「フィルタリング」とは、一覧(リスト)の中から、ある条件に合うものだけを取り出す方法です。Difyでは「リスト処理」という機能でフィルタリングを行います。たとえば、

  • ファイル一覧なら、画像や文書などの種類、ファイル名、サイズなどをもとに絞り込む 例:画像だけを取り出す、ファイル名に「report」が含まれるものだけを選ぶ、など
  • 数値の一覧なら、10以上の数字だけを取り出す、特定の範囲にある数字だけを選ぶ、など
  • 文字列の一覧なら、「aで始まる」「特定の言葉が含まれる」などの条件で選ぶ

フィルタリングの条件を複数組み合わせることもできます。さらに、同じ「リスト処理」の機能で、並べ替えや「上から○件だけ取り出す」といった設定を同時に行うこともできます。

【フィルター処理の例】

入力リストフィルター条件出力リスト
[“apple”, “banana”, “apricot”]「a」で始まる[“apple”, “apricot”]
[“東京”, “大阪”, “京都”]「京」を含む[“東京”, “京都”]
[5, 12, 7, 20]値が10以上[12, 20]

2−1. 会話変数を設定する

<配列変数(例: names)を作成>

1. Difyの「会話変数」設定画面 を開く。

2. 新しい変数 items を作成し、データ型を array[string] に設定。

3. デフォルト値を「JSONで編集する」以下のように設定

 ["apple", "banana", "apricot"]

4. 保存 する。

2−2. フィルタリングの設定

<変数をリスト操作ノードでフィルタリング>

  1. Difyのワークフロー編集画面 で リスト処理ノード を追加。
  2. 操作対象の変数 items(会話変数)を選択。
  3. 「フィルター条件」で機能を選択し、条件を設定。

2−3. フィルター処理の方法

「aで始まる単語を抽出」

・対象リスト(会話変数 items)
[“apple”, “banana”, “apricot”]

・フィルター条件:で始まる(‘a’)

出力結果

 ["apple", "apricot"]
Tom

Difyのフィルタリング機能で、欲しいデータだけを瞬時に抽出できますね!

3. 並べ替え処理(昇順・降順にソートする)

「並べ替え(ソート)」とは、一覧(リスト)の中の要素を小さい順や大きい順、文字の順番などで並べなおすことです。

  • 昇順(しょうじゅん)ソート: 小さいものから大きいもの、またはアルファベット順(a, b, c…)に並べる 例:数値[8, 3, 15] → 昇順にすると[3, 8, 15]
  • 降順(こうじゅん)ソート: 大きいものから小さいもの、または逆アルファベット順(z, y, x…)に並べる 例:数値[8, 3, 15] → 降順にすると[15, 8, 3]

Difyの「リスト処理」機能で、並べ替えたいリストを選び、昇順か降順かを指定するだけでソートができます。ファイル一覧であれば、ファイル名の順やサイズの大きさ順で並べることもできます。

【ソート処理の例】

入力リストソート方法出力リスト
[8, 3, 15]昇順[3, 8, 15]
[8, 3, 15]降順[15, 8, 3]
[“b”, “d”, “a”, “c”]昇順[“a”, “b”, “c”, “d”]
[“b”, “d”, “a”, “c”]降順[“d”, “c”, “b”, “a”]

また、「先頭○件だけ取り出す」機能を合わせて使うと、例えば降順ソートした結果の上位3件だけを取り出す、という使い方も可能です。

3−1. 会話変数を作成

  1. Difyの「会話変数」設定画面 を開く。
  2. 新しい変数 numbers を作成し、データ型を array[number] に設定する。
  3. デフォルト値を「JSONで編集する」以下のように設定
[8, 3, 15]
  1. 保存する。

3−2. リスト処理ノードを設定

  1. Difyのワークフロー編集画面 で リスト処理ノード を追加。
  2. 対象の変数 numbers(会話変数)を選択する。
  3. 「並べ替え(ソート)」を選択し、昇順(ASC)または降順(DESC)を指定。

3−3. 並べ替えの具体例

入力リストソート方法設定値出力リスト
[8, 3, 15]昇順“asc”[3, 8, 15]
[8, 3, 15]降順“desc”[15, 8, 3]

3−4. 上位○件を取得する

Difyでは、「上位○件を取得」 する機能と組み合わせることで、ソート後の上位N件のみを取得 することもできます。

例:降順に並べ替えた上位2件を取得

入力リストソート方法取得件数出力リスト
[8, 3, 15]降順2[15, 8]

設定方法

Tom

昇順・降順の並べ替えもワンクリック!Difyでデータ処理のストレスをゼロにしよう!

4. イテレーション処理(同じ操作を繰り返す)

「イテレーション処理」とは、一覧(リスト)に含まれる要素一つひとつに対して、同じ操作を何度も繰り返すことです。プログラミングで言う「ループ」にあたりますが、Difyでは「イテレーションノード」という仕組みを使えば、コードを書かずに実現できます。

【イテレーションノードのポイント】

  1. 入力(リスト) あらかじめ用意しておいた一覧を指定します。たとえば「名前のリスト」や「数値のリスト」など。
  2. イテレーション内部の処理 一覧の各要素に対して実行したい操作を並べておきます(AIに要約させる、何かを計算する、ファイルを処理するなど)。
    • 例: 「田中」「佐藤」「井上」という3つの要素があれば、その3つについて順番に同じ操作を行う
  3. 出力(処理結果の一覧) 繰り返し処理が終わると、各要素の結果がまとまった新しい一覧が出力されます。

【イテレーションの例】

  • 「名前のリスト」に対して、それぞれ簡単な紹介文をAIに作らせる。 → 3つの名前があれば、AIへの問い合わせ(プロンプト)を3回連続で行い、それぞれの紹介文を一覧にしてまとめて出力。

このように繰り返しが必要な作業を自動化すると、大量の要素があっても手動で一個ずつ処理する手間を省けます。

4-1. 会話変数を設定する

<配列変数(例: names)を作成>

1. Difyの「会話変数」設定画面 を開く。

2. 新しい変数 items を作成し、データ型を array[string] に設定。

3. デフォルト値を「JSONで編集する」以下のように設定

 ["田中", "佐藤", "井上"]

4. 保存 する。

4-2. イテレーションノードを追加

  1. Difyのワークフロー編集画面イテレーションノード(反復処理ノード) を追加。
  2. 繰り返し処理の対象リスト に names を選択。
  3. 各要素に適用する処理を設定:
  • 例1:名前ごとに紹介文を生成
    1. LLMノードを追加
    2. プロンプト設定
"{{item}}" という名前の人について、簡単な1行の紹介文を作ってください。

4−3. イテレーションの出力内容

入力リスト(names)処理(AIに紹介文を作らせる)出力リスト(descriptions)
[“田中”, “佐藤”, “井上”]AIが紹介文を作成[“田中さんは博識で親しみやすい性格を持つ地域の活動家です。”, “佐藤さんは温かい笑顔と優れたコミュニケーション能力を持つ人です。”, “井上さんは優れた人柄と豊かな知識を持つ、地元で信頼されるコミュニティリーダーです。”]
Tom

繰り返し作業の手間をゼロに!Difyのイテレーション機能で時間を節約しよう!

5. リスト処理のユースケース(具体的な例)

ここでは、初心者にも取り組みやすい「リストを扱うときの具体例」を紹介します。

ユースケース①: アップロードされたファイルの仕分け

: ユーザーがまとめてアップロードしたファイルを、画像だけ別のAIに送る、文書だけ要約するといった場合。

  • アップロードされたファイルは「ファイル一覧」として受け取る
  • リスト処理を使って「画像だけを選ぶ(type = image)」「文書だけを選ぶ(type = document)」という風にフィルターをかける
  • 画像リストは画像識別の処理、文書リストは要約の処理、と分岐して実行
  • 最後に変数集約ノードで処理結果をまとめ、ユーザーに一括返却

ユースケース②: データの一括変換や集計

: たくさんの数値から平均を出す、複数の文章から要約を作って一覧にする、など。

  • イテレーションを使って、リストの要素(1件ずつ)に対して同じ処理を繰り返す
  • 数値の合計を出す、文章を要約する、といった操作を自動的にまとめて行う
  • 必要なら最後にまとめや集計結果を作って出力

ユースケース③: 条件によって異なる並べ替えを自動で実行

: 「昇順」または「降順」をユーザーが選ぶと、それに応じて数値を並べ替え、結果を返す。

  • 「昇順」か「降順」かで分岐(条件分岐)
  • それぞれの分岐でリストを並べ替える
  • 最後に集約ノードで結果をひとつにまとめ、ユーザーに返す

まとめ

ここまで紹介したように、Difyの「リスト処理」「フィルタリング処理」「イテレーション」といった機能を組み合わせると、一覧データの条件絞り込みや並べ替え、繰り返し処理などがノーコードで実現できます。

まずはシンプルな例から試して慣れ、徐々に応用してみると、複雑なデータ処理も簡単に作り上げられるようになるでしょう。

このコンテンツの投稿者

学生時代は生成AIによるアノテーションの研究を行っていた。現在は、AI戦略室でAI関連の開発や事業への活用を担当。 オウンドメディアの担当者を経て、現在はAIエンジニア。

目次