更新时间:2026-03-18 GMT+08:00
分享

消息

消息节点是工作流中的即时反馈机制。与“结束节点”不同,消息节点允许工作流在执行过程中,向用户界面主动推送中间结果,而无需等待整个流程结束。

核心价值

  • 降低等待焦虑:在执行耗时任务(如联网搜索、生成长文)前,先发送“正在搜索中...”的提示。
  • 分步输出:将复杂的推理过程拆分为多个消息气泡,提升阅读体验。
  • 调试与监控:在开发阶段输出变量的中间状态,用于逻辑排查。

消息节点使用场景:

表1 消息节点使用场景

场景

示例

为什么不用结束节点

进度提示

工作流需要调用多个API,先告诉用户“正在查询中,请稍候…”

结束节点只能在最后输出,用户会长时间看到空白

流式输出

大模型生成长文本时,逐字逐句展示给用户(打字机效果)

结束节点等大模型完整输出后才一次性展示

兜底回复

意图识别走到“其他意图”分支时,返回一段默认话术

该分支无需复杂处理,消息节点比大模型节点更轻量

调试与日志

开发阶段输出中间变量值,验证工作流逻辑是否正确

调试信息不应出现在最终结果中

分段回复

先回复文字摘要,工作流继续执行后续操作(如生成图表)

用户先看到文字,不必等全部结果就绪

配置消息节点

输入参数:

输入参数定义了从前置节点传入的变量,在指定回复中通过 {{参数名}} 引用。当选择回复内容为纯文本时,可以不配置输入参数。

当单击图标时,可新增输入参数。

  • 参数名称:只允许输入字母、数字、下划线,且不能以数字开头。
  • 类型、值:支持“引用”和“输入”两种类型。
    • 引用:支持用户选择工作流中已包含的前置节点的输出变量值和全局配置中的记忆变量。
      系统参数列举如下:
      • “conversation_history”:存储当前对话的历史消息记录。
      • “current_time”:获取当前的系统时间戳或时间字符串。
      • “user_id”:识别当前用户的唯一标识符。
      • “conversation_id”:当前工作流的唯一对话标识。
      • “dialogue_count”:当前对话的轮次数计数。
    • 输入:支持用户自定义取值。

指定回复:

撰写发送给用户的消息内容,支持纯文本或引用{{参数名}}的形式插入变量,回复信息将在工作流执行到该节点时发送给用户。

插入变量的方式如图1所示,想要消息节点输出检索到的知识切片的内容,则添加输入参数"rep_out",引用前置知识检索节点的输出参数"content",并在指定回复中引用{{rep_out}}即可;也可以单击快速插入输入参数,或在输入框中键入' {' 快速引用参数。

会话写入历史控制消息节点的交互内容是否记录到对话历史中:

选项

行为

适用场景

写入(推荐默认)

消息节点输出都会写入会话历史。

一般用于记录用户与机器人的对话历史,以便模型能更好理解用户意图。

不写入

输出不写入会话历史。

一般机器与机器的交互历史无需记录,提升历史对话信息准确性,减少历史长度

图1 设置消息节点

如果开启下方的“结构化信息”,可在“结构化信息”中使用{{_NODE_OUTPUT}}引用指定回复。

结构化信息:

回复消息为普通文本时无需开启。当需要前端应用(如Web SDK、小程序)接收JSON数据或渲染UI卡片或下游系统需要解析消息的结构化字段,开启“结构化信息”开关。开启后,节点将不再只发送文本,而是将“指定回复”的内容封装在JSON对象中返回。功能开启时,可使用{{_NODE_OUTPUT}}引用“指定回复”中的信息实现结构化输出。

示例:

假设前端不仅显示文本,还能获取原始数据用于图表渲染。

  • 指定回复:已为您生成分析报告,共包含{{count}}条数据。
  • 结构化信息(JSON格式):
    {
      "msg_type": "report_card",
      "display_text": "{{_NODE_OUTPUT}}",
      "data": 
     {
          "report_id": "{{report_id}}",
          "timestamp": 1679000000
      }
     }
  • 最终前端收到的数据包
    {
      "msg_type": "report_card",
      "display_text": "已为您生成分析报告,共包含 12 条数据。",
      "data": { ... }
    }

相关操作

  • 单击图标,可修改判断名称,修改完成后单击名称旁边的进行保存。
  • 单击图标,可重命名判断节点名称,复制一个判断节点或删除判断节点;也可以将判断节点连接到结束节点。
  • 双击名称下面的节点说明,可修改节点的描述信息。
  • 单击图标,可查看文档信息。

示例

以工作流调用外部API查询数据,耗时较长。在API调用前消息节点先向用户发送等待提示为例。

图2 工作流

工作流核心节点如表2所示。

表2 节点配置说明

节点类型

说明

示例

开始节点

添加一个必选的输入参数,名为ip,即用户需要查询区域的IP地址。

消息节点

此节点用于向用户发送进度提醒消息。

指定回复:
正在为您查询,请稍候…

插件节点-IP查询

此节点用于查询IP地址的归属地。

输入参数:

ip:引用“开始”节点的输入参数ip。

结束节点

此节点用于输出“IP查询”插件节点的IP归属地查询结果。

输入参数:

result:引用“IP查询”插件节点的输出参数area。

在试运行配置界面输入IP地址,例如“122.224.186.100”,工作流运行的效果如图3所示,消息节点在调用API之前,给用户发送进度提醒“正在为您查询,请稍候…”。

图3 效果示例

常见问题

  • 消息节点和结束节点的区别是什么?
    表3 消息节点和结束节点区别

    维度

    消息节点

    结束节点

    触发时机

    工作流执行到该节点时立即发送

    工作流全部执行完毕后输出

    出现次数

    一个工作流中可以有多个消息节点

    通常只有一个结束节点

    是否阻断流程

    不阻断,消息发送后工作流继续执行后续节点

    阻断,输出后工作流结束

    流式输出

    支持引用流式参数(逐字展示)

    不支持引用流式输出参数

    典型用途

    中间消息、进度提示、流式内容

    最终结果、完整回复

  • 为什么消息内容显示 {{order_id}} 原文而非变量值?

    参数名拼写错误,或输入参数中未定义该变量。请检查“指定回复”中的 {{参数名}} 与“输入参数”中的名称是否完全一致(区分大小写)。

  • 为什么消息内容为空?

    引用的上游节点未输出结果(如API调用失败), 请在上游节点中检查输出,确认变量有值。可在消息模板中加入固定文本兜底。

  • 为什么结构化信息中 {{_NODE_OUTPUT}} 为空?

    “指定回复”未填写内容,由于{{_NODE_OUTPUT}} 引用的是“指定回复”的渲染结果,需先填写指定回复内容。

相关文档