要让Dify平台中的客服Agent学会“察言观色”——自动识别用户情绪状态并切换相应的回复策略——大多数人的第一反应是编写一个功能全面的超级提示词,试图让AI同时兼任情绪分析师与客服专员。坦白说,这种方式在实践中难以奏效。情绪语气与用户意图属于不同的分析维度,强行合并只会导致JSON输出格式混乱,后续流程难以稳定解析与处理。
更有效的解决方案是将整体逻辑拆解为四个清晰的步骤:情绪感知→策略路由→风格适配→内容生成。这四个环节形成一个完整的闭环,每个步骤专注于自身职责,系统才能实现稳定可靠的运行。接下来我们逐一深入解析。
第一步:搭建情绪感知模块
新建一个Agent节点,类型选择“LLM”,切勿选用“工具调用”——该节点仅需完成一项任务:从用户输入的文本中准确识别情绪倾向。指令中的Prompt需要清晰明确:
“你是一名专业的情绪语义分析专家。仅根据用户输入的文本内容,输出严格的JSON格式:{“tone”: “angry|anxious|confused|satisfied|neutral”, “confidence”: 0.0–1.0}。请勿输出任何额外文字。若检测到感叹号数量≥3个或包含‘!!!’、‘急!!!’、‘马上!’等关键词,置信度自动增加0.2;若包含‘???’、‘不太懂’、‘能再讲一遍吗’等表达,则tone强制设定为confused。”
这套判断规则中隐藏着一个实用技巧:将极端情绪关键词与标点符号直接编码进规则逻辑,能够显著提升置信度的判断准确率,有效规避模棱两可的模糊情况。此外,情绪识别与意图分析必须分开处理,若混在一起,后续的条件分支将无法稳定提取tone字段,整个流程的可靠性会大打折扣。
第二步:配置条件路由分支
拖入一个“条件分支”节点,将其连接到情绪识别节点的输出端。在此需要设置三条判断路径:
① tone == “angry” → 接入“安抚话术生成”节点
② tone == “anxious” 或 confidence < 0.6 → 接入“快速应答模板节点”
③ 其余情况 → 接入“标准话术生成”节点
这里需要特别注意:分支条件必须使用双等号==,使用单等号=会触发语法错误,导致整个路由逻辑失效。另一个常见误区是有人习惯使用“else if”嵌套写法,但在Dify的条件分支机制中,这种嵌套方式根本不可行——路由判断仅支持扁平化的布尔表达式,嵌套结构会导致用户在情绪激动时系统却走了标准流程,造成不恰当的应答,场面会非常尴尬。
第三步:绑定情绪适配的应答风格
这一步有两种实现方式,简单来说,一种直接明了,另一种更为稳定可靠。
方法一是在每个话术生成Agent的系统提示词中硬编码风格指令。例如在“安抚话术生成”节点的系统提示词开头明确写道:“你正在处理一位情绪较为激动的用户,请使用短句结构、包含歉意类词汇(如‘非常抱歉’‘理解您的着急’)、避免使用专业术语,每句话控制在12字以内。”
方法二是利用Dify内置的情绪风格调节功能。进入各Agent节点的「高级设置」,开启「语气风格」开关,然后分别配置:对“安抚话术生成”节点选择“温和共情”,对“快速应答模板节点”选择“简洁高效”,对“标准话术生成”节点选择“专业清晰”。Dify会在后台自动注入对应的system prompt,相比手动编写更加稳定,同时还支持A/B测试不同风格的实际效果。

特别提醒:同一个Agent节点不能同时开启语气风格开关并手动编写系统提示词——这两者存在冲突,Dify会优先执行手动编写的prompt,导致内置的风格开关完全失效。不少开发者在此处遇到问题,排查半天才发现是两者相互干扰所致。
第四步:注入实时上下文与兜底机制
在所有话术生成节点之后,统一添加一个“变量记忆”节点,将本次识别出的tone值存储到session.last_tone中。然后在最终回复节点之前再增加一个“合规审核”Agent,在其Prompt中加入一条硬性规则:如果session.last_tone为angry,且回复内容中未包含“抱歉”“理解”“马上”三个词中的至少两个,则拒绝输出,改为返回“正在为您紧急处理,请稍候”。
最后在回复节点中勾选“启用流式输出”,并关闭“自动追加开场白”——这个开场白在用户情绪激动时弹出,例如对方刚刚表达不满,系统却回复“您好!我是智能助手”,这无异于火上浇油,只会加剧用户的不耐烦情绪。
从情绪判断到策略路由,再到风格适配与兜底审核,这四个步骤依次落地后,你的客服Agent才算真正具备了“察言观色”的智能交互能力。当然,在实际项目落地中,还需要根据业务场景持续优化置信度阈值与话术模板,但整体框架一旦正确搭建,剩下的就只是细节打磨与持续迭代的工作了。
