FlowiseAI/Flowise · error · Error
This agent only compatible with function calling models.
Error message
This agent only compatible with function calling models.
What it means
Thrown on the non-interrupt tool-calling path when `llm.bindTools === undefined`. The Agent builds a `RunnableSequence` ending in `modelWithTools = llm.bindTools(tools)`, which only exists on chat models that support OpenAI-style function/tool calling. Without `bindTools`, the agent cannot attach tools at all, so init aborts before constructing the runnable.
Source
Thrown at packages/components/nodes/sequentialagents/Agent/Agent.ts:651
): Promise<any> {
if (tools.length && !interrupt) {
const promptArrays = [
new MessagesPlaceholder('messages'),
new MessagesPlaceholder('agent_scratchpad')
] as BaseMessagePromptTemplateLike[]
if (systemPrompt) promptArrays.unshift(['system', systemPrompt])
if (humanPrompt) promptArrays.push(['human', humanPrompt])
let prompt = ChatPromptTemplate.fromMessages(promptArrays)
prompt = await checkMessageHistory(nodeData, options, prompt, promptArrays, systemPrompt)
if (multiModalMessageContent.length) {
const msg = HumanMessagePromptTemplate.fromTemplate([...multiModalMessageContent])
prompt.promptMessages.splice(1, 0, msg)
}
if (llm.bindTools === undefined) {
throw new Error(`This agent only compatible with function calling models.`)
}
const modelWithTools = llm.bindTools(tools)
let agent
if (!agentInputVariablesValues || !Object.keys(agentInputVariablesValues).length) {
agent = RunnableSequence.from([
RunnablePassthrough.assign({
//@ts-ignore
agent_scratchpad: (input: { steps: ToolsAgentStep[] }) => formatToOpenAIToolMessages(input.steps)
}),
prompt,
modelWithTools,
new ToolCallingAgentOutputParser()
]).withConfig({
metadata: { sequentialNodeName: agentName }
})
} else {View on GitHub (pinned to abe4a8601a)
Solutions
- Switch the Agent (or the Start node) to a function-calling-capable model — e.g. gpt-4o, gpt-3.5-turbo-0613+, Claude 3+, Gemini 1.5+.
- Upgrade `@langchain/core` and the relevant provider package to a version that implements `bindTools`.
- Remove the attached tools if you do not actually need tool calling on this agent.
- Set the Agent's `model` input explicitly rather than relying on the inherited Start LLM.
Example fix
// before: Start node model is a basic chat model with no bindTools
nodeData.inputs.model = basicChatModel
nodeData.inputs.tools = [searchTool] // throws [283]
// after
nodeData.inputs.model = new ChatOpenAI({ modelName: 'gpt-4o' }) // supports bindTools Defensive patterns
Strategy: type-guard
Validate before calling
function assertFunctionCallingModel(llm) {
if (typeof llm?.bindTools !== 'function') {
throw new Error(
`Model ${llm?.constructor?.name ?? typeof llm} does not support tool calling. Use a function-calling-capable model (gpt-4o, Claude 3+, Gemini 1.5+).`
)
}
}
assertFunctionCallingModel(llm) Type guard
function supportsFunctionCalling(llm): llm is BaseChatModel & { bindTools: (tools: unknown[]) => unknown } {
return typeof (llm as any)?.bindTools === 'function'
} Prevention
- Always set the Agent's `model` input explicitly to a known function-calling model when tools are attached.
- Upgrade @langchain/core and the provider integration so bindTools is present.
- Do not rely on the inherited Start LLM being tool-capable unless you have verified it.
When it happens
Trigger: Calling Agent.init with `tools.length > 0` and `interrupt` falsy, where the resolved `llm` (either `nodeData.inputs.model` or `sequentialNodes[0].startLLM`) does not expose a `bindTools` method.
Common situations: Chose a non-function-calling chat model (older base model, a simple ChatModel integration, a model whose provider integration lacks tool support); using an older @langchain/core where `bindTools` had not yet been added; the `model` input was left empty and the Start node's LLM is non-tool-calling.
Related errors
- Agent Node only compatible with function calling models.
- LLM Node only compatible with function calling models.
- Agent needs to have a function calling capable models.
- This agent only compatible with function calling models.
- ${getErrorMessage(e)}
AI-assisted analysis of FlowiseAI/Flowise@abe4a8601a (2026-08-12).
Data as JSON: /api/errors/02cc40c12f00d052.
Report an issue: GitHub.