FlowiseAI/Flowise · error · Error
LLM Node only compatible with function calling models.
Error message
LLM Node only compatible with function calling models.
What it means
When tools are attached to the LLM Node, the model must support tool/function calling via bindTools. If llm.bindTools is undefined (the integration does not implement function calling), the node refuses to build the agent because tool calls could never be produced. Checked inside createAgent at init.
Source
Thrown at packages/components/nodes/sequentialagents/LLMNode/LLMNode.ts:505
}
}
async function createAgent(
nodeData: INodeData,
options: ICommonObject,
llmNodeName: string,
state: ISeqAgentsState,
llm: BaseChatModel,
tools: any[],
systemPrompt: string,
humanPrompt: string,
multiModalMessageContent: MessageContentImageUrl[],
llmNodeInputVariablesValues: ICommonObject,
llmStructuredOutput: string
): Promise<AgentExecutor | RunnableSequence> {
if (tools.length) {
if (llm.bindTools === undefined) {
throw new Error(`LLM Node only compatible with function calling models.`)
}
// @ts-ignore
llm = llm.bindTools(tools)
}
if (llmStructuredOutput && llmStructuredOutput !== '[]') {
try {
const structuredOutput = z.object(convertStructuredSchemaToZod(llmStructuredOutput))
// @ts-ignore
llm = llm.withStructuredOutput(structuredOutput, {
method: 'functionCalling'
})
} catch (exception) {
console.error(exception)
}
}
View on GitHub (pinned to abe4a8601a)
Solutions
- Switch the LLM Node's model to a function-calling-capable one (e.g. gpt-4/gpt-4o, Claude, Mistral-Large, Gemini).
- Remove the tools from the node if tool calling is not required.
- Upgrade the relevant langchain model-integration package so bindTools is present on the model class.
Example fix
// before: non-FC model with tools
model: ChatOpenAI({...}) // older integration w/o bindTools
tools: [searchTool]
// after: use a supported FC model and current integration
model: new ChatOpenAI({ model: 'gpt-4o', ... }) // bindTools available
tools: [searchTool] Defensive patterns
Strategy: type-guard
Validate before calling
if (tools.length && typeof (model as any).bindTools !== 'function') {
throw new Error(`Model ${/* name */ ''} does not support function calling (bindTools). Remove tools or pick an FC model.`)
} Type guard
const supportsFunctionCalling = (m: any): boolean => typeof m?.bindTools === 'function'
Prevention
- Pair tools only with known function-calling models.
- Keep langchain model-integration packages current so bindTools is present.
- When in doubt, check `typeof model.bindTools === 'function'` before attaching tools.
When it happens
Trigger: tools.length > 0 and the selected model's LangChain integration does not expose bindTools — e.g. an older completion-style model, some local/Ollama models without function calling, or a langchain integration package too old to implement bindTools.
Common situations: Selecting a non-function-calling model while tools are wired; upgrading Flowise but not the model integration packages; mixing a vision-only or text-only model with tool nodes.
Related errors
- This agent only compatible with function calling models.
- Agent Node only compatible with function calling models.
- Agent needs to have a function calling capable models.
- LLM Node name is required!
- Agent must have a predecessor!
AI-assisted analysis of FlowiseAI/Flowise@abe4a8601a (2026-08-12).
Data as JSON: /api/errors/13e35f3cc4d4d4c0.
Report an issue: GitHub.