diff --git a/packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ConversationalAgent/description.ts b/packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ConversationalAgent/description.ts index b65b2fddf2..0bb67fa0a9 100644 --- a/packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ConversationalAgent/description.ts +++ b/packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ConversationalAgent/description.ts @@ -67,6 +67,13 @@ export const conversationalAgentProperties: INodeProperties[] = [ default: 10, description: 'The maximum number of iterations the agent will run before stopping', }, + { + displayName: 'Return Intermediate Steps', + name: 'returnIntermediateSteps', + type: 'boolean', + default: false, + description: 'Whether or not the output should include intermediate steps the agent took', + }, ], }, ]; diff --git a/packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ConversationalAgent/execute.ts b/packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ConversationalAgent/execute.ts index 5d435059e2..abc820b325 100644 --- a/packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ConversationalAgent/execute.ts +++ b/packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ConversationalAgent/execute.ts @@ -41,6 +41,7 @@ export async function conversationalAgentExecute( systemMessage?: string; humanMessage?: string; maxIterations?: number; + returnIntermediateSteps?: boolean; }; const agentExecutor = await initializeAgentExecutorWithOptions(tools, model, { @@ -50,6 +51,7 @@ export async function conversationalAgentExecute( // memory option, but the memoryKey set on it must be "chat_history". agentType: 'chat-conversational-react-description', memory, + returnIntermediateSteps: options?.returnIntermediateSteps === true, maxIterations: options.maxIterations ?? 10, agentArgs: { systemMessage: options.systemMessage, diff --git a/packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/OpenAiFunctionsAgent/description.ts b/packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/OpenAiFunctionsAgent/description.ts index 5d7d4cc81b..34007d1084 100644 --- a/packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/OpenAiFunctionsAgent/description.ts +++ b/packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/OpenAiFunctionsAgent/description.ts @@ -57,6 +57,13 @@ export const openAiFunctionsAgentProperties: INodeProperties[] = [ default: 10, description: 'The maximum number of iterations the agent will run before stopping', }, + { + displayName: 'Return Intermediate Steps', + name: 'returnIntermediateSteps', + type: 'boolean', + default: false, + description: 'Whether or not the output should include intermediate steps the agent took', + }, ], }, ]; diff --git a/packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/OpenAiFunctionsAgent/execute.ts b/packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/OpenAiFunctionsAgent/execute.ts index ecdd9e7ca2..e21b5bdf42 100644 --- a/packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/OpenAiFunctionsAgent/execute.ts +++ b/packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/OpenAiFunctionsAgent/execute.ts @@ -40,6 +40,7 @@ export async function openAiFunctionsAgentExecute( const options = this.getNodeParameter('options', 0, {}) as { systemMessage?: string; maxIterations?: number; + returnIntermediateSteps?: boolean; }; const agentConfig: AgentExecutorInput = { @@ -49,6 +50,7 @@ export async function openAiFunctionsAgentExecute( }), tools, maxIterations: options.maxIterations ?? 10, + returnIntermediateSteps: options?.returnIntermediateSteps === true, memory: memory ?? new BufferMemory({ diff --git a/packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ReActAgent/description.ts b/packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ReActAgent/description.ts index 8c806b005c..0feec7bfa6 100644 --- a/packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ReActAgent/description.ts +++ b/packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ReActAgent/description.ts @@ -82,6 +82,13 @@ export const reActAgentAgentProperties: INodeProperties[] = [ rows: 6, }, }, + { + displayName: 'Return Intermediate Steps', + name: 'returnIntermediateSteps', + type: 'boolean', + default: false, + description: 'Whether or not the output should include intermediate steps the agent took', + }, ], }, ]; diff --git a/packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ReActAgent/execute.ts b/packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ReActAgent/execute.ts index 13e77ad76c..0366fedf73 100644 --- a/packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ReActAgent/execute.ts +++ b/packages/@n8n/nodes-langchain/nodes/agents/Agent/agents/ReActAgent/execute.ts @@ -34,6 +34,7 @@ export async function reActAgentAgentExecute( suffix?: string; suffixChat?: string; humanMessageTemplate?: string; + returnIntermediateSteps?: boolean; }; let agent: ChatAgent | ZeroShotAgent; @@ -50,7 +51,11 @@ export async function reActAgentAgentExecute( }); } - const agentExecutor = AgentExecutor.fromAgentAndTools({ agent, tools }); + const agentExecutor = AgentExecutor.fromAgentAndTools({ + agent, + tools, + returnIntermediateSteps: options?.returnIntermediateSteps === true, + }); const returnData: INodeExecutionData[] = []; diff --git a/packages/@n8n/nodes-langchain/nodes/tools/ToolWikipedia/ToolWikipedia.node.ts b/packages/@n8n/nodes-langchain/nodes/tools/ToolWikipedia/ToolWikipedia.node.ts index 7892d8d54b..bc8ff97c0a 100644 --- a/packages/@n8n/nodes-langchain/nodes/tools/ToolWikipedia/ToolWikipedia.node.ts +++ b/packages/@n8n/nodes-langchain/nodes/tools/ToolWikipedia/ToolWikipedia.node.ts @@ -43,8 +43,13 @@ export class ToolWikipedia implements INodeType { }; async supplyData(this: IExecuteFunctions): Promise { + const WikiTool = new WikipediaQueryRun(); + + WikiTool.description = + 'A tool for interacting with and fetching data from the Wikipedia API. The input should always be a string query.'; + return { - response: logWrapper(new WikipediaQueryRun(), this), + response: logWrapper(WikiTool, this), }; } }