This workflow corresponds to n8n.io template #7066 — we link there as the canonical source.
This workflow follows the Agent → Chat Trigger recipe pattern — see all workflows that pair these two integrations.
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 →
{
"nodes": [
{
"id": "97a1c69c-d9b4-44a4-a533-25c1af48b38f",
"name": "When chat message received",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
-32,
-96
],
"parameters": {
"options": {}
},
"typeVersion": 1.3
},
{
"id": "3a6435c3-636b-4e88-b4be-3fdc7af4f587",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
208,
-128
],
"parameters": {
"options": {
"systemMessage": "You are a very smart assistant.\n\nYou always start by calling the tool \"Initial thoughts\" to plan the way you'll proceed to use the tools X, Y, and Z.\n\nOnce you've executed your initial plan, call the tool \"Additional thoughts\" to check in with the results and decide if you need to further use tools X, Y, and Z or if you're ready to answer the user.\n"
}
},
"typeVersion": 2.2
},
{
"id": "1cdbe2f6-5b78-4c5c-8a76-2ddd2b126543",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
48,
112
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "99fb74bf-dae8-4ae4-9f35-ad5c95d5a97d",
"name": "Simple Memory",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
208,
112
],
"parameters": {},
"typeVersion": 1.3
},
{
"id": "74bd5f99-5e02-41b9-961e-7d4654df47a4",
"name": "Initial thoughts",
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"position": [
448,
224
],
"parameters": {
"workflowId": {
"__rl": true,
"mode": "list",
"value": "KNxyzmWuqSCK1GUR",
"cachedResultName": "TEMPLATE - AI agent with multiple thinking tools"
},
"description": "Always start your process by calling this tool to write initial thoughts and plan the way you'll go about answering the user query.",
"workflowInputs": {
"value": {
"Thoughts": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Thoughts', `Write initial thoughts very concisely (be token efficient, just list some thoughts) on the best ways to go about the user query.`, 'string') }}"
},
"schema": [
{
"id": "Thoughts",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Thoughts",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Thoughts"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
}
},
"typeVersion": 2.2
},
{
"id": "81f7dad8-01d4-4f26-be4b-250835f97a6b",
"name": "Additional thoughts",
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"position": [
624,
224
],
"parameters": {
"workflowId": {
"__rl": true,
"mode": "list",
"value": "KNxyzmWuqSCK1GUR",
"cachedResultName": "TEMPLATE - AI agent with multiple thinking tools"
},
"description": "Call this tool after having ... to check-in and decide if other steps would be needed before being able to finally answer the user query.",
"workflowInputs": {
"value": {
"Thoughts": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Thoughts', `Write your thoughts very concisely (be token efficient, just list some thoughts) on the best ways to go about the user query.`, 'string') }}"
},
"schema": [
{
"id": "Thoughts",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Thoughts",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Thoughts"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
}
},
"typeVersion": 2.2
},
{
"id": "6912f166-d7a7-441c-92e6-578f3f9a81e5",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-608,
-96
],
"parameters": {
"width": 480,
"height": 768,
"content": "# Advanced Agent Reasoning Framework\n\nThis template demonstrates how to give an AI agent multiple, custom \"thinking\" steps to build more powerful and reliable automations. It bypasses the single **Think Tool** limit by using a reusable sub-workflow.\n\n## How it works\n\nA simple sub-workflow is used as a reusable \"scratchpad.\" We call it multiple times with the **Tool (Workflow)** node, giving each call a unique description to guide the agent's thinking process (e.g., plan first, then reflect later).\n\n## How to use this template\n\nThis template is a foundation. To make it your own:\n\n1. **Add your action tools:** Connect your own tools (e.g., web search, API calls) to the **AI Agent**. It needs tasks to think about!\n2. **Customize the thinking:** Edit the `description` of the `Initial thoughts` and `Additional thoughts` tools to make them relevant to your new action tools.\n3. **Instruct the agent:** Update the **system prompt** of the main **AI Agent** to tell it how to use its new set of thinking and action tools to solve problems.\n4. **Connect your AI provider** and activate the workflow."
},
"typeVersion": 1
},
{
"id": "3dd09d82-c7d3-40e9-bad6-3b64729142e5",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
384,
96
],
"parameters": {
"color": 7,
"width": 400,
"height": 240,
"content": "## Your thinking tools\nFeel free to adjust their prompts, add more, and connect other necessary tools for your workflow."
},
"typeVersion": 1
},
{
"id": "7fdd3183-a348-4c1b-b1ee-5ceef90bfc07",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-16,
352
],
"parameters": {
"color": 7,
"width": 304,
"height": 320,
"content": "## The subworkflow\nThis subworkflow imitates the thinking tool as it accepts a string called \"thought\" as an input."
},
"typeVersion": 1
},
{
"id": "3eab469a-d1d3-4da2-be78-c938f85dc943",
"name": "Thinking sub-workflow",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [
80,
512
],
"parameters": {
"workflowInputs": {
"values": [
{
"name": "Thoughts"
}
]
}
},
"typeVersion": 1.1
},
{
"id": "96cb61dc-146f-4c34-bec5-6d150d2c2bd7",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
192,
-240
],
"parameters": {
"color": 7,
"width": 400,
"height": 240,
"content": "## The agent\nDon't forget to customise the system prompt to your use case!"
},
"typeVersion": 1
}
],
"connections": {
"Simple Memory": {
"ai_memory": [
[
{
"node": "AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"Initial thoughts": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Additional thoughts": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"When chat message received": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
openAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Unlock a new level of sophistication for your AI agents with this template. While the native n8n Think Tool is great for giving an agent an internal monologue, it's limited to one instance. This workflow provides a clever solution using a sub-workflow to create multiple, custom…
Source: https://n8n.io/workflows/7066/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This n8n template provides a powerful AI-powered chatbot that acts as your personal Spotify DJ. Simply tell the chatbot what kind of music you're in the mood for, and it will intelligently create a cu
I prepared a detailed guide showcasing the process of building an AI agent that interacts with a Snowflake database using n8n. This setup enables conversational querying, secure execution of SQL queri
Currently Work-In-Progress
Build your own AI Prompt Hub inside n8n. This template lets ChatGPT automatically search your saved prompts in Notion using semantic embeddings from HuggingFace. Each time a user sends a message, the
Chat with an AI and ask questions about your Meta Ads metrics.