kakakakakku blog

Weekly Tech Blog: Keep Learning!

Dify 1.13 新機能!Dify ワークフローの途中で人間の確認を挟む「Human Input ノード」

2026年2月にリリースされた Dify 1.13 で新しく「Human Input(人間の入力)ノード」が追加された.

github.com

今までの Dify ワークフローだと実行すると最後まで自動的に実行するようになっていたけど,ワークフローによっては中間結果を確認したいという場面もあった.Human Input ノードを使うと重要な確認ポイントでワークフローを一時停止できる.Dify で簡単に Human-in-the-Loop を実現できるノードと言えそう👏

詳しくはドキュメントと Dify 公式ブログにまとまっている📝

docs.dify.ai

dify.ai

Dify Cloud で試す

最近 Dify Cloud にも Dify 1.13 がデプロイされて,Human Input ノードを試せるようになった.さっそく試していく❗️

今回はサンプルとして「カスタマーサポート回答生成ワークフロー」を作ってみた.カスタマーサポートの回答を自動的に生成して,出力前に担当者が確認する感じ😀ワークフロー全体を以下に載せておく.

それぞれのノードを整理するとこんな感じ.

ノード名 ノードタイプ 説明
INPUT 開始 問い合わせを入力する
ANSWER GENERATION LLM 問い合わせに対する回答を生成する
CHECK ANSWER Human Input (Webapp) 生成された回答を確認する
OUTPUT OK 終了 確認 OK の場合に出力する
ANSWER RE-GENERATION LLM フィードバックを元に回答を再生成する
OUTPUT REGENERATE 終了 再生成した回答を出力する
REMIND Human Input (Email) 確認待ちのタイムアウトでメールを送信する

INPUT

まずは問い合わせを入力する.以下にサンプルを載せておく.

先週に購入したワイヤレスイヤホンが届いたのですが、左側から音が出ません。
初期不良でしょうか?返品もしくは交換の手続きを教えてください。

ANSWER GENERATION

次に gpt-5-mini を使って問い合わせに対する回答を生成する(モデルは何でも良し).

プロンプトとして INPUT ノードの inquiry 変数を渡す.

あなたはカスタマーサポート担当者です。
以下のお客様からの問い合わせに対して、丁寧で簡潔な返信文を日本語で作成してください。

## お客様の問い合わせ
{{#1772877556206.inquiry#}}

CHECK ANSWER

ここで Human Input ノードを使う.まず配信方法として「Webapp」「Email」があって,今回は「Webapp」にした.なお「Slack / Teams / Discord」COMING SOON になっていた.

次にフォームコンテンツに確認するためのプロンプトを入力する.今回は以下のようにした.1点ポイントがあって「入力フィールド」を使うと確認時のコメントなどを自由に入力できるテキストフィールドを追加できる.Dify コンソールだと ⌘/ というショートカットを入力すると 入力フィールドを挿入 というダイアログが開くようになっていた.今回は feedback を自由に入力できるようにした.

## 問い合わせ
{{#1772877556206.inquiry#}}

## 生成された回答
{{#1772877561788.text#}}

## アクション
生成された回答を確認し、問題なければ [OK] を選択してください。問題がある場合は修正指示を入力後に [REGENERATE] を選択してください。

## フィードバック
{{#$output.feedback#}}

ユーザーアクションでは確認後の分岐を自由に設定できる.今回は OKREGENERATE にした.OK を選択するとそのまま回答を出力して,REGENERATE を選択するとフィードバックを踏まえて再生成するようにした.タイムアウトは最短の1時間にした.

ANSWER RE-GENERATION

Human Input ノードで REGENERATE が選択された場合にフィードバック(修正指示)を踏まえて再生成するためにプロンプトに feedback 変数を渡す.

ちなみに Dify ワークフローの場合は前のステップに戻るということはできず,今回のように ANSWER RE-GENERATION というまた別のステップを定義して「左から右に」進めていくワークフロー設計が必要になる.よって,正確には ANSWER RE-GENERATION の後にもう1度 Human Input ノードで CHECK RE-GENERATION ANSWER を挟む必要があると思う.とは言え Dify 公式ブログでも REGENERATE が選択された場合はそのまま終了になっていて今回は真似をした.

あなたはカスタマーサポート担当者です。
以下のお客様からの問い合わせに対して、修正指示を踏まえて、丁寧で簡潔な返信文を日本語で作成してください。

## お客様の問い合わせ
{{#1772877556206.inquiry#}}

## 生成された回答
{{#1772877561788.text#}}

## 修正指示
{{#1772877704975.feedback#}}

REMIND

1つ目の Human Input ノードで1時間のタイムアウトになった場合に別の Human Input ノードでリマインドメールを送るようにした.

生成された回答を確認してください。
{{#url#}}

動作確認

OK と REGENERATE

Human Input ノード (Webapp) で OKREGENERATE を選択できた👌

そして OK で回答生成と REGENERATE で回答生成どちらも動作確認できた.

TIMEOUT

1時間待つとリマインドメールが届いた✉️

しかし リクエスト URL127.0.0.1 になってしまって期待した通りには動かなかった.

リリースノートには以下のように書いてあって,もしかしたら Dify Cloud だとまだ使えない可能性がありそう.ちなみに僕は Professional プランを契約しているんだけど...😇

In cloud environments, Email delivery availability may depend on plan/feature settings.

github.com

まとめ

Dify 1.13 で追加された「Human Input(人間の入力)ノード」を試してみた❗️

ワークフローの特性によっては使う機会が多そうなノードで今後もアップデートをウォッチしようと思う.

関連記事

kakakakakku.hatenablog.com

kakakakakku.hatenablog.com

kakakakakku.hatenablog.com