AutomationFlowsAI & RAG › AI Chatbot with OpenAI Memory

AI Chatbot with OpenAI Memory

Original n8n title: Http Executeworkflow (chat Trigger)

Http Executeworkflow. Uses stickyNote, chatTrigger, lmChatOpenAi, memoryBufferWindow. Chat trigger; 18 nodes.

Chat trigger trigger★★★★☆ complexityAI-powered18 nodesChat TriggerOpenAI ChatMemory Buffer WindowExecute Workflow TriggerInformation ExtractorHTTP RequestTool WorkflowAgent
AI & RAG Trigger: Chat trigger Nodes: 18 Complexity: ★★★★☆ AI nodes: yes Added:

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 →

Download .json
{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "12061ba0-24f8-4853-9898-c8710b118959",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        500
      ],
      "parameters": {
        "color": 7,
        "width": 1260,
        "height": 635,
        "content": "### Sub-workflow: Custom tool\nThe agent above can call this workflow. It calls an example API called \"Bored API\" and returns a string with an activity idea."
      },
      "typeVersion": 1
    },
    {
      "id": "4a2101f4-de86-4b2c-9fbc-5a75e73e3a26",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        0
      ],
      "parameters": {
        "color": 7,
        "width": 927.5,
        "height": 486.5625,
        "content": "### Main workflow: AI agent using custom tool"
      },
      "typeVersion": 1
    },
    {
      "id": "102ec972-1784-4b89-be6f-1d4bd8f85cf1",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        660,
        240
      ],
      "parameters": {
        "color": 5,
        "width": 177,
        "height": 199,
        "content": "**This tool calls the sub-workflow below**"
      },
      "typeVersion": 1
    },
    {
      "id": "707d76f1-0b45-4347-b16a-3b66906711bc",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        300,
        240
      ],
      "parameters": {
        "color": 2,
        "width": 170,
        "height": 191,
        "content": "**Set your credentials**"
      },
      "typeVersion": 1
    },
    {
      "id": "d2a9637b-d988-4978-a112-4b96f279f0c0",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        280,
        840
      ],
      "parameters": {
        "color": 2,
        "width": 170,
        "height": 190,
        "content": "**Set your credentials**"
      },
      "typeVersion": 1
    },
    {
      "id": "02f5308b-61db-467d-84f4-8b2ae8655dfd",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -160,
        80
      ],
      "parameters": {
        "color": 4,
        "width": 185.9375,
        "height": 214.8397420554627,
        "content": "## Try it out\n\nSelect **Chat** at the bottom and enter:\n\n_Hi! Please suggest something to do. I feel like learning something new._"
      },
      "typeVersion": 1
    },
    {
      "id": "c012dfad-0ed8-4072-9c57-24f48aadd620",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        960,
        920
      ],
      "parameters": {
        "width": 280,
        "height": 145,
        "content": "## Next steps\n\nLearn more about [Advanced AI in n8n](https://docs.n8n.io/advanced-ai/)"
      },
      "typeVersion": 1
    },
    {
      "id": "39e0c9eb-5736-46a0-b4ce-64425f56ba8c",
      "name": "When chat message received",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        160,
        80
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.1
    },
    {
      "id": "38dad34c-116b-4673-b338-6fbf1d019bab",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        340,
        300
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "78af18c4-3541-4ff2-8526-fb186614051b",
      "name": "Simple Memory",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        520,
        300
      ],
      "parameters": {},
      "typeVersion": 1.3
    },
    {
      "id": "45f17ad3-f7da-4d98-a597-f66c2efdbbea",
      "name": "When Executed by Another Workflow",
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "position": [
        120,
        660
      ],
      "parameters": {
        "workflowInputs": {
          "values": [
            {
              "name": "chatInput"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "135ac846-fcc7-4754-8127-6a810b76594a",
      "name": "OpenAI Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        320,
        900
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "8e9d8b39-a7a4-44fb-8ac4-0555e632f0df",
      "name": "Work out activity type and number of people1",
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "position": [
        340,
        660
      ],
      "parameters": {
        "text": "={{ $('When Executed by Another Workflow').item.json.chatInput }}",
        "options": {},
        "schemaType": "manual",
        "inputSchema": "{\n  \"type\": \"object\",\n  \"required\": [\"type\",\"participants\"],\n  \"properties\": {\n    \"type\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"data\": {\n          \"enum\": [\"education\", \"recreational\",\"social\",\"diy\",\"charity\",\"cooking\",\"relaxation\",\"music\",\"busywork\"]\n        }\n      }\n    },\n    \"participants\": {\n      \"type\": \"number\"\n    }\n  }\n}"
      },
      "typeVersion": 1
    },
    {
      "id": "312f12d9-db30-48b0-aca3-a6c3a0250b2d",
      "name": "Call the API",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        700,
        660
      ],
      "parameters": {
        "url": "https://bored-api.appbrewery.com/filter",
        "options": {},
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "type",
              "value": "={{ $json.output.type.data }}"
            },
            {
              "name": "participicants",
              "value": "={{ $json.output.participants }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "0e97b6c1-3291-44a2-bf35-39335b9b90a1",
      "name": "Activity Tool",
      "type": "@n8n/n8n-nodes-langchain.toolWorkflow",
      "position": [
        700,
        300
      ],
      "parameters": {
        "name": "activity_tool",
        "workflowId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $workflow.id }}"
        },
        "description": "Suggest an activity for a person to do. Use this tool if someone is bored, or asking for ideas of things to do.",
        "workflowInputs": {
          "value": {
            "chatInput": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('chatInput', ``, 'string') }}"
          },
          "schema": [
            {
              "id": "chatInput",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "chatInput",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        }
      },
      "typeVersion": 2
    },
    {
      "id": "256b8adc-ef71-40da-a40c-10a1045c9d7d",
      "name": "Set 'response' value",
      "type": "n8n-nodes-base.set",
      "position": [
        1060,
        660
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "c78b10cd-7d6d-4512-ad0b-6f6ec3c706b2",
              "name": "response",
              "type": "string",
              "value": "={{ $json.data }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "ede9e3c2-c3ce-44bd-92be-51eb90d086dc",
      "name": "Combine",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        880,
        660
      ],
      "parameters": {
        "include": "specifiedFields",
        "options": {},
        "aggregate": "aggregateAllItemData",
        "fieldsToInclude": "activity"
      },
      "typeVersion": 1
    },
    {
      "id": "b4b49c7f-5491-416c-98d1-518372329c77",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        420,
        80
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.8
    }
  ],
  "connections": {
    "Combine": {
      "main": [
        [
          {
            "node": "Set 'response' value",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Call the API": {
      "main": [
        [
          {
            "node": "Combine",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Activity Tool": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Simple Memory": {
      "ai_memory": [
        [
          {
            "node": "AI Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "Work out activity type and number of people1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "When chat message received": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When Executed by Another Workflow": {
      "main": [
        [
          {
            "node": "Work out activity type and number of people1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Work out activity type and number of people1": {
      "main": [
        [
          {
            "node": "Call the API",
            "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.

Pro

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

How this works

This workflow enables seamless execution of sub-workflows through natural language chat interactions, allowing users to trigger complex automations without navigating interfaces. It suits teams managing dynamic processes, such as customer support or content generation, by interpreting chat inputs via OpenAI's language model and dispatching HTTP requests to initiate the desired workflow. The key step involves the chat trigger capturing messages, followed by AI-powered extraction of intent to route the execution accurately, ensuring reliable and context-aware responses.

Use this when building conversational agents that need to invoke multiple n8n workflows based on user queries, like automating ticket routing from a Slack chat. Avoid it for simple, non-AI tasks or high-volume scenarios without memory buffers, as it relies on OpenAI for processing. Common variations include adding custom integrations for specific triggers or extending the memory window for longer conversation histories.

About this workflow

Http Executeworkflow. Uses stickyNote, chatTrigger, lmChatOpenAi, memoryBufferWindow. Chat trigger; 18 nodes.

Source: https://github.com/Zie619/n8n-workflows — 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 attempts to create an AI-powered content assistant for WordPress sites using Mistral AI, enabling article recommendations, content summarization, and contextual Q&A capabilities.

Chat Trigger, Output Parser Structured, Agent +10
AI & RAG

by Varritech Technologies

Chat Trigger, Agent, OpenAI Chat +8
AI & RAG

Airtable AI Agent. Uses lmChatOpenAi, agent, toolWorkflow, toolCode. Chat trigger; 42 nodes.

OpenAI Chat, Agent, Tool Workflow +6
AI & RAG

Ai Agent To Chat With Airtable And Analyze Data. Uses lmChatOpenAi, agent, stickyNote, memoryBufferWindow. Chat trigger; 41 nodes.

OpenAI Chat, Agent, Memory Buffer Window +6
AI & RAG

I prepared a detailed guide that shows the entire process of building an AI agent that integrates with Airtable data in n8n. This template covers everything from data preparation to advanced configura

OpenAI Chat, Agent, Memory Buffer Window +6