> ## Documentation index
> Fetch the complete documentation index at: https://dify-docs.docs7.io/llms.txt
> Ask it with GET https://dify-docs.docs7.io/ask?q=<keywords or question>. Short keywords rank best.
> Use these to discover all available pages before exploring further.

# レッスン 9：レイアウトデザイナー（テンプレート）

> このドキュメントは AI によって自動翻訳されています。不正確な部分がある場合は、[英語版](/en/learn/tutorials/workflow-101/lesson-09) を参照してください。

レッスン 8 では、ワークフローを 1 つの Product Support Agent に整理しました。

内容は正確で読みやすくても、生成される体裁は毎回揺れることがあります。挨拶の言い回しが変わったり、区切り線が消えたり、署名の表現が実行のたびに違ったりします。

一貫していなければならない要素には、テンプレートノードを使いましょう。

## テンプレート変換

テンプレート変換は、元のデータ（回答リストなど）を受け取り、あなたが指定した厳密なデザインテンプレート/基準に従って、完璧にフォーマットされたテキストブロックを生成します。毎回一貫した出力が保証されます。

## ハンズオン：メールのレイアウトを整える

<Steps>
  <Step title="Product Support Agent を確認する">
    ワークフローのキャンバスで **Product Support** を選択します。任務としては、メール全体を処理しつつ、実質的な本文だけを返すよう求める必要があります。**Agent タスク** に次の文を追加します。

    ```text wrap
    本文だけを返してください。挨拶、区切り線、署名は不要です。
    ```

    この分担が要点です。Agent は伝え方とトーンを担当し、テンプレートは固定のレイアウトを担当します。

    <Frame>
      ![Agent タスクに本文のみのルールを追加](/images/use-dify/tutorial/workflow-101-lesson-09/update-agent-task.png)
    </Frame>
  </Step>
  <Step title="テンプレートノードを追加する">
    Agent ノードの後、出力の前にテンプレートノードを挿入します。

    <Frame>
      ![出力の前にテンプレートノードを挿入](/images/use-dify/tutorial/workflow-101-lesson-09/template-node.png)
    </Frame>
  </Step>
  <Step title="入力変数を設定する">
    テンプレートノードを開き、次の変数を追加します。

    - `customer`：`User Input /{x} customer_name`
    - `body`：`Agent /{x} text`

    Agent の `text` 出力を使うことで、受け渡しの流れが分かりやすく、確認もしやすくなります。

    <Frame>
      ![customer と body の変数を追加](/images/use-dify/tutorial/workflow-101-lesson-09/add-input-variable.png)
    </Frame>
  </Step>
  <Step title="Jinja でフォーマットする">
    **Jinja2 とは？**

    簡単に言うと、Jinja2 は変数（回答リストなど）を希望通りのフォーマットでテキストテンプレートに挿入できるツールです。シンプルな記号を使って変数の配置場所を指定し、基本的なロジックを実行します。これにより、生のデータリストを整然とした統一フォーマットのテキストブロックに変換できます。

    ここでは、冒頭の挨拶、署名、メール本文を組み合わせて、毎回プロフェッショナルで一貫したメールを作成できるようにします。

    以下のレイアウトをそのままテンプレートのコードボックスにコピー＆ペーストしてください：

    ```text wrap
    Hi {{ customer }},
    
    Thank you for reaching out. We are happy to help with your questions.
    
    {{ body }}
    
    ---
    Best regards,
    Dify Support Team
    ```

    `customer` と `body` の値はワークフローの実行のたびに変わりますが、その周りはすべて固定されたままです。Agent には回答を書く自由を与えつつ、最終的なメールが必ず決められたレイアウトに従うことを保証できます。
  </Step>
  <Step title="出力ノードを更新する">
    出力ノードを開き、これまでの値をテンプレートノードの出力に置き換えます。

    <Frame>
      ![出力をテンプレートに向ける](/images/use-dify/tutorial/workflow-101-lesson-09/output-node.png)
    </Frame>
  </Step>
</Steps>

最終的なワークフローはこちらです。

<Frame>
  ![テンプレートノードを加えた最終ワークフロー](/images/use-dify/tutorial/workflow-101-lesson-09/final-workflow.png)
</Frame>

**テスト実行** をクリックします。1 通のメールに複数の質問を入れてみてください。最終出力には、カスタマイズされた冒頭の挨拶、LLM が美しくまとめた回答、そして標準的でプロフェッショナルな署名が完璧に含まれていることに気づくでしょう。

## ミニチャレンジ

1. `customer` が空のときのフォールバック（例：`Hi there,`）を追加してみましょう。
2. Agent が変更も省略もできない固定のサポート注意書きを追加してみましょう。
