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 →
{
"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.
openAiApi
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 →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
LangChain - Example - Code Node Example. Uses lmOpenAi, stickyNote, manualTrigger, lmChatOpenAi. Event-driven trigger; 10 nodes.
K&S-Media Downloadliste SQL. Uses httpRequest, agent, googleSheets, lmChatOpenAi. Event-driven trigger; 97 nodes.
🎯 Create viral TikToks, Shorts, Reels, podcasts, and ASMR videos in minutes — all on autopilot.
BoomerBobBot.TP. Uses agent, telegramTrigger, telegram, memoryBufferWindow. Event-driven trigger; 95 nodes.
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.