Dify工作流支持四类渠道留言的结构化摘要生成,严格按“同一用户+24小时内+同一业务主题”分组,通过User Input、Doc Extractor、List Operator和LLM节点实现标准化提取、元数据注入、分组聚合与精准摘要输出。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

明确输入来源与合并边界
你需要让Dify同时接收来自微信公众号、企业微信客服对话导出文件、邮件附件(.eml/.msg)和网页表单CSV这四类原始留言,但不能把不同用户、不同时间、不同渠道的留言强行揉在一起——每条摘要必须严格限定在“同一用户+24小时内+同一业务主题”范围内。
在User Input节点中,定义四个必填变量:【files】(支持.zip/.xlsx/.csv/.eml/.msg/.txt上传)、【channel_source】(下拉单选:wechat_official_account / wecom_customer_service / email_inbox / web_form)、【user_id】(文本输入,允许为空,若为空则用提取出的手机号或邮箱自动补全)、【business_topic】(文本输入,如“退货流程咨询”“发票开具异常”“账号冻结申诉”)。
注意:如果上传的是ZIP包,内部必须是已按日期/用户归类好的子文件夹结构;否则Doc Extractor节点会跳过嵌套层级直接报错。
提取并标准化留言文本
拖入一个Doc Extractor节点,连接User Input的files输出端口。配置时勾选“启用多文档批量处理”,并在“文本清洗规则”中启用:删除重复空行、替换全角标点为半角、将“【客服】”“【用户】”“>”开头的对话标记统一转为“[客服]”“[用户]”格式。
关键一步:在Doc Extractor的“元数据注入”区域手动添加两行:
channel = {{ $user_input.channel_source }}
original_filename = {{ $doc.filename }}
这一步不可跳过。后续List Operator节点要靠channel字段做路由,original_filename字段用于追溯每条留言原始来源,缺失会导致调试时无法定位哪份邮件解析失败。
按用户与时间窗口分组聚合
插入List Operator节点,连接Doc Extractor的output列表。选择“Group By”操作模式,分组键设为:
① user_id(优先使用User Input传入值,若为空则从文本中正则提取11位手机号或邮箱前缀)
② floor(created_at / 86400)(将每条留言的timestamp向下取整到天,单位秒)
分组后,每个子列表自动带上group_key字段,形如{"user_id":"138****1234","day":19876}。这个key将成为后续LLM摘要的上下文锚点。
若某组内留言数超过50条,List Operator会自动截断并写入warnings字段——这不是错误,而是防止单次LLM调用超Token限制的主动保护。
驱动LLM生成结构化摘要
拖入LLM节点,输入模板如下:
你是一名客户服务运营分析师。请严格基于以下{count}条来自{channel}渠道的客户留言,围绕主题“{business_topic}”,生成一段不超过300字的中文摘要。要求:
• 不编造任何原文未提及的事实
• 若留言存在矛盾(如A说已发货、B说未下单),需明确指出分歧点
• 用“共性诉求:”“突出风险:”“待确认项:”三个二级标题分段
• 禁止使用“可能”“大概”“疑似”等模糊表述
变量绑定:
count → {{ $list_operator.grouped_list | length }}
channel → {{ $list_operator.group_key.channel }}
business_topic → {{ $user_input.business_topic }}
参数设置:temperature=0.1,max_tokens=1000,stop_sequences=["\n\n"]。温度值必须压到0.1,否则模型会在“共性诉求”里混入训练数据中的通用话术,导致摘要失真。
输出可落地的结果结构
添加Output节点,配置三个输出字段:
summary(String类型,值为{{ $llm.text }})
group_key(Object类型,值为{{ $list_operator.group_key }})
source_count(Number类型,值为{{ $list_operator.grouped_list | length }})
发布工作流后,在测试面板上传一个含3份微信留言+2份邮件的ZIP包,填写channel_source=wechat_official_account、user_id留空、business_topic=“小程序订单支付失败”,点击运行。











