Skip to content

技巧与常见问题#

合并多个触发器#

如果工作流中已存在其他触发器,您将有两个潜在的起点:该触发器与评估触发器。为确保无论哪个触发器执行工作流都能按预期运行,您需要将这些分支合并在一起。

合并触发器分支
将两个触发器分支合并的逻辑,使它们具有相同的数据格式并能从单一节点引用。

操作步骤如下:

  1. 获取其他触发器的数据格式
    • 执行另一个触发器
    • 打开它并导航到其输出面板的JSON视图
    • 点击右侧的复制按钮
  2. 调整评估触发器数据以匹配格式
    • 在评估触发器后插入一个编辑字段(Set)节点并将它们连接起来
    • 将其模式改为JSON
    • 将数据粘贴到'JSON'字段中,删除首行的[和末行的]
    • 将字段类型切换为表达式
    • 通过从输入面板拖拽来映射触发器中的数据
    • 对于字符串,确保替换整个值(包括引号)并在表达式末尾添加.toJsonString()
  3. 使用'No-op'节点合并分支:插入一个No-op节点,并将其他触发器和Set节点都连接到它。'No-op'节点只是输出它接收到的任何输入
  4. 在工作流其余部分引用'No-op'节点输出:由于两条路径都会以相同格式流经此节点,您可以确保输入数据始终存在

避免评估中断聊天功能#

n8n 的内部聊天功能会读取工作流中最后执行节点的输出数据。当添加了使用'设置输出'操作的评估节点后,这些数据可能不符合预期格式,甚至可能不包含聊天响应。

添加第二个输出分支

解决方案是从您的代理节点添加一个额外分支。在n8n中,下方的分支会较晚执行,这意味着您附加到此分支的任何节点都将最后执行。此处可以使用无操作节点,因为它只需要传递代理输出即可。

计算指标时访问工具数据#

有时您需要了解代理执行的子节点中发生了什么,例如检查它是否执行了某个工具。虽然无法直接通过表达式引用这些节点,但您可以在代理中启用返回中间步骤选项。这将添加一个名为intermediateSteps的额外输出字段,供后续节点使用:

启用返回中间步骤

同一工作流中的多重评估#

每个工作流只能设置一个评估。换句话说,每个工作流只能有一个评估触发器。

尽管如此,您仍然可以通过将工作流的不同部分放入子工作流中,并对每个子工作流进行评估,来测试工作流的不同部分。

处理不一致的结果#

指标常常会存在噪声:在完全相同的流程评估运行中,它们可能会有所不同。这是因为流程本身可能返回不同的结果,或者任何基于LLM的指标可能存在自然变化。

您可以通过复制数据集中的行来补偿这种情况,使每行在数据集中出现多次。由于这意味着每个输入实际上会运行多次,这将平滑掉任何变化。