0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Dify】イテレーション処理について簡単なワークフローで解説してみる

Last updated at Posted at 2025-11-16

Difyのイテレーション処理は使いこなせると強力なのですが、「配列がないと動かない」、「よくわからないエラーが出て止まる」、「そもそも概念が難しい」といった壁があるかと思います。

今回は非常にシンプルなイテレーションを利用したワークフローを作成し、動作および注意点を記載します。

わかりやすさ重視のため、実用性はないです。

image.png

処理イメージ

# 入力テキスト
春
夏
秋
冬

# イテレーション処理
入力テキストの各行に「なんです。」を付記

# 出力テキスト
春なんです。
夏なんです。
秋なんです。
冬なんです。

処理フロー全体

image.png

処理のポイント

イテレーション処理

本テストのメイン要素です。
以下の仕様/前提に注意する必要があります。

  • 入力として配列を渡す必要がある
  • 出力は配列が渡される
  • イテレーションブロックの中の処理は、配列の中身ごとに実行される
  • パラレル実行が可能で処理時間の短縮が可能
  • 処理結果(出力)は、シリアル実行およびパラレル実行ともに、入力された配列の順番になる

パラメータ抽出処理

イテレーション処理の実行には配列が必要になるため、パラメータ抽出処理で配列を作成します。
以下の仕様/前提に注意する必要があります。

  • 入力はテキスト(string型)を渡す必要がある
  • 出力は配列(string,number,object)の変数を作成する
  • LLMを使用して配列化処理を行う
  • 配列化の指示命令を自然言語で書く

JSON To TEXT処理(Pythonコード)

イテレーション処理の出力は配列となるため、そのままだと終了ブロックが受け付ける形になりません。
今回の実行では JSON 形式のみが出力されましたとなります)
そのため、配列をテキスト形式に変換する必要があるのですが、こちらはDify基本機能で提供されていない内容になるため、Python処理ブロックにプログラムを書いておく必要があります。

各ブロック解説

開始

置くだけで何も設定しません。
image.png

テンプレート_入力テキスト

開始ブロックの入力の代わりに、以下のテキストを入力しておきます。
image.png

パラメータ抽出

パラメータ抽出ブロックを利用して、イテレーション用の配列を作成します。
モデルは適当なもの、入力変数は配列化したいテキストを設定します。

パラメータを抽出については、出力変数とその型を設定する項目です。
本テストの入力変数は改行で整理された文字列で、各行は単一の要素となるため、パラメータのタイプはArray[String]としておきます。

指示については、入力変数の特徴などを記載しておくとよいかと思います。
具体的な抽出命令がある場合も記載してください。
image.png

指示の結果、以下の配列(seasons)が作成されました。
image.png

配列の入力形式が固定されている場合、コード実行ブロックでpython処理を記述してしまったほうが高速&トークン節約になります。

イテレーション処理

入力は前ブロックのパラメータ抽出で作成された配列変数になります。
この配列の個数だけ処理が実施されるので、今回は4要素=4回処理が行われます。

また、出力変数を定義しないとエラー停止するので、イテレーション内の処理記述が完了したあとに出力変数を記載しておきます。

最後に、パラレルモードの設定になります。
こちらをオンにすると処理が並列実行されるので、イテレーション処理回数が多いほど処理時間の短縮が見込まれます。今回は最大並列処理をデフォルトの10回のままにしておきます。
image.png

パラレルモード使用時において、LLM向けのAPIスロットル制限(トークンリミット超過)が出ることがあります。その場合は最大並列処理を減らして調整してください。

テンプレート_なんです化

イテレーション内の処理になります。
イテレーション変数を利用して、そのあとに「なんです。」という文字列を追加するだけの内容になります。

イテレーション変数
item:イテレーションの入力配列の個要素。今回は春、夏、秋、冬が渡される
index:イテレーションの実行インデックス。今回は4回実行なので0、1、2、3が存在

image.png

イテレーションは4回実行され、以下のように出力されます。
image.png

各イテレーションでは以下のような処理が行われています。
image.png

コード実行

イテレーションの出力内容は配列形式となるので、配列から文字型への出力変換を行っています。
現時点ではこのようにpythonコードを記述するしか対策は無いようです。
(将来的にはイテレーション処理にて、出力形式の変換オプションがでるかもしれませんね)
image.png

code
def main(input):
    """
    入力: 配列 (例: ["A ...", "B ..."])
    出力: 各行を改行区切りで結合した文字列
    """
    try:
        # 入力がリストである前提で処理
        if isinstance(input, list):
            result_text = "\n".join(input)
        else:
            # 万一文字列で来た場合に備える
            result_text = str(input)

        return {"result": result_text}

    except Exception as e:
        return {"result": str(e)}

出力変数は必ずstring形式にしてください。


結果として、以下のような変換がされます。
image.png

終了

コード実行結果を受けています。
image.png

テスト結果としては、最終的に以下の内容が得られます。
image.png


イメージはつかめましたでしょうか?
イテレーション処理が利用できるようになると、繰り返し処理にて 数の暴力 もとい大量の入出力に対応することが可能になります。

まだ触ってみたことがないという方はぜひトライしてみてください。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?