Skip to content

レッスン 9:レイアウトデザイナー(テンプレート)

Note: ⚠️ このドキュメントはAIによって自動翻訳されています。不正確な部分がある場合は、英語版を参照してください。

レッスン 8 では、思考と検索ができる強力なエージェントを構築しました。しかし、小さな問題に気づいたかもしれません。最後の LLM に回答をリスト形式で出力するよう指示しても、フォーマットが乱れたり統一されなかったりすることがあります(例:箇条書きと段落が混在するなど)。

この問題を解決するために、最終的な LLM がメールを作成する前に、回答を美しく統一されたフォーマットに整理する専用のフォーマットアシスタントが必要です。

テンプレート変換

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

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

LLM ノードを更新する

テンプレートノードが挨拶文を担当するため、LLM には質問と回答だけに集中するよう指示する必要があります。以下のプロンプトをコピー&ペーストするか、自由に編集してください。

```plaintext wrap
Combine all answers for the original email. Write a complete, clear, and friendly reply that only includes the summarized answers.

IMPORTANT: Focus SOLELY on the answers. Do NOT include greetings (like "Hi Name"), do
NOT write intro paragraphs (like "Thank you for reaching out"), and do NOT include
signatures.
```

ユーザーメッセージを追加する

それぞれの変数をリストアップして挿入します。


  ![LLM ノードを編集](/images/difyworkflow101-lesson09-editllmnode.png)

テンプレートノードを追加する

LLM ノードの後に、クリックしてテンプレートノードを追加します。


  ![テンプレートノードを追加](/images/difyworkflow101-lesson09-addtemplatenode.png)

入力変数を設定する

テンプレートノードをクリックし、入力変数(Input Variables)セクションに移動して、以下の 2 つの項目を追加します:

- `customer`:`User Input / {x} customer_name String` を選択
- `body`:`LLM / {x} text String` を選択


    ![テンプレート入力変数](/images/difyworkflow101-lesson09-templateinputvariable.png)

Jinja でフォーマットする

**Jinja2 とは?**

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

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

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

```jinja
Hi {{ customer }},

Thank you for reaching out to us, and we are more than happy to provide you with the information you are seeking.

Here are the details regarding your specific questions:

{{ body }}

---
Thank you for reaching out to us!
Best regards,
Anne
```

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

最終ワークフロー

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

ミニチャレンジ

  1. Jinja2 のコードを変更して、箇条書きの代わりに番号付きリスト(1. 回答、2. 回答)にするにはどうすればよいでしょうか?

Tip:

 [Template Designer Documentation](https://jinja.palletsprojects.com/en/stable/templates/) を参照するか、LLM に聞いてみましょう。
  1. テンプレートノードには他にどのような活用方法があるでしょうか?