From b81286c889d686c601310684d5aa5e498792b842 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E0=A4=95=E0=A4=BE=E0=A4=B0=E0=A4=A4=E0=A5=8B=E0=A4=AB?= =?UTF-8?q?=E0=A5=8D=E0=A4=AB=E0=A5=87=E0=A4=B2=E0=A4=B8=E0=A5=8D=E0=A4=95?= =?UTF-8?q?=E0=A5=8D=E0=A4=B0=E0=A4=BF=E0=A4=AA=E0=A5=8D=E0=A4=9F=E2=84=A2?= Date: Mon, 16 Dec 2024 11:45:38 +0100 Subject: [PATCH] use the forked AgentExecutor for all our agents --- .../nodes/agents/Agent/agents/OpenAiFunctionsAgent/execute.ts | 3 ++- .../nodes/agents/Agent/agents/ReActAgent/execute.ts | 3 ++- .../nodes/agents/Agent/agents/ToolsAgent/execute.ts | 3 ++- .../nodes/agents/OpenAiAssistant/OpenAiAssistant.node.ts | 2 +- .../vendors/OpenAi/actions/assistant/message.operation.ts | 2 +- 5 files changed, 8 insertions(+), 5 deletions(-) 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 17a2d43590..5092f061e2 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 @@ -2,7 +2,7 @@ import type { BaseOutputParser } from '@langchain/core/output_parsers'; import { PromptTemplate } from '@langchain/core/prompts'; import { ChatOpenAI } from '@langchain/openai'; import type { AgentExecutorInput } from 'langchain/agents'; -import { AgentExecutor, OpenAIAgent } from 'langchain/agents'; +import { OpenAIAgent } from 'langchain/agents'; import { BufferMemory, type BaseChatMemory } from 'langchain/memory'; import { CombiningOutputParser } from 'langchain/output_parsers'; import { @@ -16,6 +16,7 @@ import { getConnectedTools, getPromptInputByType } from '@utils/helpers'; import { getOptionalOutputParsers } from '@utils/output_parsers/N8nOutputParser'; import { getTracingConfig } from '@utils/tracing'; +import { AgentExecutor } from '../../AgentExecutor'; import { extractParsedOutput } from '../utils'; export async function openAiFunctionsAgentExecute( 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 4db35634d6..237b287e4e 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 @@ -2,7 +2,7 @@ import type { BaseLanguageModel } from '@langchain/core/language_models/base'; import type { BaseChatModel } from '@langchain/core/language_models/chat_models'; import type { BaseOutputParser } from '@langchain/core/output_parsers'; import { PromptTemplate } from '@langchain/core/prompts'; -import { AgentExecutor, ChatAgent, ZeroShotAgent } from 'langchain/agents'; +import { ChatAgent, ZeroShotAgent } from 'langchain/agents'; import { CombiningOutputParser } from 'langchain/output_parsers'; import { type IExecuteFunctions, @@ -16,6 +16,7 @@ import { getOptionalOutputParsers } from '@utils/output_parsers/N8nOutputParser' import { throwIfToolSchema } from '@utils/schemaParsing'; import { getTracingConfig } from '@utils/tracing'; +import { AgentExecutor } from '../../AgentExecutor'; import { checkForStructuredTools, extractParsedOutput } from '../utils'; export async function reActAgentAgentExecute( 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 b0e36d0d8b..903a608911 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 @@ -7,7 +7,7 @@ import { RunnableSequence } from '@langchain/core/runnables'; import type { Tool } from '@langchain/core/tools'; import { DynamicStructuredTool } from '@langchain/core/tools'; import type { AgentAction, AgentFinish } from 'langchain/agents'; -import { AgentExecutor, createToolCallingAgent } from 'langchain/agents'; +import { createToolCallingAgent } from 'langchain/agents'; import { omit } from 'lodash'; import { BINARY_ENCODING, jsonParse, NodeConnectionType, NodeOperationError } from 'n8n-workflow'; import type { IExecuteFunctions, INodeExecutionData } from 'n8n-workflow'; @@ -21,6 +21,7 @@ import { } from '@utils/output_parsers/N8nOutputParser'; import { SYSTEM_MESSAGE } from './prompt'; +import { AgentExecutor } from '../../AgentExecutor'; function getOutputParserSchema(outputParser: N8nOutputParser): ZodObject { const schema = diff --git a/packages/@n8n/nodes-langchain/nodes/agents/OpenAiAssistant/OpenAiAssistant.node.ts b/packages/@n8n/nodes-langchain/nodes/agents/OpenAiAssistant/OpenAiAssistant.node.ts index e44ad8f9d2..f5cbe798ea 100644 --- a/packages/@n8n/nodes-langchain/nodes/agents/OpenAiAssistant/OpenAiAssistant.node.ts +++ b/packages/@n8n/nodes-langchain/nodes/agents/OpenAiAssistant/OpenAiAssistant.node.ts @@ -1,4 +1,3 @@ -import { AgentExecutor } from 'langchain/agents'; import type { OpenAIToolType } from 'langchain/dist/experimental/openai_assistant/schema'; import { OpenAIAssistantRunnable } from 'langchain/experimental/openai_assistant'; import { NodeConnectionType, NodeOperationError } from 'n8n-workflow'; @@ -14,6 +13,7 @@ import { getConnectedTools } from '@utils/helpers'; import { getTracingConfig } from '@utils/tracing'; import { formatToOpenAIAssistantTool } from './utils'; +import { AgentExecutor } from '../Agent/AgentExecutor'; export class OpenAiAssistant implements INodeType { description: INodeTypeDescription = { diff --git a/packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/actions/assistant/message.operation.ts b/packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/actions/assistant/message.operation.ts index bc22ac948f..99e717d08b 100644 --- a/packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/actions/assistant/message.operation.ts +++ b/packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/actions/assistant/message.operation.ts @@ -1,5 +1,4 @@ import type { BaseMessage } from '@langchain/core/messages'; -import { AgentExecutor } from 'langchain/agents'; import type { OpenAIToolType } from 'langchain/dist/experimental/openai_assistant/schema'; import { OpenAIAssistantRunnable } from 'langchain/experimental/openai_assistant'; import type { BufferWindowMemory } from 'langchain/memory'; @@ -22,6 +21,7 @@ import { promptTypeOptions } from '@utils/descriptions'; import { getConnectedTools } from '@utils/helpers'; import { getTracingConfig } from '@utils/tracing'; +import { AgentExecutor } from '../../../../agents/Agent/AgentExecutor'; import { formatToOpenAIAssistantTool } from '../../helpers/utils'; import { assistantRLC } from '../descriptions';