From fed7c3ec1fb0553adaa9a933f91aabfd54fe83a3 Mon Sep 17 00:00:00 2001 From: oleg Date: Mon, 21 Oct 2024 14:21:30 +0200 Subject: [PATCH] feat(AI Agent Node): Make tools optional when using OpenAI model with Tools agent (#11212) --- .../nodes/agents/Agent/Agent.node.ts | 21 ++++++++++++++++++- .../agents/Agent/agents/ToolsAgent/execute.ts | 8 ------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/packages/@n8n/nodes-langchain/nodes/agents/Agent/Agent.node.ts b/packages/@n8n/nodes-langchain/nodes/agents/Agent/Agent.node.ts index a14e4195c9..295eaa9296 100644 --- a/packages/@n8n/nodes-langchain/nodes/agents/Agent/Agent.node.ts +++ b/packages/@n8n/nodes-langchain/nodes/agents/Agent/Agent.node.ts @@ -8,7 +8,7 @@ import type { INodeTypeDescription, INodeProperties, } from 'n8n-workflow'; -import { promptTypeOptions, textInput } from '../../../utils/descriptions'; + import { conversationalAgentProperties } from './agents/ConversationalAgent/description'; import { conversationalAgentExecute } from './agents/ConversationalAgent/execute'; import { openAiFunctionsAgentProperties } from './agents/OpenAiFunctionsAgent/description'; @@ -21,6 +21,7 @@ import { sqlAgentAgentProperties } from './agents/SqlAgent/description'; import { sqlAgentAgentExecute } from './agents/SqlAgent/execute'; import { toolsAgentProperties } from './agents/ToolsAgent/description'; import { toolsAgentExecute } from './agents/ToolsAgent/execute'; +import { promptTypeOptions, textInput } from '../../../utils/descriptions'; // Function used in the inputs expression to figure out which inputs to // display based on the agent type @@ -351,6 +352,23 @@ export class Agent implements INodeType { }, }, }, + { + displayName: 'For more reliable structured output parsing, consider using the Tools agent', + name: 'notice', + type: 'notice', + default: '', + displayOptions: { + show: { + hasOutputParser: [true], + agent: [ + 'conversationalAgent', + 'reActAgent', + 'planAndExecuteAgent', + 'openAiFunctionsAgent', + ], + }, + }, + }, { displayName: 'Require Specific Output Format', name: 'hasOutputParser', @@ -372,6 +390,7 @@ export class Agent implements INodeType { displayOptions: { show: { hasOutputParser: [true], + agent: ['toolsAgent'], }, }, }, diff --git a/packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/execute.ts b/packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/execute.ts index 90952bac41..8a9db05083 100644 --- a/packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/execute.ts +++ b/packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/execute.ts @@ -294,14 +294,6 @@ export async function toolsAgentExecute(this: IExecuteFunctions): Promise