Synthesize and compare multiple LLM responses with OpenRouter council
Ready for 3.0What this workflow does
This AI workflow has 20 nodes and runs when a chat message arrives. It uses only n8n's built-in nodes. It also calls openrouter.ai over HTTP.
How it runs
Trigger: When a chat message arrives.
- Initialize Variables (Edit Fields (Set)): sets 3 fields: userQuery, councilModels, chairmanModel
- Split by Model (Split Out): splits a list into separate items
- Stage 1: Query Model Answers (HTTP Request): calls openrouter.ai (POST)
- Stage 1: Extract Responses (Edit Fields (Set)): sets 2 fields: model, response
- Stage 1: Aggregate Responses (Aggregate): combines items into one
- Stage 2: Create Anonymized Responses (Edit Fields (Set)): sets 2 fields: labeledResponses, anonymizedText
- Stage 2: Build Ranking Prompt (Edit Fields (Set)): sets or maps fields
- Stage 2: Re-Add councilModels (Edit Fields (Set)): sets 2 fields: rankingPrompt, councilModels
- Stage 2: rankingPrompt per LLM (Split Out): splits a list into separate items
- Stage 2: Query Model Answer Rankings (HTTP Request): calls openrouter.ai (POST)
…plus 9 more steps. See the full node list below.
HTTP calls to: openrouter.ai
Before you upgrade to n8n 3.0
Nothing in this workflow is removed in n8n 3.0, so it should import and run after the upgrade.
Nodes used (7)
- Edit Fields (Set)
n8n-nodes-base.set - Split Out
n8n-nodes-base.splitOut - Chat Trigger
@n8n/n8n-nodes-langchain.chatTrigger - HTTP Request
n8n-nodes-base.httpRequest - Aggregate
n8n-nodes-base.aggregate - Send Email
n8n-nodes-base.emailSend - Code
n8n-nodes-base.code
From the author
This template adapts Andrej Karpathy’s LLM Council concept for use in n8n, creating a workflow that collects, evaluates, and synthesizes multiple large language model (LLM) responses to reduce individual model bias and improve answer quality. 🎯 The gist This…