【n8n教程】:Evaluation Trigger节点,AI工作流的质量守门人

Evaluation Trigger 是 n8n 中用于验证 AI 工作流可靠性的专门节点。它通过读取测试数据集(支持数据表或 Google Sheets),按顺序将数据逐一发送到工作流中,帮助你在部署前全面评估 AI 输出质量。这是确保 AI 自动化生产就绪的关键工具。


什么是 Evaluation Trigger?为什么你需要它?

问题背景:为什么需要评估工作流?

你是否遇到过这样的情况:

根本问题:AI 是非确定性的。相同输入在不同模型、参数或条件下会产生不同结果。你需要一个科学的测试框架来验证你的改动。

解决方案:Evaluation Trigger 的工作原理

Evaluation Trigger 通过以下步骤帮助你:

  1. 1. 创建测试数据集 — 定义一组包含"正确答案"(基准真值 Ground Truth)的测试用例
  2. 2. 批量运行工作流 — Evaluation Trigger 按顺序加载每个测试用例,并通过整个工作流
  3. 3. 自动对比结果 — AI 输出与预期答案进行对比
  4. 4. 生成评分报告 — 得到可量化的精度、正确率、响应时间等指标
  5. 5. 数据驱动优化 — 基于具体数据改进提示词、模型或流程

核心价值:从"我觉得这样可能更好" → "我确切知道这次改进提升了15%的精度"


快速上手:5分钟了解 Evaluation Trigger 的核心概念

核心概念解析

1. Trigger 类型

Evaluation Trigger 是一个特殊的触发器节点,与常规触发器(如 Webhook、定时器)不同:

2. 数据源支持

Evaluation Trigger 可从两种来源读取测试数据:

数据源特点适合场景
数据表(Data Table)n8n 内置,使用简单小规模测试(<100条)
Google Sheets易于共享和协作,支持大规模数据团队协作、大规模评估

3. 评估流程图


    
    
    
  Evaluation Trigger
       ↓
读取测试数据(逐行)
       ↓
传入到主工作流
       ↓
AI 处理并输出结果
       ↓
Evaluation Node 对比预期结果
       ↓
计算评分指标(精度、速度、成本等)
       ↓
生成评估报告

实战教程:构建你的第一个 Evaluation 工作流

场景:构建一个"邮件分类工作流"的评估系统

目标:自动分类邮件为"产品反馈" / "销售咨询" / "技术支持",然后验证分类准确率。

第一步:准备测试数据集(Google Sheets)

  1. 1. 创建 Google Sheet — 新建一个电子表格,命名为 Email Classification Test
  2. 2. 设计表格结构(至少包括这些列):
email_contentexpected_categoryexpected_priorityai_output_categoryai_output_priorityis_correct
我的产品有bug,需要紧急修复技术支持
我想购买你们的专业版套餐销售咨询
你们的服务体验很棒!产品反馈
API 文档需要更新技术支持

关键点

  1. 3. 获取 Google Sheet ID 和 Sheet ID

在浏览器地址栏,找到:


    
    
    
  https://docs.google.com/spreadsheets/d/{spreadsheetId}/edit#gid={sheetId}
                                      ↑ 复制这个          ↑ 这个数字

第二步:在 n8n 中构建工作流

基本结构


    
    
    
  Evaluation Trigger 
    ↓
Set Node(处理数据格式)
    ↓
AI Agent / LLM Node(分类邮件)
    ↓
Check If Evaluating(分支逻辑)
    ├→ 评估路径:Set Outputs → Set Metrics
    └→ 生产路径:发送到 Slack / 邮件等

步骤详解

1. 添加 Evaluation Trigger 节点

配置完后,点击 "Execute Trigger" 检查是否能成功读取数据。

2. 添加 AI Agent / LLM 节点


    
    
    
  系统提示词示例:
你是一个邮件分类专家。根据邮件内容,将其分类到以下一个类别:
- 产品反馈:用户对产品的意见和建议
- 销售咨询:询问价格、功能或购买相关信息
- 技术支持:报告bug、求助技术问题

邮件内容:
{{ $json.email_content }}

请以 JSON 格式输出:
{
  "category": "(选择上述一个)",
  "priority": "高|中|低"
}

3. 添加 Check If Evaluating 节点

这个节点用于区分"评估模式"和"生产模式":

4. 添加 Set Outputs 节点(评估模式)

在 "IF true" 分支中添加 "Evaluation" 节点,选择 Set Outputs 操作:

输出字段名值(表达式)
ai_output_category{{ JSON.parse($json.response).category }}
ai_output_priority{{ JSON.parse($json.response).priority }}

5. 添加 Set Metrics 节点(评估模式)

继续在 "IF true" 分支中添加另一个 "Evaluation" 节点,选择 Set Metrics 操作:

这里定义你要追踪的指标(n8n 会自动计算平均值):

指标名计算表达式说明
category_correct{{ $json.ai_output_category === $json.expected_category ? 1 : 0 }}分类是否正确(1=是,0=否)
priority_correct{{ $json.ai_output_priority === $json.expected_priority ? 1 : 0 }}优先级是否正确
response_tokens{{ $json.response_metadata?.tokens || 0 }}生成的token数(如果AI模型提供)

完整工作流 JSON 代码(可直接导入 n8n)

以下是一个"邮件智能分类与评估"的完整工作流代码。复制整个 JSON,在 n8n 中选择 WorkflowsCreate → 粘贴到 Raw JSON 编辑器:


    
    
    
  {
  "active"
: true,
  "nodeGroups"
: [],
  "nodes"
: [
    {

      "parameters"
: {
        "limitRows"
: true,
        "maxRows"
: 10,
        "filterRows"
: false
      }
,
      "id"
: "Evaluation Trigger",
      "name"
: "Evaluation Trigger",
      "type"
: "n8n-nodes-base.evaluationTrigger",
      "typeVersion"
: 1,
      "position"
: [50, 300]
    }
,
    {

      "parameters"
: {
        "promptType"
: "custom",
        "text"
: "你是一个邮件分类专家。根据邮件内容,将其分类到以下一个类别:\n- 产品反馈:用户对产品的意见和建议\n- 销售咨询:询问价格、功能或购买相关信息\n- 技术支持:报告bug、求助技术问题\n\n邮件内容:\n{{ $json.email_content }}\n\n请以 JSON 格式输出(仅输出JSON,无其他文字):\n{\"category\": \"产品反馈|销售咨询|技术支持\", \"priority\": \"高|中|低\"}",
        "model"
: "gpt-4-mini"
      }
,
      "id"
: "AI Agent - Email Classifier",
      "name"
: "AI Agent - Email Classifier",
      "type"
: "n8n-nodes-base.openai",
      "typeVersion"
: 4,
      "position"
: [250, 300]
    }
,
    {

      "parameters"
: {
        "operation"
: "checkIfEvaluating"
      }
,
      "id"
: "Check If Evaluating",
      "name"
: "Check If Evaluating",
      "type"
: "n8n-nodes-base.evaluation",
      "typeVersion"
: 1,
      "position"
: [450, 300]
    }
,
    {

      "parameters"
: {
        "operation"
: "setOutputs",
        "dataTableId"
: "{{$env.DATA_TABLE_ID}}",
        "outputs"
: [
          {

            "name"
: "ai_output_category",
            "value"
: "{{ JSON.parse($json.response_content).category }}"
          }
,
          {

            "name"
: "ai_output_priority",
            "value"
: "{{ JSON.parse($json.response_content).priority }}"
          }

        ]

      }
,
      "id"
: "Set Outputs - Write Results",
      "name"
: "Set Outputs - Write Results",
      "type"
: "n8n-nodes-base.evaluation",
      "typeVersion"
: 1,
      "position"
: [650, 150]
    }
,
    {

      "parameters"
: {
        "operation"
: "setMetrics",
        "metrics"
: [
          {

            "name"
: "category_accuracy",
            "value"
: "{{ $json.ai_output_category === $json.expected_category ? 1 : 0 }}"
          }
,
          {

            "name"
: "priority_accuracy",
            "value"
: "{{ $json.ai_output_priority === $json.expected_priority ? 1 : 0 }}"
          }

        ]

      }
,
      "id"
: "Set Metrics - Track Performance",
      "name"
: "Set Metrics - Track Performance",
      "type"
: "n8n-nodes-base.evaluation",
      "typeVersion"
: 1,
      "position"
: [650, 300]
    }

  ]
,
  "connections"
: {
    "Evaluation Trigger"
: {
      "main"
: [
        [

          {

            "node"
: "AI Agent - Email Classifier",
            "type"
: "main",
            "index"
: 0
          }

        ]

      ]

    }
,
    "AI Agent - Email Classifier"
: {
      "main"
: [
        [

          {

            "node"
: "Check If Evaluating",
            "type"
: "main",
            "index"
: 0
          }

        ]

      ]

    }
,
    "Check If Evaluating"
: {
      "main"
: [
        [

          {

            "node"
: "Set Outputs - Write Results",
            "type"
: "main",
            "index"
: 0
          }

        ]
,
        [

          {

            "node"
: "No-op",
            "type"
: "main",
            "index"
: 0
          }

        ]

      ]

    }
,
    "Set Outputs - Write Results"
: {
      "main"
: [
        [

          {

            "node"
: "Set Metrics - Track Performance",
            "type"
: "main",
            "index"
: 0
          }

        ]

      ]

    }

  }
,
  "meta"
: {
    "instanceId"
: "test-instance",
    "version"
: 1,
    "name"
: "邮件分类 AI 工作流 - 带评估"
  }

}

如何使用这个 JSON:

  1. 1. 在 n8n 中创建新工作流
  2. 2. 点击右上角 "...""Import from clipboard"Raw JSON
  3. 3. 粘贴上面的 JSON 代码
  4. 4. 配置:
    • • 修改 Google Sheet ID 和凭证
    • • 替换 OpenAI API 密钥
    • • 更新提示词内容

实战案例:从评估数据中读取见解

第一次运行:获取基准线

  1. 1. 在 n8n 中找到刚创建的工作流
  2. 2. 点击 "Evaluate" 标签页
  3. 3. 点击 "Run Test"
  4. 4. n8n 会逐个处理你的 Google Sheet 中的行

查看评估结果

运行完后,你会看到:

案例:A/B 测试对比

场景:你想测试"新提示词"是否比"旧提示词"更好

方法

  1. 1. 保存 Run #1 的数据(旧提示词,89% 准确率)
  2. 2. 修改 AI Agent 节点的提示词
  3. 3. 运行 Run #2(新提示词)
  4. 4. 对比结果:
    • • 如果准确率提升到 93%,那么新提示词值得采用 ✅
    • • 如果反而下降到 85%,立即回滚 ❌

常见问题解答(Q&A)

Q1:一个工作流中能有多个 Evaluation Trigger 吗?

A:不能。一个工作流只能有一个 Evaluation Trigger。但你可以在工作流的子流程(Sub-workflow)中使用多个触发器。

Q2:如何处理生产环境和评估环境的数据格式不同?

A:使用 "Check If Evaluating" 节点和 Edit Fields (Set) 节点来转换数据格式:


    
    
    
  ├→ 如果是 Evaluation Trigger 输入:转换为格式 A
└→ 如果是生产 Trigger 输入:转换为格式 B
     ↓
    [合并两个分支到一个 No-op 节点]
     ↓
    [统一格式的数据继续流向后续工作流]

Q3:如何设置自定义指标?

A:在 Set Metrics 节点中,你可以定义任何 JavaScript 表达式:


    
    
    
  // 计算语义相似度(如果集成了 NLP 库)
{{ $json.similarity_score }}

// 检查回应时间是否在 SLA 内

{{ $json.response_time < 2000 ? 1 : 0 }}

// 检查输出是否包含某些关键词

{{ $json.ai_output.includes("重要") ? 1 : 0 }}

Q4:Google Sheets 和数据表有什么区别?

A

特性Google Sheets数据表
存储位置云端(Google Drive)n8n 内部
协作✅ 易于团队共享❌ 仅限 n8n 管理员
大小限制~500 万行~100 万行(取决于实例配置)
成本免费(Google 账号)包含在 n8n 实例中

进阶技巧

1. 使用 LLM-as-a-Judge 自动评分

如果没有明确的"正确答案",可以让另一个 AI 模型来判断:


    
    
    
  // 在 Set Metrics 中使用
{{ await $nodeRunData.llmJudge?.[0]?.json?.score || 0 }}

2. 跨多次运行对比性能

在 Google Sheet 中添加"Run ID"和"Timestamp"列,便于追踪历史改进:


    
    
    
  | run_id | timestamp | avg_accuracy | avg_tokens | notes |
|--------|-----------|--------------|-----------|--------|
| Run#1  | 2024-12-01| 89%          | 42        | 基础提示词 |
| Run#2  | 2024-12-02| 93%          | 45        | 改进后的提示词 |
| Run#3  | 2024-12-02| 88%          | 30        | 切换到 GPT-4 mini |

3. 集成 CI/CD 流程

使用 n8n 的 Webhook Trigger + Evaluation Trigger 组合,在每次部署时自动运行评估:


    
    
    
  GitHub Webhook 
  → n8n Workflow 
  → Run Evaluation 
  → 如果准确率 < 85%,拒绝部署 ❌
  → 否则,部署到生产 ✅

总结

Evaluation Trigger 的 4 大核心价值

数据驱动 — 用具体指标替代主观判断

快速迭代 — A/B 测试、模型对比在几分钟内完成

质量保障 — 在部署前发现问题,避免生产事故

成本优化 — 找到性价比最优的模型 / 参数组合


引用链接

[1] 官方文档: https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.evaluationtrigger/
[2] n8n系列教程: https://www.undsky.com/blog/?category=n8n%E6%95%99%E7%A8%8B#