qa/acceptance/relmio-release-acceptance.json
Rama main · réplica de lectura del repositorio original.
{
"name": "Relmio release acceptance",
"nodes": [
{
"parameters": {},
"id": "00000000-0000-4000-8000-000000000001",
"name": "Run acceptance",
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [
0,
600
]
},
{
"parameters": {
"mode": "manual",
"assignments": {
"assignments": [
{
"id": "00000000-0000-4000-8000-000000000002",
"name": "model",
"value": "gpt-6-astra",
"type": "string"
},
{
"id": "00000000-0000-4000-8000-000000000003",
"name": "localModel",
"value": "qwen3:0.6b",
"type": "string"
},
{
"id": "00000000-0000-4000-8000-000000000020",
"name": "sidecarBaseUrl",
"value": "http://n8n-openai-oauth:10531/v1",
"type": "string"
},
{
"id": "00000000-0000-4000-8000-000000000021",
"name": "acceptanceVersion",
"value": "2026-10-07.3",
"type": "string"
}
]
},
"options": {}
},
"id": "00000000-0000-4000-8000-000000000004",
"name": "Settings",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
240,
600
]
},
{
"parameters": {
"method": "POST",
"url": "={{ $('Settings').first().json.sidecarBaseUrl.replace(/\\/+$/, '') }}/responses",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "openAiApi",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify({ model: $('Settings').first().json.model, input: [{ role: 'user', content: 'Reply with exactly: http responses ok' }] }) }}",
"options": {
"timeout": 120000
}
},
"id": "00000000-0000-4000-8000-000000000005",
"name": "HTTP Request: Responses",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
520,
0
],
"credentials": {
"openAiApi": {
"name": "OpenAI Relmio"
}
},
"onError": "continueRegularOutput"
},
{
"parameters": {
"method": "POST",
"url": "={{ $('Settings').first().json.sidecarBaseUrl.replace(/\\/+$/, '') }}/chat/completions",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "openAiApi",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify({ model: $('Settings').first().json.model, messages: [{ role: 'user', content: 'Reply with exactly: http chat ok' }] }) }}",
"options": {
"timeout": 120000
}
},
"id": "00000000-0000-4000-8000-000000000006",
"name": "HTTP Request: Chat Completions",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
520,
200
],
"credentials": {
"openAiApi": {
"name": "OpenAI Relmio"
}
},
"onError": "continueRegularOutput"
},
{
"parameters": {
"promptType": "define",
"text": "Use the calculator tool to work out 17 * 23, then reply with only the number.",
"options": {
"returnIntermediateSteps": true
}
},
"id": "00000000-0000-4000-8000-000000000007",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 3.1,
"position": [
520,
400
],
"onError": "continueRegularOutput"
},
{
"parameters": {
"model": {
"__rl": true,
"mode": "id",
"value": "={{ $('Settings').first().json.model }}"
},
"responsesApiEnabled": true,
"options": {}
},
"id": "00000000-0000-4000-8000-000000000008",
"name": "Agent Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1.3,
"position": [
440,
620
],
"credentials": {
"openAiApi": {
"name": "OpenAI Relmio"
}
}
},
{
"parameters": {},
"id": "00000000-0000-4000-8000-000000000009",
"name": "Calculator",
"type": "@n8n/n8n-nodes-langchain.toolCalculator",
"typeVersion": 1,
"position": [
640,
620
]
},
{
"parameters": {
"promptType": "define",
"text": "Reply with exactly: chain ok"
},
"id": "00000000-0000-4000-8000-000000000010",
"name": "Basic LLM Chain",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"typeVersion": 1.9,
"position": [
520,
800
],
"onError": "continueRegularOutput"
},
{
"parameters": {
"model": {
"__rl": true,
"mode": "id",
"value": "={{ $('Settings').first().json.model }}"
},
"responsesApiEnabled": true,
"options": {}
},
"id": "00000000-0000-4000-8000-000000000011",
"name": "Chain Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1.3,
"position": [
520,
1000
],
"credentials": {
"openAiApi": {
"name": "OpenAI Relmio"
}
}
},
{
"parameters": {
"resource": "text",
"operation": "response",
"modelId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Settings').first().json.model }}"
},
"responses": {
"values": [
{
"type": "text",
"role": "user",
"content": "Reply with exactly: openai node ok"
}
]
},
"simplify": true,
"options": {}
},
"id": "00000000-0000-4000-8000-000000000012",
"name": "OpenAI: Message a Model",
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 2.3,
"position": [
520,
1200
],
"credentials": {
"openAiApi": {
"name": "OpenAI Relmio"
}
},
"onError": "continueRegularOutput"
},
{
"parameters": {
"resource": "image",
"operation": "generate",
"modelId": {
"__rl": true,
"mode": "id",
"value": "gpt-image-2"
},
"prompt": "A small green square centred on a plain white background",
"options": {}
},
"id": "00000000-0000-4000-8000-000000000013",
"name": "OpenAI: Generate an Image",
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 2.3,
"position": [
520,
1400
],
"credentials": {
"openAiApi": {
"name": "OpenAI Relmio"
}
},
"onError": "continueRegularOutput"
},
{
"parameters": {
"promptType": "define",
"text": "What is 2 + 2? Reply with only the number."
},
"id": "00000000-0000-4000-8000-000000000014",
"name": "Local Model Chain",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"typeVersion": 1.9,
"position": [
520,
1600
],
"onError": "continueRegularOutput"
},
{
"parameters": {
"model": {
"__rl": true,
"mode": "id",
"value": "={{ $('Settings').first().json.localModel }}"
},
"responsesApiEnabled": false,
"options": {}
},
"id": "00000000-0000-4000-8000-000000000015",
"name": "Local Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1.3,
"position": [
520,
1800
],
"credentials": {
"openAiApi": {
"name": "Relmio Local Model"
}
}
},
{
"parameters": {
"content": "Inactive on purpose. Run with **Execute workflow** only.\n\nKeep one copy of this workflow per n8n and reuse it for every QA run. When `acceptanceVersion` in **Settings** is older than the file in the Relmio repository, update this workflow in place instead of importing a second copy.\n\nCredentials: **OpenAI Relmio** (the sidecar, Base URL `http://n8n-openai-oauth:10531/v1`) on every node except the local model, and **Relmio Local Model** (Base URL `http://n8n-local-model:11434/v1`) on Local Chat Model. On another self-hosted n8n, set `sidecarBaseUrl` in **Settings** and the credential Base URL to the address that n8n reaches the sidecar at.\n\nSet the text model in **Settings**. Each check node keeps going on error, so open its output: a check passes only when it shows the expected text.",
"height": 400,
"width": 420
},
"id": "00000000-0000-4000-8000-000000000016",
"name": "Before you run",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-520,
0
]
},
{
"parameters": {
"content": "## Expected results\n\n- HTTP Request: Responses returns `http responses ok`\n- HTTP Request: Chat Completions returns `http chat ok`\n- AI Agent returns `391`, and its `intermediateSteps` show one Calculator call that returned `391`\n- Basic LLM Chain returns `chain ok`\n- OpenAI: Message a Model returns `openai node ok`\n- OpenAI: Generate an Image returns one binary image (image add-on only)\n- Local Model Chain returns `4` (local model only)\n\nAn `error` field in any output is a failure.",
"height": 300,
"width": 420
},
"id": "00000000-0000-4000-8000-000000000017",
"name": "Expected results",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-520,
440
]
}
],
"connections": {
"Run acceptance": {
"main": [
[
{
"node": "Settings",
"type": "main",
"index": 0
}
]
]
},
"Settings": {
"main": [
[
{
"node": "HTTP Request: Responses",
"type": "main",
"index": 0
},
{
"node": "HTTP Request: Chat Completions",
"type": "main",
"index": 0
},
{
"node": "AI Agent",
"type": "main",
"index": 0
},
{
"node": "Basic LLM Chain",
"type": "main",
"index": 0
},
{
"node": "OpenAI: Message a Model",
"type": "main",
"index": 0
},
{
"node": "OpenAI: Generate an Image",
"type": "main",
"index": 0
},
{
"node": "Local Model Chain",
"type": "main",
"index": 0
}
]
]
},
"Agent Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Calculator": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Chain Chat Model": {
"ai_languageModel": [
[
{
"node": "Basic LLM Chain",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Local Chat Model": {
"ai_languageModel": [
[
{
"node": "Local Model Chain",
"type": "ai_languageModel",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"pinData": {},
"tags": []
}