diff --git a/packages/components/nodes/multiagents/Worker/Worker.ts b/packages/components/nodes/multiagents/Worker/Worker.ts index ffa4569553f..96910c94108 100644 --- a/packages/components/nodes/multiagents/Worker/Worker.ts +++ b/packages/components/nodes/multiagents/Worker/Worker.ts @@ -199,19 +199,33 @@ async function createAgent( } const modelWithTools = llm.bindTools(tools) - const agent = RunnableSequence.from([ - RunnablePassthrough.assign({ - //@ts-ignore - agent_scratchpad: (input: { steps: ToolsAgentStep[] }) => formatToOpenAIToolMessages(input.steps) - }), - RunnablePassthrough.assign(transformObjectPropertyToFunction(workerInputVariablesValues)), - prompt, - modelWithTools, - new ToolCallingAgentOutputParser() - ]) + let agent + + if (!workerInputVariablesValues || !Object.keys(workerInputVariablesValues).length) { + agent = RunnableSequence.from([ + RunnablePassthrough.assign({ + //@ts-ignore + agent_scratchpad: (input: { steps: ToolsAgentStep[] }) => formatToOpenAIToolMessages(input.steps) + }), + prompt, + modelWithTools, + new ToolCallingAgentOutputParser() + ]) + } else { + agent = RunnableSequence.from([ + RunnablePassthrough.assign({ + //@ts-ignore + agent_scratchpad: (input: { steps: ToolsAgentStep[] }) => formatToOpenAIToolMessages(input.steps) + }), + RunnablePassthrough.assign(transformObjectPropertyToFunction(workerInputVariablesValues)), + prompt, + modelWithTools, + new ToolCallingAgentOutputParser() + ]) + } const executor = AgentExecutor.fromAgentAndTools({ - agent: agent, + agent, tools, sessionId: flowObj?.sessionId, chatId: flowObj?.chatId, @@ -233,12 +247,19 @@ async function createAgent( const msg = HumanMessagePromptTemplate.fromTemplate([...multiModalMessageContent]) prompt.promptMessages.splice(1, 0, msg) } - const conversationChain = RunnableSequence.from([ - RunnablePassthrough.assign(transformObjectPropertyToFunction(workerInputVariablesValues)), - prompt, - llm, - new StringOutputParser() - ]) + + let conversationChain + + if (!workerInputVariablesValues || !Object.keys(workerInputVariablesValues).length) { + conversationChain = RunnableSequence.from([prompt, llm, new StringOutputParser()]) + } else { + conversationChain = RunnableSequence.from([ + RunnablePassthrough.assign(transformObjectPropertyToFunction(workerInputVariablesValues)), + prompt, + llm, + new StringOutputParser() + ]) + } return conversationChain } } @@ -256,6 +277,7 @@ async function agentNode( if (abortControllerSignal.signal.aborted) { throw new Error('Aborted!') } + const result = await agent.invoke({ ...state, signal: abortControllerSignal.signal }, config) const additional_kwargs: ICommonObject = {} if (result.usedTools) {