微信扫码
添加专属顾问
我要投稿
Dify平台如何实现智能对话的点击交互?一文掌握推荐问题功能的技术实现。 核心内容: 1. 自定义输出格式解决传统对话局限 2. 模板转换节点实现HTML/JSON数据格式化 3. 三步搭建智能对话推荐系统架构
模板转换节点凭借其对 Jinja2 模板语言的强大支持,在数据处理和格式化方面展现出独特优势,完美契合了上述业务场景的需求。
通过合理运用模板转换节点,可以轻松实现复杂场景下的自定义输出,如生成整洁的 HTML 表格、格式化 JSON 数据,或者拼接出精准的提示词等。在我们提到的知识问答场景中,它能够将推荐问题列表以按钮形式呈现给用户,每个按钮携带对应问题信息,用户点击后即可自动触发后续对话流程,从而实现流畅、高效的交互体验。
1、会话变量节点设置 :会话变量节点在整个流程中扮演着关键的 “记忆” 角色。我们需要在该节点新增一个变量,用于专门存储用户的历史记录。这就好比为系统配备了一个专属的 “笔记本”,每当用户与系统进行交互时,系统都会将相关记录及时更新到这个 “笔记本” 中,以便后续能够根据用户的历史行为做出精准的推荐和响应。
2、变量赋值节点配置 :在大模型节点之后,紧接着新增一个变量赋值节点。这个节点的主要任务是将用户的提问信息妥善保存到之前创建的会话变量中。为了确保信息传递的准确性和一致性,必须将模型的回复格式设置为 json 或者 json object。因为这种格式具有良好的结构化特性,便于后续在代码执行节点和其他节点中对数据进行解析和处理,就如同为信息搭建了一座标准化的 “桥梁”,确保数据能够顺畅无阻地在各个节点之间流转。
3、LLM 节点分析与推荐 :新增 LLM 节点,其核心使命是分析用户提出的问题,并基于分析结果给出一系列推荐问题。这一步骤犹如系统大脑的深度思考过程,通过对用户问题背后意图的挖掘和理解,结合系统内部的知识库以及用户的历史记录,筛选出最有可能符合用户兴趣和需求的相关问题,为后续的个性化推荐提供有力支撑。
注:需要设置模型的回复格式为json或者json object
4、代码执行节点处理 :在这个节点中,需要运用 Python 代码对推荐问题进行格式转换,使其以字典形式呈现。代码逻辑如下:首先,尝试将输入字符串解析为字典;然后,从解析后的数据中提取 answer 列表(需注意键可能存在空格,如 “answer ”);最后,将提取的 answers 以 “result” 为键封装成一个新的字典并返回。这一过程相当于对推荐问题数据进行精细化加工,使其符合后续模板转换节点的输入要求,为生成自定义输出格式奠定基础。若输入数据不是合法的 JSON 字符串,则直接返回原字符串,以保证流程的鲁棒性。
import jsondef main(arg1: str) -> dict:try:# 解析输入字符串为字典data = json.loads(arg1)# 提取answer列表(注意键可能包含空格'answer ')answers = data.get("answer", [])return {"result": answers}except json.JSONDecodeError:# 如果不是合法的JSON字符串,返回原字符串return {"result": arg1}
5.模板转换节点渲染 :新增模板转换节点,利用 Jinja2 模板语法渲染推荐问题模板。具体模板代码为:{% for item in arg1 %}button data-message="{{item}}" data-variant="tertiary">{{ item }} /button{% endfor%}。这段模板代码的作用是遍历推荐问题列表,为每个问题生成一个按钮元素。其中,data-message 属性用于控制点击按钮后发送到下一轮对话的消息内容,确保系统能够准确识别用户的选择并做出相应响应;data-variant 属性则用于控制按钮的样式,使其在视觉上更加美观、直观,提升用户体验。
{% for item in arg1 %}<button data-message="{{item}}" data-variant="tertiary">{{ item }}</button>{% endfor %}
6、直接回复节点输出 :最后,新增直接回复节点,将模板转换后的结果以直观的形式呈现给用户。通过这一节点,自定义输出的按钮元素正式进入用户视野,用户可以便捷地点击按钮,选择感兴趣的问题,进而触发下一轮对话,实现整个智能对话流程的无缝衔接。
为了帮助开发者更好地理解和运用自定义输出格式中的 button 元素,附件中提供了丰富的示例代码以及相关参考文档链接。例如,通过设置不同的 data-variant 属性值,可以轻松创建出具有不同样式风格的按钮,如 primary、warning、secondary 等。这使得开发者能够根据实际应用场景和品牌设计规范,打造出独具特色的交互界面,满足不同用户的审美需求。同时,每个按钮的 data-message 属性确保了点击后能够正确传递相应的消息内容,维持对话的连贯性与逻辑性。
<button data-message="Hello World" data-variant="primary">YOYOYO</button><button data-message="Hello World" data-variant="warning">YOYOYO</button><button data-message="Hello World" data-variant="secondary">YOYOYO</button><button data-message="Hello World" data-variant="secondary-accent">YOYOYO</button><button data-message="Hello World" data-variant="ghost">YOYOYO</button><button data-message="Hello World" data-variant="ghost-accent">YOYOYO</button>
data-variant:可以控制按钮的样式data-message:它控制我们发送到下一轮的消息。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-06-29
DifyAI关键技术深度剖析
2025-06-28
Dify1.5.0神级更新:变量监视+状态缓存,开发效率暴增200%!
2025-06-26
提升 Dify 集成 MCP 便利性与 Prompt 迭代效率的实践
2025-06-26
Dify 集成 Azure AI 内容安全插件:从部署到落地的全流程教程
2025-06-26
万字演讲:Dify 插件如何助力 AI Agent 应用开发?
2025-06-26
Dify 1.5.0:变量监视器发布,让工作流调试所见即所得
2025-06-26
Dify 1.5.0 上线:这次调试功能,真的省了我一半时间
2025-06-26
Dify发布V1.5.0版本,变量监视与状态缓存太实用了
2025-04-05
2025-06-25
2025-04-02
2025-04-04
2025-06-04
2025-04-18
2025-04-03
2025-05-08
2025-04-28
2025-06-03
2025-06-26
2025-06-17
2025-05-29
2025-05-28
2025-05-22
2025-04-27
2025-04-15
2025-03-20