AutomationFlowsAI & RAG › Custom LangChain Agent with OpenAI

Custom LangChain Agent with OpenAI

Original n8n title: Custom Langchain Agent Written in Javascript

Custom Langchain Agent Written In Javascript. Uses lmOpenAi, stickyNote, manualTrigger, lmChatOpenAi. Event-driven trigger; 10 nodes.

Event trigger★★★★☆ complexityAI-powered10 nodesLm Open AiOpenAI ChatAgent
AI & RAG Trigger: Event Nodes: 10 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow follows the Agent → OpenAI Chat 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
{
  "nodes": [
    {
      "id": "ad1a920e-1048-4b58-9c4a-a0469a1f189d",
      "name": "OpenAI",
      "type": "@n8n/n8n-nodes-langchain.lmOpenAi",
      "position": [
        900,
        628
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "7dd04ecd-f169-455c-9c90-140140e37542",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        800,
        340
      ],
      "parameters": {
        "width": 432,
        "height": 237,
        "content": "## Self-coded LLM Chain Node"
      },
      "typeVersion": 1
    },
    {
      "id": "05ad7d68-5dc8-42f2-8274-fcb5bdeb68cb",
      "name": "When clicking \"Execute Workflow\"",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        280,
        428
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "39e2fd34-3261-44a1-aa55-96f169d55aad",
      "name": "Set",
      "type": "n8n-nodes-base.set",
      "position": [
        620,
        428
      ],
      "parameters": {
        "values": {
          "string": [
            {
              "name": "input",
              "value": "Tell me a joke"
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 2
    },
    {
      "id": "42a3184c-0c62-4e79-9220-7a93e313317e",
      "name": "Set1",
      "type": "n8n-nodes-base.set",
      "position": [
        620,
        820
      ],
      "parameters": {
        "values": {
          "string": [
            {
              "name": "input",
              "value": "What year was Einstein born?"
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 2
    },
    {
      "id": "4e2af29d-7fc4-484b-8028-1b9a84d60172",
      "name": "Chat OpenAI",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        731,
        1108
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "334e9176-3a18-4838-84cb-70e8154f1a30",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        880,
        1028
      ],
      "parameters": {
        "width": 320.2172923777021,
        "height": 231,
        "content": "## Self-coded Tool Node"
      },
      "typeVersion": 1
    },
    {
      "id": "05e0d5c6-df18-42ba-99b6-a2b65633a14d",
      "name": "Custom - Wikipedia",
      "type": "@n8n/n8n-nodes-langchain.code",
      "position": [
        971,
        1108
      ],
      "parameters": {
        "code": {
          "supplyData": {
            "code": "console.log('Custom Wikipedia Node runs');\nconst { WikipediaQueryRun } = require('langchain/tools');\nreturn new WikipediaQueryRun();"
          }
        },
        "outputs": {
          "output": [
            {
              "type": "ai_tool"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "9c729e9a-f173-430c-8bcd-74101b614891",
      "name": "Custom - LLM Chain Node",
      "type": "@n8n/n8n-nodes-langchain.code",
      "position": [
        880,
        428
      ],
      "parameters": {
        "code": {
          "execute": {
            "code": "const { PromptTemplate } = require('langchain/prompts');\n\nconst query = $input.item.json.input;\nconst prompt = PromptTemplate.fromTemplate(query);\nconst llm = await this.getInputConnectionData('ai_languageModel', 0);\nlet chain = prompt.pipe(llm);\nconst output = await chain.invoke();\nreturn [ {json: { output } } ];"
          }
        },
        "inputs": {
          "input": [
            {
              "type": "main"
            },
            {
              "type": "ai_languageModel",
              "required": true,
              "maxConnections": 1
            }
          ]
        },
        "outputs": {
          "output": [
            {
              "type": "main"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "6427bbf0-49a6-4810-9744-87d88151e914",
      "name": "Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        880,
        820
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Set": {
      "main": [
        [
          {
            "node": "Custom - LLM Chain Node",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set1": {
      "main": [
        [
          {
            "node": "Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI": {
      "ai_languageModel": [
        [
          {
            "node": "Custom - LLM Chain Node",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Chat OpenAI": {
      "ai_languageModel": [
        [
          {
            "node": "Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Custom - Wikipedia": {
      "ai_tool": [
        [
          {
            "node": "Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \"Execute Workflow\"": {
      "main": [
        [
          {
            "node": "Set",
            "type": "main",
            "index": 0
          },
          {
            "node": "Set1",
            "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 empowers you to build and deploy a bespoke LangChain agent using JavaScript, enabling intelligent automation that processes queries, retrieves real-time information from sources like Wikipedia, and generates informed responses via OpenAI models. It's ideal for developers or automation enthusiasts seeking flexible AI-driven tasks without relying on pre-built templates, such as summarising articles or answering complex questions with external data. The pivotal step involves the custom JavaScript node that orchestrates the agent's logic, integrating seamlessly with ChatOpenAI for conversational outputs and lmOpenAI for underlying model interactions.

Use this workflow when you need a tailored AI agent for event-driven scenarios, like on-demand research or dynamic content generation, especially if you're comfortable tweaking JavaScript code. Avoid it for simple, no-code automations or when scalability demands a full backend setup, as it's best for prototyping rather than high-volume production. Common variations include swapping Wikipedia for other APIs, like news feeds, or chaining multiple agents for multi-step reasoning tasks.

About this workflow

Custom Langchain Agent Written In Javascript. Uses lmOpenAi, stickyNote, manualTrigger, lmChatOpenAi. Event-driven trigger; 10 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

LangChain - Example - Code Node Example. Uses lmOpenAi, stickyNote, manualTrigger, lmChatOpenAi. Event-driven trigger; 10 nodes.

Lm Open Ai, OpenAI Chat, Agent
AI & RAG

K&S-Media Downloadliste SQL. Uses httpRequest, agent, googleSheets, lmChatOpenAi. Event-driven trigger; 97 nodes.

HTTP Request, Agent, Google Sheets +3
AI & RAG

🎯 Create viral TikToks, Shorts, Reels, podcasts, and ASMR videos in minutes — all on autopilot.

OpenAI, HTTP Request, Form Trigger +7
AI & RAG

BoomerBobBot.TP. Uses agent, telegramTrigger, telegram, memoryBufferWindow. Event-driven trigger; 95 nodes.

Agent, Telegram Trigger, Telegram +10
AI & RAG

Generate AI viral videos with NanoBanana & VEO3, shared on socials via Blotato 2. Uses @blotato/n8n-nodes-blotato, googleSheets, lmChatOpenAi, toolThink. Event-driven trigger; 94 nodes.

@Blotato/N8N Nodes Blotato, Google Sheets, OpenAI Chat +9