第 9 课:排版设计师(模板)¶
回顾第八课,我们使用最后的 LLM 节点产出一篇完整的回复邮件。
虽然,我们在这个 LLM 节点内的 Prompt 里告知了邮件内需要每一个问题对应一个答案,但仍然会有每封邮件输出格式不统一的情况。
为了解决这个问题,我们需要一个专属的排版小助手,在最终生成邮件之前,把所有的内容整理成工整和标准的格式。
模板转换¶
你可以将它理解成排版设计师,它能够接收一个或者多个输入变量(比如我们的答案列表),然后按照你设置好的模板,将这些变量重新组合、排版,最终输出一段格式统一的文本。
动手实践:优化邮件排版¶
更新 LLM 节点¶
既然模板节点将会负责处理问候语和落款,我们需要告诉 LLM 只专注于回答问题本身就行。你可以复制并粘贴下方的提示词,也可以自由修改。别忘了在用户消息(User Message)中把文本替换成相应的变量。
```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.
```
添加用户信息 (User Message)¶
在 LLM 的 User 框内,分别列出并插入对应的变量。

添加模板转换节点(Template Node)¶
在 LLM 节点之后,点击 `+` 号添加一个模板节点。

设置输入变量¶
我们需要把原材料交给我们的排版设计师,让它知道该排版哪些内容。
点击模板节点,找到输入变量(Input Variables)区域,并添加以下这两个变量:
- `customer`:选择 `User Input / {x} customer_name String`
- `body`:选择 `LLM / {x} text String`

使用 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
```
这是最终的工作流:

点击运行,在一封邮件中提出多个问题进行测试。你会发现,最终生成的回复完美包含了个性化的开场白、LLM 在中间部分出色总结的答案,以及最下方标准、专业的落款。
小挑战¶
- 如何修改 Jinja2 的语法,将项目符号列表修改成数字编号列表。
Tip:
可前往 [Template Designer Documentation](https://jinja.palletsprojects.com/en/stable/templates/),或者向 AI 提问,探索更多格式。
- 格式转换除了对列表进行统一的格式处理,还能做什么?