Documentation Index
Fetch the complete documentation index at: https://docs.dify.ai/llms.txt
Use this file to discover all available pages before exploring further.
回顾第八课,我们使用最后的 LLM 节点产出一篇完整的回复邮件。
虽然,我们在这个 LLM 节点内的 Prompt 里告知了邮件内需要每一个问题对应一个答案,但仍然会有每封邮件输出格式不统一的情况。
为了解决这个问题,我们需要一个专属的排版小助手,在最终生成邮件之前,把所有的内容整理成工整和标准的格式。
模板转换
你可以将它理解成排版设计师,它能够接收一个或者多个输入变量(比如我们的答案列表),然后按照你设置好的模板,将这些变量重新组合、排版,最终输出一段格式统一的文本。
动手实践:优化邮件排版
更新 LLM 节点
既然模板节点将会负责处理问候语和落款,我们需要告诉 LLM 只专注于回答问题本身就行。你可以复制并粘贴下方的提示词,也可以自由修改。别忘了在用户消息(User Message)中把文本替换成相应的变量。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 就是一种让你把变量(比如答案列表)按照你想要的格式,填入到一个文本模板里的工具。它使用一些简单的符号来标记变量的位置和执行一些基本操作。通过它,我们能把一个原始的数据列表,转换成一段格式整齐的文本。在这里,我们可以把开场白、邮件正文和署名落款拼装在一起,确保每次发出的邮件都既专业又格式统一。请将下方这段排版代码直接复制并粘贴到模板节点的代码框中。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 的语法,将项目符号列表修改成数字编号列表。
-
格式转换除了对列表进行统一的格式处理,还能做什么?