N8N中文教程
高级 AI/Evaluations

提示与常见问题#

结合多个触发器#

如果工作流中已经存在另一个触发器,那么你将有两个可能的起点:该触发器和 评估触发器(evaluation trigger)。为了确保无论哪个触发器执行,工作流都能按预期运行,你需要将这两个分支合并在一起。

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

操作步骤如下:

  1. 获取另一个触发器的数据格式

    • 执行另一个触发器。
    • 打开它,并进入其输出面板的 JSON 视图。
    • 点击右侧的 复制(copy) 按钮。
  2. 重新调整评估触发器的数据以匹配格式

    • 在评估触发器之后插入一个 编辑字段(设置)节点(Edit Fields (Set) node),并将两者连接起来。
    • 将其模式更改为 JSON
    • 将复制的数据粘贴到“JSON”字段中,删除首行和末行的 []
    • 将字段类型切换为 表达式(Expression)
    • 通过从输入面板拖拽数据来映射触发器中的内容。
    • 对于字符串,请确保替换整个值(包括引号),并在表达式末尾添加 .toJsonString()
  3. 使用“无操作”节点(No-op node)合并分支:插入一个 No-op 节点,并将另一个触发器和 Set 节点都连接到该节点。No-op 节点会原样输出其接收到的任何输入。

  4. 在工作流其余部分引用 No-op 节点的输出:由于两条路径都会以相同的格式流经此节点,你可以确保输入数据始终可用。

避免评估破坏聊天功能#

n8n 的内部聊天功能会读取工作流中最后一个执行节点的输出数据。在添加了使用 'set outputs' 操作 的评估节点后,这些数据可能不再处于预期格式,甚至可能不包含聊天响应。

添加第二个输出分支

解决方法是从你的 agent 节点引出一个额外的分支。在 n8n 中,下方的分支会更晚执行(参见 执行顺序),这意味着你附加到该分支上的任何节点都会最后执行。你可以在此处使用一个无操作(no-op)节点,因为它只需将 agent 的输出透传即可。

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

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

启用返回中间步骤

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

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

尽管如此,你仍然可以通过将不同部分放入 子工作流(sub-workflows) 并分别对每个子工作流进行评估,来测试工作流的不同部分。

处理结果不一致的问题#

指标常常存在噪声:完全相同的工作流在多次评估运行中可能会得到不同的结果。这是因为工作流本身可能返回不同的输出,或者基于大语言模型(LLM)的指标可能存在自然波动。

你可以通过复制数据集中的行来缓解这一问题,使每行数据在数据集中出现多次。由于这意味着每个输入实际上会被运行多次,因此可以平滑掉部分波动。