This workflow corresponds to n8n.io template #2766 — we link there as the canonical source.
This workflow follows the Chainllm → 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 →
{
"id": "HMoUOg8J7RzEcslH",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Extract personal data with a self-hosted LLM Mistral NeMo",
"tags": [],
"nodes": [
{
"id": "7e67ae65-88aa-4e48-aa63-2d3a4208cf4b",
"name": "When chat message received",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
-500,
20
],
"parameters": {
"options": {}
},
"typeVersion": 1.1
},
{
"id": "e064921c-69e6-4cfe-a86e-4e3aa3a5314a",
"name": "Ollama Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOllama",
"position": [
-280,
420
],
"parameters": {
"model": "mistral-nemo:latest",
"options": {
"useMLock": true,
"keepAlive": "2h",
"temperature": 0.1
}
},
"credentials": {
"ollamaApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "fe1379da-a12e-4051-af91-9d67a7c9a76b",
"name": "Auto-fixing Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserAutofixing",
"position": [
-200,
220
],
"parameters": {
"options": {
"prompt": "Instructions:\n--------------\n{instructions}\n--------------\nCompletion:\n--------------\n{completion}\n--------------\n\nAbove, the Completion did not satisfy the constraints given in the Instructions.\nError:\n--------------\n{error}\n--------------\n\nPlease try again. Please only respond with an answer that satisfies the constraints laid out in the Instructions:"
}
},
"typeVersion": 1
},
{
"id": "b6633b00-6ebb-43ca-8e5c-664a53548c17",
"name": "Structured Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
60,
400
],
"parameters": {
"schemaType": "manual",
"inputSchema": "{\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Name of the user\"\n },\n \"surname\": {\n \"type\": \"string\",\n \"description\": \"Surname of the user\"\n },\n \"commtype\": {\n \"type\": \"string\",\n \"enum\": [\"email\", \"phone\", \"other\"],\n \"description\": \"Method of communication\"\n },\n \"contacts\": {\n \"type\": \"string\",\n \"description\": \"Contact details. ONLY IF PROVIDED\"\n },\n \"timestamp\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"description\": \"When the communication occurred\"\n },\n \"subject\": {\n \"type\": \"string\",\n \"description\": \"Brief description of the communication topic\"\n }\n },\n \"required\": [\"name\", \"commtype\"]\n}"
},
"typeVersion": 1.2
},
{
"id": "23681a6c-cf62-48cb-86ee-08d5ce39bc0a",
"name": "Basic LLM Chain",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"onError": "continueErrorOutput",
"position": [
-240,
20
],
"parameters": {
"messages": {
"messageValues": [
{
"message": "=Please analyse the incoming user request. Extract information according to the JSON schema. Today is: \"{{ $now.toISO() }}\""
}
]
},
"hasOutputParser": true
},
"typeVersion": 1.5
},
{
"id": "8f4d1b4b-58c0-41ec-9636-ac555e440821",
"name": "On Error",
"type": "n8n-nodes-base.noOp",
"position": [
200,
140
],
"parameters": {},
"typeVersion": 1
},
{
"id": "f4d77736-4470-48b4-8f61-149e09b70e3e",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-560,
-160
],
"parameters": {
"color": 2,
"width": 960,
"height": 500,
"content": "## Update data source\nWhen you change the data source, remember to update the `Prompt Source (User Message)` setting in the **Basic LLM Chain node**."
},
"typeVersion": 1
},
{
"id": "5fd273c8-e61d-452b-8eac-8ac4b7fff6c2",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-560,
340
],
"parameters": {
"color": 2,
"width": 440,
"height": 220,
"content": "## Configure local LLM\nOllama offers additional settings \nto optimize model performance\nor memory usage."
},
"typeVersion": 1
},
{
"id": "63cbf762-0134-48da-a6cd-0363e870decd",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
340
],
"parameters": {
"color": 2,
"width": 400,
"height": 220,
"content": "## Define JSON Schema"
},
"typeVersion": 1
},
{
"id": "9625294f-3cb4-4465-9dae-9976e0cf5053",
"name": "Extract JSON Output",
"type": "n8n-nodes-base.set",
"position": [
200,
-80
],
"parameters": {
"mode": "raw",
"options": {},
"jsonOutput": "={{ $json.output }}\n"
},
"typeVersion": 3.4
},
{
"id": "2c6fba3b-0ffe-4112-b904-823f52cc220b",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-560,
200
],
"parameters": {
"width": 960,
"height": 120,
"content": "If the LLM response does not pass \nthe **Structured Output Parser** checks,\n**Auto-Fixer** will call the model again with a different \nprompt to correct the original response."
},
"typeVersion": 1
},
{
"id": "c73ba1ca-d727-4904-a5fd-01dd921a4738",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-560,
460
],
"parameters": {
"height": 80,
"content": "The same LLM connects to both **Basic LLM Chain** and to the **Auto-fixing Output Parser**. \n"
},
"typeVersion": 1
},
{
"id": "193dd153-8511-4326-aaae-47b89d0cd049",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
200,
440
],
"parameters": {
"width": 200,
"height": 100,
"content": "When the LLM model responds, the output is checked in the **Structured Output Parser**"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "9f3721a8-f340-43d5-89e7-3175c29c2f3a",
"connections": {
"Basic LLM Chain": {
"main": [
[
{
"node": "Extract JSON Output",
"type": "main",
"index": 0
}
],
[
{
"node": "On Error",
"type": "main",
"index": 0
}
]
]
},
"Ollama Chat Model": {
"ai_languageModel": [
[
{
"node": "Auto-fixing Output Parser",
"type": "ai_languageModel",
"index": 0
},
{
"node": "Basic LLM Chain",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "Auto-fixing Output Parser",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Auto-fixing Output Parser": {
"ai_outputParser": [
[
{
"node": "Basic LLM Chain",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"When chat message received": {
"main": [
[
{
"node": "Basic LLM Chain",
"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.
ollamaApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow shows how to use a self-hosted Large Language Model (LLM) with n8n's LangChain integration to extract personal information from user input. This is particularly useful for enterprise environments where data privacy is crucial, as it allows sensitive information to…
Source: https://n8n.io/workflows/2766/ — 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.
Becomex v2. Uses chatTrigger, lmChatOllama, agent, toolWorkflow. Chat trigger; 17 nodes.
This workflow is designed to generate prompts for AI agents and store them in Airtable.
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
This workflow creates an AI-powered chatbot that generates custom songs through an interactive conversation, then uploads the results to Google Drive.
Turn a single research question into a comprehensive, multi-source report with proper citations. This workflow automates the entire research process by leveraging the web-crawling power of Jina AI and