mirror of
https://github.com/n8n-io/n8n.git
synced 2025-01-03 08:57:28 -08:00
fix(AI Agent Node): Add binary message before scratchpad to prevent tool calling loops (#11845)
This commit is contained in:
parent
adf026c201
commit
5c80cb57cf
|
@ -258,7 +258,6 @@ export async function toolsAgentExecute(this: IExecuteFunctions): Promise<INodeE
|
||||||
['system', `{system_message}${outputParser ? '\n\n{formatting_instructions}' : ''}`],
|
['system', `{system_message}${outputParser ? '\n\n{formatting_instructions}' : ''}`],
|
||||||
['placeholder', '{chat_history}'],
|
['placeholder', '{chat_history}'],
|
||||||
['human', '{input}'],
|
['human', '{input}'],
|
||||||
['placeholder', '{agent_scratchpad}'],
|
|
||||||
];
|
];
|
||||||
|
|
||||||
const hasBinaryData = this.getInputData(0, 'main')?.[0]?.binary !== undefined;
|
const hasBinaryData = this.getInputData(0, 'main')?.[0]?.binary !== undefined;
|
||||||
|
@ -266,6 +265,9 @@ export async function toolsAgentExecute(this: IExecuteFunctions): Promise<INodeE
|
||||||
const binaryMessage = await extractBinaryMessages(this);
|
const binaryMessage = await extractBinaryMessages(this);
|
||||||
messages.push(binaryMessage);
|
messages.push(binaryMessage);
|
||||||
}
|
}
|
||||||
|
// We add the agent scratchpad last, so that the agent will not run in loops
|
||||||
|
// by adding binary messages between each interaction
|
||||||
|
messages.push(['placeholder', '{agent_scratchpad}']);
|
||||||
const prompt = ChatPromptTemplate.fromMessages(messages);
|
const prompt = ChatPromptTemplate.fromMessages(messages);
|
||||||
|
|
||||||
const agent = createToolCallingAgent({
|
const agent = createToolCallingAgent({
|
||||||
|
|
Loading…
Reference in a new issue