AutomationFlowsAI & RAG › Eval Tutorial — Echo (no AI Agent)

Eval Tutorial — Echo (no AI Agent)

Eval tutorial — echo (no AI agent). Uses evaluationTrigger, evaluation. Event-driven trigger; 9 nodes.

Event trigger★★★★☆ complexity9 nodesEvaluation TriggerEvaluation
AI & RAG Trigger: Event Nodes: 9 Complexity: ★★★★☆ Added:

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "name": "Eval tutorial \u2014 echo (no AI agent)",
  "nodes": [
    {
      "parameters": {
        "content": "## Eval tutorial\n\n**Publish fix:** Manual Trigger satisfies n8n Cloud (Eval Trigger alone cannot Publish).\n\n1. Data tables \u2192 `eval_echo` \u2192 import CSV\n2. **Eval Trigger** + **Set Outputs** \u2192 pick `eval_echo`\n3. **Save** \u2192 **Publish**\n4. **Evaluations** tab \u2192 Set up evaluation \u2192 **Run Test**\n5. Check **Executions** (Editor won't animate)\n\n**Manual test:** Execute workflow (uses sample row, skips Set Metrics).",
        "height": 340,
        "width": 440,
        "color": 5
      },
      "id": "a1b2c3d4-echo-sticky-note",
      "name": "Setup instructions",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        80,
        60
      ]
    },
    {
      "parameters": {},
      "id": "f6a7b8c9-manual-trigger",
      "name": "Manual Trigger",
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        280,
        480
      ]
    },
    {
      "parameters": {
        "mode": "manual",
        "assignments": {
          "assignments": [
            {
              "id": "sample-msg",
              "name": "message",
              "value": "hello world",
              "type": "string"
            },
            {
              "id": "sample-exp",
              "name": "expected_output",
              "value": "Echo: hello world",
              "type": "string"
            }
          ]
        },
        "includeOtherFields": false,
        "options": {}
      },
      "id": "a7b8c9d0-sample-row",
      "name": "Set Sample Row",
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        480,
        480
      ]
    },
    {
      "parameters": {
        "source": "dataTable",
        "dataTableId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "limitRows": false
      },
      "id": "b2c3d4e5-eval-trigger",
      "name": "Eval Trigger",
      "type": "n8n-nodes-base.evaluationTrigger",
      "typeVersion": 4.7,
      "position": [
        480,
        300
      ]
    },
    {
      "parameters": {
        "mode": "manual",
        "assignments": {
          "assignments": [
            {
              "id": "out-echo",
              "name": "output",
              "value": "={{ 'Echo: ' + $json.message }}",
              "type": "string"
            }
          ]
        },
        "includeOtherFields": true,
        "options": {}
      },
      "id": "c3d4e5f6-fake-reply",
      "name": "Build Fake Reply",
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        720,
        380
      ]
    },
    {
      "parameters": {
        "operation": "checkIfEvaluating"
      },
      "id": "b8c9d0e1-check-eval",
      "name": "Check if Evaluating",
      "type": "n8n-nodes-base.evaluation",
      "typeVersion": 4.7,
      "position": [
        920,
        380
      ]
    },
    {
      "parameters": {
        "operation": "setMetrics",
        "metric": "stringSimilarity",
        "expectedAnswer": "={{ $('Eval Trigger').item.json.expected_output }}",
        "actualAnswer": "={{ $json.output }}"
      },
      "id": "d4e5f6a7-set-metrics",
      "name": "Set Metrics",
      "type": "n8n-nodes-base.evaluation",
      "typeVersion": 4.7,
      "position": [
        1120,
        280
      ]
    },
    {
      "parameters": {
        "operation": "setOutputs",
        "source": "dataTable",
        "dataTableId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "outputs": {
          "values": [
            {
              "outputName": "actual_output",
              "outputValue": "={{ $('Build Fake Reply').item.json.output }}"
            },
            {
              "outputName": "similarity_score",
              "outputValue": "={{ $json.score ?? $json.stringSimilarity }}"
            },
            {
              "outputName": "pass_fail",
              "outputValue": "={{ ($json.score ?? $json.stringSimilarity ?? 0) >= 0.99 ? 'Pass' : 'Fail' }}"
            }
          ]
        }
      },
      "id": "e5f6a7b8-set-outputs",
      "name": "Set Outputs",
      "type": "n8n-nodes-base.evaluation",
      "typeVersion": 4.7,
      "position": [
        1320,
        280
      ]
    },
    {
      "parameters": {},
      "id": "c9d0e1f2-manual-done",
      "name": "Manual Test Done",
      "type": "n8n-nodes-base.noOp",
      "typeVersion": 1,
      "position": [
        1120,
        480
      ]
    }
  ],
  "connections": {
    "Manual Trigger": {
      "main": [
        [
          {
            "node": "Set Sample Row",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Sample Row": {
      "main": [
        [
          {
            "node": "Build Fake Reply",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Eval Trigger": {
      "main": [
        [
          {
            "node": "Build Fake Reply",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build Fake Reply": {
      "main": [
        [
          {
            "node": "Check if Evaluating",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check if Evaluating": {
      "main": [
        [
          {
            "node": "Set Metrics",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Manual Test Done",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Metrics": {
      "main": [
        [
          {
            "node": "Set Outputs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "meta": {
    "templateCredsSetupCompleted": false
  },
  "tags": []
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Eval tutorial — echo (no AI agent). Uses evaluationTrigger, evaluation. Event-driven trigger; 9 nodes.

Source: https://github.com/ChrisDANG-data/Household-Finance-AI/blob/main/automation/n8n/eval/eval-echo-tutorial.json — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

This template and YouTube video goes over 5 different implementations of evaluations within n8n. Categorization Correctness Tools used String similarity Helpfulness

Evaluation, Evaluation Trigger, Google Gemini Chat +8
AI & RAG

Automate how you reply to Reddit posts using AI-generated, first-person comments that sound human, follow subreddit rules, and (optionally) promote your own links or products.

Gmail Trigger, Reddit, Agent +5
AI & RAG

The scoring approach is adapted from the open-source evaluations project RAGAS and you can see the source here https://github.com/explodinggradients/ragas/blob/main/ragas/src/ragas/metrics/answercorre

Chain Llm, Output Parser Structured, OpenAI Chat +5
AI & RAG

Developers building AI-powered workflows who want to ensure their agents work reliably. If you need to validate AI outputs, test agent behavior systematically, or build maintainable automation, this t

Execute Workflow Trigger, Evaluation Trigger, Output Parser Structured +4
AI & RAG

The scoring approach is adapted from the open-source evaluations project RAGAS and you can see the source here https://github.com/explodinggradients/ragas/blob/main/ragas/src/ragas/metrics/answersimil

OpenAI Chat, Evaluation Trigger, Evaluation +3