From 9682a0ccd9c086117d6761ea6c66bd185b3feb50 Mon Sep 17 00:00:00 2001 From: Saket Aryan Date: Wed, 28 May 2025 20:32:52 +0530 Subject: [PATCH] feat:Adds new Param in getChatMessages for better context handling (#4273) * Adds Current Message Param in getChatMessages to use Mem0 more effectively * Revert "Adds Current Message Param in getChatMessages to use Mem0 more effectively" This reverts commit 086be60b0a717aaf2c9a2b95ac1c0f809bf21e3b. * Used the input param for Getting the Input text inside of Mem0 Node * Update pnpm-lock.yaml * Update pnpm-lock.yaml --------- Co-authored-by: Henry Co-authored-by: Henry Heng --- packages/components/nodes/memory/Mem0/Mem0.ts | 63 +++++++++++-------- 1 file changed, 37 insertions(+), 26 deletions(-) diff --git a/packages/components/nodes/memory/Mem0/Mem0.ts b/packages/components/nodes/memory/Mem0/Mem0.ts index d5886199..9be79aab 100644 --- a/packages/components/nodes/memory/Mem0/Mem0.ts +++ b/packages/components/nodes/memory/Mem0/Mem0.ts @@ -15,6 +15,12 @@ interface BufferMemoryExtendedInput { chatflowid: string } +interface NodeFields extends Mem0MemoryInput, Mem0MemoryExtendedInput, BufferMemoryExtendedInput { + searchOnly: boolean + useFlowiseChatId: boolean + input: string +} + class Mem0_Memory implements INode { label: string name: string @@ -143,12 +149,12 @@ class Mem0_Memory implements INode { ] } - async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { - return await initializeMem0(nodeData, options) + async init(nodeData: INodeData, input: string, options: ICommonObject): Promise { + return await initializeMem0(nodeData, input, options) } } -const initializeMem0 = async (nodeData: INodeData, options: ICommonObject): Promise => { +const initializeMem0 = async (nodeData: INodeData, input: string, options: ICommonObject): Promise => { const initialUserId = nodeData.inputs?.user_id as string const useFlowiseChatId = nodeData.inputs?.useFlowiseChatId as boolean const orgId = options.orgId as string @@ -184,24 +190,24 @@ const initializeMem0 = async (nodeData: INodeData, options: ICommonObject): Prom filters: (nodeData.inputs?.filters as Record) || {} } - const obj: Mem0MemoryInput & Mem0MemoryExtendedInput & BufferMemoryExtendedInput & { searchOnly: boolean; useFlowiseChatId: boolean } = - { - apiKey: apiKey, - humanPrefix: nodeData.inputs?.humanPrefix as string, - aiPrefix: nodeData.inputs?.aiPrefix as string, - inputKey: nodeData.inputs?.inputKey as string, - sessionId: constructorSessionId, - mem0Options: mem0Options, - memoryOptions: memoryOptions, - separateMessages: false, - returnMessages: false, - appDataSource: options.appDataSource as DataSource, - databaseEntities: options.databaseEntities as IDatabaseEntity, - chatflowid: options.chatflowid as string, - searchOnly: (nodeData.inputs?.searchOnly as boolean) || false, - useFlowiseChatId: useFlowiseChatId, - orgId: orgId - } + const obj: NodeFields = { + apiKey: apiKey, + humanPrefix: nodeData.inputs?.humanPrefix as string, + aiPrefix: nodeData.inputs?.aiPrefix as string, + inputKey: nodeData.inputs?.inputKey as string, + sessionId: constructorSessionId, + mem0Options: mem0Options, + memoryOptions: memoryOptions, + separateMessages: false, + returnMessages: false, + appDataSource: options.appDataSource as DataSource, + databaseEntities: options.databaseEntities as IDatabaseEntity, + chatflowid: options.chatflowid as string, + searchOnly: (nodeData.inputs?.searchOnly as boolean) || false, + useFlowiseChatId: useFlowiseChatId, + input: input, + orgId: orgId + } return new Mem0MemoryExtended(obj) } @@ -223,10 +229,9 @@ class Mem0MemoryExtended extends BaseMem0Memory implements MemoryMethods { chatflowid: string searchOnly: boolean useFlowiseChatId: boolean + input: string - constructor( - fields: Mem0MemoryInput & Mem0MemoryExtendedInput & BufferMemoryExtendedInput & { searchOnly: boolean; useFlowiseChatId: boolean } - ) { + constructor(fields: NodeFields) { super(fields) this.initialUserId = fields.memoryOptions?.user_id ?? '' this.userId = this.initialUserId @@ -237,6 +242,7 @@ class Mem0MemoryExtended extends BaseMem0Memory implements MemoryMethods { this.chatflowid = fields.chatflowid this.searchOnly = fields.searchOnly this.useFlowiseChatId = fields.useFlowiseChatId + this.input = fields.input this.orgId = fields.orgId } @@ -323,11 +329,16 @@ class Mem0MemoryExtended extends BaseMem0Memory implements MemoryMethods { if (prependMessages?.length) { returnIMessages.unshift(...prependMessages) // Reverted to original simpler unshift - chatMessage.unshift(...(prependMessages as any)) // Cast as any + chatMessage.unshift(...(prependMessages as any)) } if (returnBaseMessages) { - const memoryVariables = await this.loadMemoryVariables({}, overrideUserId) + const memoryVariables = await this.loadMemoryVariables( + { + [this.inputKey]: this.input ?? '' + }, + overrideUserId + ) const mem0History = memoryVariables[this.memoryKey] if (mem0History && typeof mem0History === 'string') {