Evaluation Trigger 是 n8n 中用于验证 AI 工作流可靠性的专门节点。它通过读取测试数据集(支持数据表或 Google Sheets),按顺序将数据逐一发送到工作流中,帮助你在部署前全面评估 AI 输出质量。这是确保 AI 自动化生产就绪的关键工具。
你是否遇到过这样的情况:
根本问题:AI 是非确定性的。相同输入在不同模型、参数或条件下会产生不同结果。你需要一个科学的测试框架来验证你的改动。
Evaluation Trigger 通过以下步骤帮助你:
核心价值:从"我觉得这样可能更好" → "我确切知道这次改进提升了15%的精度"
Evaluation Trigger 是一个特殊的触发器节点,与常规触发器(如 Webhook、定时器)不同:
Evaluation Trigger 可从两种来源读取测试数据:
| 数据源 | 特点 | 适合场景 |
|---|---|---|
| 数据表(Data Table) | n8n 内置,使用简单 | 小规模测试(<100条) |
| Google Sheets | 易于共享和协作,支持大规模数据 | 团队协作、大规模评估 |
Evaluation Trigger
↓
读取测试数据(逐行)
↓
传入到主工作流
↓
AI 处理并输出结果
↓
Evaluation Node 对比预期结果
↓
计算评分指标(精度、速度、成本等)
↓
生成评估报告目标:自动分类邮件为"产品反馈" / "销售咨询" / "技术支持",然后验证分类准确率。
Email Classification Test| email_content | expected_category | expected_priority | ai_output_category | ai_output_priority | is_correct |
|---|---|---|---|---|---|
| 我的产品有bug,需要紧急修复 | 技术支持 | 高 | |||
| 我想购买你们的专业版套餐 | 销售咨询 | 中 | |||
| 你们的服务体验很棒! | 产品反馈 | 低 | |||
| API 文档需要更新 | 技术支持 | 中 |
关键点:
email_content = 输入数据(AI 要处理的内容)expected_category + expected_priority = 基准真值(正确答案)ai_output_* 列 = 稍后工作流会填充的输出结果is_correct = 评估节点会自动计算的对比结果在浏览器地址栏,找到:
https://docs.google.com/spreadsheets/d/{spreadsheetId}/edit#gid={sheetId}
↑ 复制这个 ↑ 这个数字Evaluation Trigger
↓
Set Node(处理数据格式)
↓
AI Agent / LLM Node(分类邮件)
↓
Check If Evaluating(分支逻辑)
├→ 评估路径:Set Outputs → Set Metrics
└→ 生产路径:发送到 Slack / 邮件等1. 添加 Evaluation Trigger 节点
Email Classification Test 这个 SheetMax Rows to Process = 10(先测试小数据集)配置完后,点击 "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 中选择 Workflows → Create → 粘贴到 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 工作流 - 带评估"
}
}运行完后,你会看到:
场景:你想测试"新提示词"是否比"旧提示词"更好
方法:
A:不能。一个工作流只能有一个 Evaluation Trigger。但你可以在工作流的子流程(Sub-workflow)中使用多个触发器。
A:使用 "Check If Evaluating" 节点和 Edit Fields (Set) 节点来转换数据格式:
├→ 如果是 Evaluation Trigger 输入:转换为格式 A
└→ 如果是生产 Trigger 输入:转换为格式 B
↓
[合并两个分支到一个 No-op 节点]
↓
[统一格式的数据继续流向后续工作流]A:在 Set Metrics 节点中,你可以定义任何 JavaScript 表达式:
// 计算语义相似度(如果集成了 NLP 库)
{{ $json.similarity_score }}
// 检查回应时间是否在 SLA 内
{{ $json.response_time < 2000 ? 1 : 0 }}
// 检查输出是否包含某些关键词
{{ $json.ai_output.includes("重要") ? 1 : 0 }}A:
| 特性 | Google Sheets | 数据表 |
|---|---|---|
| 存储位置 | 云端(Google Drive) | n8n 内部 |
| 协作 | ✅ 易于团队共享 | ❌ 仅限 n8n 管理员 |
| 大小限制 | ~500 万行 | ~100 万行(取决于实例配置) |
| 成本 | 免费(Google 账号) | 包含在 n8n 实例中 |
如果没有明确的"正确答案",可以让另一个 AI 模型来判断:
// 在 Set Metrics 中使用
{{ await $nodeRunData.llmJudge?.[0]?.json?.score || 0 }}在 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 |使用 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#