【Dify】Lesson2-4:ワークフローアプリの基本|音声からの文字起こしアプリを作ろう

Difyにはいくつかのアプリタイプがありますが、その中でも「処理の流れを自分で組み立てて、やりたいことをきっちり実現したい」ときに強いのがワークフローアプリです。
たとえば「入力を整形する → 条件で分岐する → LLMに投げる → 結果を加工して返す」といった一連の処理を、ブロックをつないで設計できます。
1つ前のレッスンで開発した「チャットフロー」とよく似ていますね。
チャットフローは会話の流れ(ユーザーとの対話)を中心に設計するのに対して、ワークフローは処理手順(タスクの流れ)を中心に設計します。
つまり「会話をスムーズに続けたい」ならチャットフロー、「決まった手順で確実に処理したい」ならワークフロー、というイメージです。
この記事では、ワークフローアプリの基本を押さえながら、実際に手を動かして簡単なアプリを作っていきます。
Lesson1:Dify入門|環境構築と最初の生成AIアプリ開発
Lesson2:まずは体験|基本的なアプリを作ろう
・Lesson2-1:テキストジェネレーターアプリの基本
・Lesson2-2:エージェントアプリの基本
・Lesson2-3:チャットフローアプリの基本
・Lesson2-4:ワークフローアプリの基本 ◁今回はここ
・Lesson2-5:5つのアプリタイプの特徴と違いまとめ
・Lesson2-6:良いプロンプトの書き方
Lesson3:文章業務を自動化するアプリを開発しよう
Lesson4:ファイル処理で広がるDifyアプリ開発
Lesson5:RAG実践|ナレッジ検索アプリを作ろう
Lesson6:機能拡張と外部システム連携|ツールを使いこなそう
Lesson7:総仕上げ|実践投入への準備
Difyでワークフローアプリを開発しよう
ここからは、Difyの「ワークフローアプリ」がどんなものかを押さえたうえで、実際に作る流れにつなげていきます。
ワークフローは、いわば「生成AIにやらせたい作業手順を、目に見える形で設計するしくみ」です。
まずは全体像をつかみましょう。
ワークフローアプリとは|できること・活用例
Difyのワークフローアプリは、複数の処理を順番に(ときには条件分岐しながら)実行して、最終的な結果を出すアプリです。
「入力を受け取る → 整える → AIに考えさせる → 結果を成形する → 出力する」のように、やることを手順として組み立てられるのが特徴です。
特に向いているのは、「毎回やることがだいたい決まっている業務」や「ミスなく同じ品質で出したい作業」です。
たとえば、次のような用途にハマります。
- 社内向け文章の自動作成(報告書、議事録、メールの下書きなど)
- 問い合わせ文の分類と返信案の生成(内容ごとに担当やテンプレートを切り替える)
- 入力チェックや整形をしたうえで、AIに投げる(長文の要点抽出、表現の統一など)
- ルールに沿った判定を挟む(「この条件ならAの処理、違うならBの処理」)
ポイントは「会話を続けること」よりも、「決まった処理を最後まで走らせること」に強い点です。
会話中心ならチャットフロー、手順中心ならワークフロー、と覚えておくと迷いにくいです。
ワークフローの仕組み
ワークフローは、チャットフローと同様にいくつかの「ノード(処理ブロック)」を線でつないで作ります。
ノードには役割があり、入力を受け取って、処理をして、次に渡す…という流れで進みます。
基本の見方はシンプルで「データ(文章や変数)がノードからノードへ流れていく」とイメージすると理解しやすいです。
たとえば、ワークフローの中では次のような処理を組み合わせます。
- 入力を受け取る(ユーザーが書いた文章、選択肢、フォーム入力など)
- テキストを整える(不要な部分を削る、形式をそろえる)
- 条件で分岐する(短いなら軽い処理、長いなら要約してから処理、など)
- LLMに投げる(プロンプトを作り、回答を得る)
- 出力を加工する(見出しを付ける、結論を先に出す、指定の形式に合わせる)
そして重要なのが「変数」です。ワークフローでは、前のノードの出力を変数として受け取り、次のノードで使い回せます。
このおかげで、「入力文」「整形後の文」「分類結果」「LLMの回答」などを、必要な場所で参照しながら流れを作れます。
慣れてくると、作り方のコツも見えてきます。
たとえば「1ノードで欲張りすぎず、処理を小分けにする」「分岐の条件はなるべく明確にする」「途中結果を確認しながら調整する」といった点です。
音声の文字起こしアプリを作ろう
それでは、簡単なワークフローアプリの例として「音声の文字起こしアプリ」を作っていきましょう。

アプリの開発画面から「最初から作成」を選択し、ワークフローを選択してください。
アプリの名前はシンプルに「音声の文字起こしアプリ」としましょう。

ワークフローアプリの開始ノードは、通常のようにユーザーが実行する「ユーザー入力」かスケジュールなどの別のきっかけで自動的に起動する「トリガー」から選択できます。
今回は「ユーザー入力」を選択しましょう。

すると「ユーザー入力」ノードだけが表示されます。ここから拡張していきましょう。
今回作るのは「音声からの文字起こしアプリ」なので、アプリ起動のきっかけは音声データがアップロードされることです。
それを「ユーザー入力」ノードに変数として設定しましょう。
ユーザー入力ノードの入力フィールド右側の「+」をクリックします。

以下のように設定してください。

- フィールドタイプを「単一ファイル」に指定。
- 変数名を「audio」に指定。
- ラベル名を「音声ファイルを指定してください。」に指定。
- サポートされたファイルタイプは「音声」だけがチェックされた状態にする。
- アップロードされたファイルのタイプは「ローカルアップロード」を指定。
ユーザー入力ノードの設定が完了したら、次は音声からの文字起こし部分を担当する Audioツール の SPEECH TO TEXTノード を設置します。

Audioツールは、Difyに最初からインストールされている音声処理ツール。
LLMは音声データをそのまま扱えないため、Audioツールで音声→テキストなどの前処理を行ってから、後段のLLMに渡すよ。
以下の手順で設置してください。
- ユーザー入力ノード右側の「+」をクリック
- 出てきたウィンドウ上部のタブで「ツール」を選択
- 「すべての道具」の中の「Audio」を選択
- 「Speech to text」を選択

Speech to textノードが設置できたら、入力変数とモデルを指定します。

- 入力変数:ユーザー入力のaudioを指定
- Model:「gpt-4o-mini-transcribe」を選択
これでSpeechToTextノードの設定は完了です。
続いて、これまでと同様の手順で、SpeechToTextノードの後ろにLLMノードを追加してください。
LLMのSYSTEM(プロンプト)は以下のようにしましょう。
# 役割 あなたはプロの文字起こし担当です。 # 命令 - 〇〇を整形してください。内容を要約・改変・補完しないでください。 - 聞き取れない箇所は勝手に推測せず「[聞き取り不能]」と書いてください。 - 固有名詞・数値・単位・日付は特に慎重に扱い、曖昧なら「(?)」を付けてください。 - 入力にタイムスタンプや話者ラベルが含まれている場合は保持してください。含まれていない場合は新規に追加しないでください。 - 出力は日本語の読みやすい段落に整形(適切な改行)し、余計な説明文は付けず「文字起こし本文のみ」を出力してください。

このプロンプト内の〇〇の部分はSpeechToTextノードの変数textを指定してね。
〇〇を消して「/(スラッシュ)」を打ち込めば指定できるよ。
これでLLMノードの設定は完了です。
最後に出力ノードを追加しましょう。LLMノードの右側の「+」をクリックして「出力」ノードを追加してください。
その後、出力変数にLLMの変数textを追加します。

- 出力変数右側の「+」をクリック
- LLMの変数textを選択
これで「音声の文字起こしアプリ」は完成です。
実際に音声データをアップロードし、動作を確認してください。
まとめ
今回は、Difyのワークフローアプリの基本として「ワークフローで何ができるのか」「どういう仕組みで動いているのか」を整理しました。
ワークフローは、会話を中心に組み立てるチャットフローとは違い、処理手順を設計して “決まった流れで確実に実行する” のが得意でしたね。
また、ここまでの記事でDifyで作れる5種類のアプリを全て体験できました。
まだまだ実際の業務で使えるようなものではありませんが、それぞれの特徴やできることなどのイメージは固まったかと思います。
次の記事では5種類のアプリの違いを一覧で確認し、その後いよいよ本格的なアプリ開発に進んでいきます。
この調子で、張り切っていきましょう!
- 記事改善アンケート|ご意見をお聞かせください(1分で終わります)
-
本サイトでは、みなさまの学習をよりサポートできるサービスを目指しております。
そのため、みなさまの意見をアンケート形式でお伺いしています。1分だけ、ご協力いただけますと幸いです。
(※)APIキーや個人情報等は入力しないようお願いします。
【Dify】記事改善アンケート


