{"record":{"id":"765fa7f226da599d","repo":"FlowiseAI/Flowise","slug":"llm-node-input-variables-values-are-not-provided","errorCode":null,"errorMessage":"LLM Node input variables values are not provided! Required: ${nodeInputVars}, Provided: ${providedInputVars}. Missing: ${missingInputVars}","messagePattern":"LLM Node input variables values are not provided! Required: (.+?), Provided: (.+?)\\. Missing: (.+?)","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/components/nodes/sequentialagents/LLMNode/LLMNode.ts","lineNumber":438,"sourceCode":"            }\n        }\n        llmNodeInputVariablesValues = handleEscapeCharacters(llmNodeInputVariablesValues, true)\n\n        const startLLM = sequentialNodes[0].startLLM\n        const llm = model || startLLM\n        if (nodeData.inputs) nodeData.inputs.model = llm\n\n        const multiModalMessageContent = sequentialNodes[0]?.multiModalMessageContent || (await processImageMessage(llm, nodeData, options))\n        const abortControllerSignal = options.signal as AbortController\n        const llmNodeInputVariables = uniq([...getInputVariables(systemPrompt), ...getInputVariables(humanPrompt)])\n\n        const missingInputVars = difference(llmNodeInputVariables, Object.keys(llmNodeInputVariablesValues)).join(' ')\n        const allVariablesSatisfied = missingInputVars.length === 0\n        if (!allVariablesSatisfied) {\n            const nodeInputVars = llmNodeInputVariables.join(' ')\n            const providedInputVars = Object.keys(llmNodeInputVariablesValues).join(' ')\n\n            throw new Error(\n                `LLM Node input variables values are not provided! Required: ${nodeInputVars}, Provided: ${providedInputVars}. Missing: ${missingInputVars}`\n            )\n        }\n\n        const workerNode = async (state: ISeqAgentsState, config: RunnableConfig) => {\n            const bindModel = config.configurable?.bindModel?.[nodeData.id]\n            return await agentNode(\n                {\n                    state,\n                    llm,\n                    agent: await createAgent(\n                        nodeData,\n                        options,\n                        llmNodeName,\n                        state,\n                        bindModel || llm,\n                        [...tools],\n                        systemPrompt,","sourceCodeStart":420,"sourceCodeEnd":456,"githubUrl":"https://github.com/FlowiseAI/Flowise/blob/abe4a8601a058047b350c260676826e21dd14101/packages/components/nodes/sequentialagents/LLMNode/LLMNode.ts#L420-L456","documentation":"The system and human prompt templates are scanned for {placeholder} tokens (getInputVariables). Every token must have a matching key in the provided prompt input values object. The error lists the required, provided, and missing variable names so the gap is explicit. Checked at init after the prompt-values JSON is parsed.","triggerScenarios":"A prompt contains {summary} but the Prompt Input Values object has no 'summary' key; a placeholder is misspelled relative to the value key; a placeholder was added to the prompt but its value was not supplied.","commonSituations":"Iterating on prompt text and adding a new placeholder without adding its value; case mismatch ({UserId} vs userId); renaming a variable in one place but not the other.","solutions":["Add the variables listed in 'Missing:' to the Prompt Input Values object with the exact key names.","Or remove the unused placeholders from the system/human prompts.","Verify exact spelling and case — {foo} and {Foo} are distinct."],"exampleFix":"// before: prompt has {summary} but values omit it\nprompt: \"Summarize: {summary}\"\nvalues: {\"topic\": \"rag\"}\n// error: Missing: summary\n\n// after\nvalues: {\"topic\": \"rag\", \"summary\": \"...\"}","handlingStrategy":"validation","validationCode":"import { uniq, difference } from 'lodash'\nconst required = uniq([...getInputVariables(systemPrompt), ...getInputVariables(humanPrompt)])\nconst provided = Object.keys(llmNodeInputVariablesValues)\nconst missing = difference(required, provided)\nif (missing.length) throw new Error(`Missing prompt input values: ${missing.join(', ')}`)","typeGuard":"const satisfiesPromptVars = (prompt: string, values: Record<string, unknown>): boolean =>\n  difference(getInputVariables(prompt), Object.keys(values)).length === 0","tryCatchPattern":null,"preventionTips":["When you add a {placeholder} to a prompt, immediately add its value in Prompt Input Values.","Keep placeholder spelling/case identical on both sides — {foo} != {Foo}.","Remove unused placeholders from prompts to avoid stale requirements."],"tags":["llm-node","prompt-variables","validation","init"],"backgroundTag":null,"analyzedSha":"abe4a8601a058047b350c260676826e21dd14101","analyzedAt":"2026-08-12T16:04:40.823Z","schemaVersion":2},"datasetVersion":"2026-08-12T18:17:37.767Z"}