今回は、Difyのテンプレートとテンプレートブロックに焦点を当て、この二つの違いとその機能、使い方、を徹底的に解説します。
- 「はじめての人はどうやってDifyのアプリをつくったらいいのだろう?」
- 「Difyのテンプレートブロックって何ができるの?」
- 「どうやって使えばAIアプリ開発が効率化できるんだろ?」
そんな疑問をお持ちではありませんか?
今回はDifyのテンプレートを使いすばやくAIアプリを作る方法とワークフローのテンプレートブロックの使い方を解説いたします。

実はDifyではテンプレートという言葉は二つ存在します。Difyが用意しているテンプレート(雛形)とワークフローで使うテンプレートブロックです。紛紛らわしいので、この記事で二つの違いをしっかりおさえておきましょう
Difyのテンプレートとは?
ITの世界で一般的にテンプレートというと雛形を意味することが多いです。例えばMicrosoftのWordにテンプレートが用意されています。テンプレートから書類を作ると一から書類を作るよりもすばやく作ることができますよね。こんな感じで大概のITのソフトにテンプレートが用意されています。
ただDifyの場合は気を付けなくてはいけないのはテンプレートというと二つの用途があります。
- テンプレート(雛形)
- ワークフローで使うテンプレートブロック
の二つです。
テンプレートの種類:テンプレート(雛形)とテンプレートブロック


テンプレート(雛形)はDifyの初心者用に用意されていてすぐ動くAIアプリのサンプルになります。




テンプレート(雛形)とテンプレートブロックは全く異なるものになります。
詳しくはこの後しっかりと解説をさせてくださいね。
テンプレート(雛形)とは?
Difyのテンプレート機能は、AIアプリケーション開発を効率化するための強力なツールです。テンプレートには、「雛形」と「テンプレートブロック」の2種類があり、それぞれ異なる役割と特徴を持っています。ここでは、「テンプレート(雛形)」に焦点を当てて解説します。
テンプレート(雛形)の概要と特徴
テンプレート(雛形)は、特定のタスクや目的に合わせて事前に設計された、AIアプリケーションの基本構造を提供するものです。プロンプト、モデル設定、外部ツール連携などがパッケージ化されており、ユーザーはこれらをベースにカスタマイズすることで、迅速に独自のアプリケーションを開発できます。
テンプレート(雛形)の特徴:
- 開発時間の短縮: 一から開発するよりも、テンプレートを活用することで大幅に時間を短縮できます。
- 高品質なアプリケーションの実現: 専門家によって設計されたテンプレートを利用することで、初心者でも高品質なアプリケーションを開発できます。
- カスタマイズ性: 用途に合わせて、プロンプトや設定を自由に変更できます。
- 学習コストの削減: テンプレートを参考にすることで、Difyの機能を効率的に学習できます。



Dify初心者の方にはテンプレート(雛形)をまずは動かしてみて理解することをお勧めします。ぼくは今でもテンプレートを元に学習を続けています。
テンプレート(雛形)の種類と一覧
Difyでは、用途ごとに多彩な雛形が提供されています。代表的なものをいくつか紹介します。
- 執筆: ブログ記事、小説、詩など、文章生成に特化したテンプレート
- プログラミング: コード生成、デバッグ、ドキュメント作成など、開発を支援するテンプレート
- アシスタント: 顧客対応、FAQ、情報検索など、日常業務を効率化するテンプレート
- Agent: 複雑なタスクを自動化するためのテンプレート
- Workflow: 複数のステップからなるタスクを効率的に実行するためのテンプレート
- 人事: 人事業務を効率化するためのテンプレート
これらのテンプレートは、Difyのプラットフォーム内で一覧表示され、用途や目的に合わせて選択できます。
テンプレート(雛形)の使い方(設定方法・カスタマイズ)


Difyにログイン後、矢印の箇所の「探索」をクリックするとテンプレート(雛形)の一覧が表示されます。



テンプレート(雛形)は54個用意されています。Difyのバージョンアップに伴いテンプレートの数はドンドン増えていっています。嬉しい限りですね。(2025年03月11日時点)


使いたいテンプレートをクリックする。
使うテンプレートの名前を決めて「作成」をクリックしましょう。


テンプレートによってはプラグインのインストールをする必要があります。左側のチェックマークにチェックをいれて「インストール」をクリックしましょう。
テンプレートは追加料金なしで使うことができるのでとってもお得です。
テンプレート(雛形)を使ってみた


今回は「Question Classifier + Knowledge + Chatbot 」というテンプレート(雛形)を選んで実際に使ってみました。
これは会社の情報に基づいてチャットで回答するチャットボットになっています。


これは顧客の回答によって異なるナレッジとLLMに問い合わせをする仕組みになっています。
- after sales に関する質問( アフターセールスに関する質問)がきたら該当のナレッジに問い合わせをしてLLMに質問をして回答をする。
- Questions about how to use products( 製品の使い方に関する質問)がきたら該当のナレッジに問い合わせをしてLLMに質問をして回答をする。
- それ以外の質問がきたらSorry, I can’t help you with these questions(申し訳ありませんが、これらの質問にはお答えできません。)と回答をしてくれます。
初期の状態ではナレッジが登録されていない状態です。
その状態で質問をしてみました。




キチンと日本語で回答をしてくれますね。


使われているLLMのプロンプトをみると
And answer according to the language of the user’s question.(ユーザーの質問の言語に合わせて回答してください。)とのプロンプトが書かれているので日本語でキチンと回答してくれます。



標準で用意されているテンプレートがそのまま業務に使えそうでうれしいですね
雛形を選択したら、それをベースにアプリケーションを作成します。プロンプトの調整、モデルパラメータの設定、外部ツールとの連携など、必要に応じてカスタマイズを行い、独自のアプリケーションへと進化させることが可能です。
テンプレートブロックとは?
Difyのテンプレートブロックは、ワークフロー内でデータを適切に整形し、活用しやすくするための処理を担います。




入力変数(0〜複数)を設定することができます。コード部においてデータを見やすく表示するように加工します。
Difyのテンプレート機能は、AIアプリケーション開発を効率化するための強力なツールです。テンプレートには、「雛形」と「テンプレートブロック」の2種類があり、それぞれ異なる役割と特徴を持っています。ここでは、「テンプレート(雛形)」に焦点を当てて解説します。
テンプレートブロックの概要
- Jinja2: Python製の高性能なテンプレートエンジン。複雑なデータ処理や条件分岐を記述可能。
- 動的なデータ処理: 前のブロックから受け取った変数を動的にフォーマットし、結合して出力する。
- テキストベース出力: 最終的な出力をテキスト形式で生成。他のブロックへの入力として利用可能。
なぜテンプレートブロックが必要なのか?
AIアプリ開発のワークフローでは、様々なデータ形式を扱う必要があります。
- APIからのJSONデータ
- データベースからの構造化データ
- ユーザーからの自然言語入力
これらのデータをそのまま次のブロックに渡しても、うまく処理できない場合があります。



そこでテンプレートブロックの出番です!
テンプレートブロックを使うことで、
- データ形式の変換: JSONデータをテキストに変換
- データ抽出: 必要な情報だけを抽出
- データ整形: テキストを見やすく整形
- 条件分岐: データに応じて出力内容を変更
などが可能になり、ワークフロー全体の柔軟性と効率 が大幅に向上します。



テンプレートブロックなしでワークフローを組むのは、料理で言うとまな板なしで食材切るくらい大変です!
Difyテンプレートブロックの主な機能と利点:できること盛りだくさん!


Difyテンプレートブロックは、Jinja2の強力な機能とDifyのワークフローを組み合わせることで、様々な機能と利点を提供します。
1. 動的なフォーマット:変数を使って自由自在なテキスト生成




テンプレートブロックの最も重要な機能は、動的なフォーマットです。
Jinja2の変数 を使うことで、前のブロックから受け取ったデータを自由自在にテキストに組み込む ことができます。
例えば、
- {{ variable_name }}: 変数の値をそのまま出力
- {{ variable_name | upper }}: 変数の値を大文字に変換して出力
- {{ variable_name | truncate(50) }}: 変数の値を50文字で切り捨てて出力
など、様々なフィルター を組み合わせて、思い通りのテキスト を生成できます。
2. Jinja2の活用:複雑なロジックも実装可能


テンプレートブロックでは、Jinja2のすべての機能 を利用できます。
- 条件分岐 (if文): データの値によって出力内容を変更
- 繰り返し処理 (for文): リストデータなどを反復処理
- マクロ: 処理を関数のように再利用可能
- フィルター: テキスト加工、データ変換
これらの機能を組み合わせることで、複雑なロジック をテンプレート内に記述し、高度なテキスト処理 を実現できます。



Jinja2は、プログラミングの知識がなくても意外と簡単に使えるようになるよ!
3. データの結合:複数データをまとめて出力


テンプレートブロックは、複数のデータソース からのデータをまとめて出力 できます。
例えば、
- APIから取得した商品情報
- データベースから取得した在庫情報
を組み合わせて、商品リスト を生成したり、
- ユーザーの名前
- 注文商品
- 注文日時
を組み合わせて、注文確認メール の本文を生成したりできます。
4. 柔軟なデータ変換:様々な形式に対応


テンプレートブロックは、Jinja2のフィルター機能を活用することで、様々なデータ形式 に対応できます。
- JSON形式: tojson フィルターでJSON文字列に変換
- CSV形式: csv フィルターでCSV形式に変換
- XML形式: xml フィルターでXML形式に変換
これらの機能を活用することで、異なるデータ形式間 の変換 を柔軟に行い、データ連携 をスムーズに行うことができます。
Difyテンプレートブロックの使い方:3ステップでデータを加工しよう


Difyテンプレートブロックは、3つのステップで簡単にデータを加工できます。
STEP1. テンプレートブロックを配置
まず、Difyのワークフローエディターを開き、追加したいブロックの右端の+マークをクリックします。


表示された一覧から「テンプレート」ブロックをクリックします。


自動的に「テンプレート」ブロックの設定画面が開きます。


入力変数とは、「テンプレート」ブロックの中で使用するデータのことです。前のブロックで渡された変数をうけとりコードブロックの中で使うことができます。入力変数の設定できる数は0〜複数値に設定することができます。
図の1をクリックすると入力変数を増やすことができます。
図の2のところが実際にデータを生成するコード部分になります。
図の3は出力変数になります。他のコードブロックと違い「テンプレート」ブロックは出力変数は一つだけになります。
STEP2. テンプレートを記述


配置したテンプレートブロックの設定画面を開き、「コード」と書かれたテキストエリアに、Jinja2形式 でテンプレートを記述します。
- 変数: {{ 変数名 }} で前のブロックの出力変数を参照
- Jinja2構文: {% if 条件 %}, {% for item in リスト %} など、Jinja2の構文を記述
https://palletsprojects.com/projects/jinja
STEP3. 出力を確認


ワークフローを実行し、テンプレートブロックの実行結果を確認します。
- 出力: テンプレートブロックで生成されたテキストが出力として表示されます。
- ログ: エラーが発生した場合や、デバッグ情報を出力したい場合は、ログを確認します。
テンプレートブロックを実際に使ってみた
今回はJSON形式で渡されたデータをオブジェクト形式に変換する事例をご紹介します。


インターネット上でデータをやり取りする時は主にJSONでやりとりをすることが多いです。JSONはそのままではプログラミングでは処理がしづらいものです。「コード」ブロックと「テンプレート」ブロックを使いプログラミングしやすいオブジェクト型に変換します。






- 「開始」ブロックで入力フィールドが段落形式でJSONデータを受け取る
- 「コード」ブロックでJSON形式からオブジェクト形式に出力をする
- 「テンプレート」ブロックでデータの見た目をきれいにする



このような流れを作ることでその後プログラムでいろいろと加工しやすくなります。
まとめ:Difyテンプレートとテンプレートブロックを使いこなして効率的に開発をしていこう。
ここまでDifyにはテンプレートとテンプレートブロックの二つがあることを解説させていただきました。
- テンプレート(雛形)を使うことによりすばやくAIアプリを作ることができます。
- テンプレートブロックを使うことにより外部から取り込んだデータをプログラムで加工しやすくすることができます。
テンプレート(雛形)とテンプレートブロックを使いこなしてあなたのAIアプリ開発をレベルアップさせましょう!