diff --git a/packages/components/nodes/agents/ConversationalAgent/ConversationalAgent.ts b/packages/components/nodes/agents/ConversationalAgent/ConversationalAgent.ts index 7f857b1c..a8c709a2 100644 --- a/packages/components/nodes/agents/ConversationalAgent/ConversationalAgent.ts +++ b/packages/components/nodes/agents/ConversationalAgent/ConversationalAgent.ts @@ -9,6 +9,7 @@ import { FlowiseMemory, ICommonObject, IMessage, INode, INodeData, INodeParams } import { AgentExecutor } from '../../../src/agents' import { ChatConversationalAgent } from 'langchain/agents' import { renderTemplate } from '@langchain/core/prompts' +import { injectChainNodeData } from '../../../src/MultiModalUtils' const DEFAULT_PREFIX = `Assistant is a large language model trained by OpenAI. @@ -84,6 +85,8 @@ class ConversationalAgent_Agents implements INode { async run(nodeData: INodeData, input: string, options: ICommonObject): Promise { const memory = nodeData.inputs?.memory as FlowiseMemory + injectChainNodeData(nodeData, options) + const executor = await prepareAgent(nodeData, { sessionId: this.sessionId, chatId: options.chatId, input }, options.chatHistory) const loggerHandler = new ConsoleCallbackHandler(options.logger) diff --git a/packages/components/nodes/agents/MRKLAgentChat/MRKLAgentChat.ts b/packages/components/nodes/agents/MRKLAgentChat/MRKLAgentChat.ts index 19835e36..6ea8d67e 100644 --- a/packages/components/nodes/agents/MRKLAgentChat/MRKLAgentChat.ts +++ b/packages/components/nodes/agents/MRKLAgentChat/MRKLAgentChat.ts @@ -5,6 +5,7 @@ import { Tool } from 'langchain/tools' import { BaseLanguageModel } from 'langchain/base_language' import { flatten } from 'lodash' import { additionalCallbacks } from '../../../src/handler' +import { injectChainNodeData } from '../../../src/MultiModalUtils' class MRKLAgentChat_Agents implements INode { label: string @@ -54,6 +55,7 @@ class MRKLAgentChat_Agents implements INode { async run(nodeData: INodeData, input: string, options: ICommonObject): Promise { const executor = nodeData.instance as AgentExecutor + injectChainNodeData(nodeData, options) const callbacks = await additionalCallbacks(nodeData, options) diff --git a/packages/server/src/index.ts b/packages/server/src/index.ts index 17689bcb..361c00cf 100644 --- a/packages/server/src/index.ts +++ b/packages/server/src/index.ts @@ -475,7 +475,8 @@ export class App { }) if (!chatflow) return res.status(404).send(`Chatflow ${req.params.id} not found`) - const uploadAllowedCategoryNodes = ['Chat Models'] + const uploadAllowedNodes = ['llmChain', 'conversationChain', 'mrklAgentChat', 'conversationalAgent'] + const uploadProcessingNodes = ['chatOpenAI'] try { const flowObj = JSON.parse(chatflow.flowData) @@ -494,26 +495,27 @@ export class App { let allowImageUploads = false flowObj.nodes.forEach((node: IReactFlowNode) => { - if (uploadAllowedCategoryNodes.indexOf(node.data.category) > -1) { + if (uploadProcessingNodes.indexOf(node.data.name) > -1) { logger.debug(`[server]: Found Eligible Node ${node.data.type}, Allowing Uploads.`) // there could be multiple components allowing uploads, so we check if it's already added // TODO: for now the maxUploadSize is hardcoded to 5MB, we need to add it to the node properties node.data.inputParams.map((param: INodeParams) => { - if (param.name === 'allowImageUploads' && node.data.inputs?.['allowImageUploads'] && !allowImageUploads) { + if (param.name === 'allowImageUploads' && node.data.inputs?.['allowImageUploads']) { allowances.push({ fileTypes: 'image/gif;image/jpeg;image/png;image/webp;'.split(';'), maxUploadSize: 5 }) - allowImageUploads = true } }) + } else if (uploadAllowedNodes.indexOf(node.data.name) > -1 && !allowImageUploads) { + allowImageUploads = true } }) return res.json({ allowSpeechToText: allowSpeechToText, - isUploadAllowed: allowances.length > 0, + isUploadAllowed: allowImageUploads, uploadFileSizeAndTypes: allowances }) } catch (e) {