From f8232bd20165a6bfcf3bfdb393e5422ec1f9360d Mon Sep 17 00:00:00 2001 From: chungyau97 Date: Tue, 23 May 2023 21:34:37 +0700 Subject: [PATCH] add Buffer Window Memory --- .../BufferWindowMemory/BufferWindowMemory.ts | 61 +++++++++++++++++++ .../memory/BufferWindowMemory/memory.svg | 8 +++ 2 files changed, 69 insertions(+) create mode 100644 packages/components/nodes/memory/BufferWindowMemory/BufferWindowMemory.ts create mode 100644 packages/components/nodes/memory/BufferWindowMemory/memory.svg diff --git a/packages/components/nodes/memory/BufferWindowMemory/BufferWindowMemory.ts b/packages/components/nodes/memory/BufferWindowMemory/BufferWindowMemory.ts new file mode 100644 index 00000000..0f6a9542 --- /dev/null +++ b/packages/components/nodes/memory/BufferWindowMemory/BufferWindowMemory.ts @@ -0,0 +1,61 @@ +import { INode, INodeData, INodeParams } from '../../../src/Interface' +import { getBaseClasses } from '../../../src/utils' +import { BufferWindowMemory, BufferWindowMemoryInput } from 'langchain/memory' + +class BufferWindowMemory_Memory implements INode { + label: string + name: string + description: string + type: string + icon: string + category: string + baseClasses: string[] + inputs: INodeParams[] + + constructor() { + this.label = 'Buffer Window Memory' + this.name = 'bufferWindowMemory' + this.type = 'BufferWindowMemory' + this.icon = 'memory.svg' + this.category = 'Memory' + this.description = 'Uses a window of size k to surface the last k back-and-forths to use as memory' + this.baseClasses = [this.type, ...getBaseClasses(BufferWindowMemory)] + this.inputs = [ + { + label: 'Memory Key', + name: 'memoryKey', + type: 'string', + default: 'chat_history' + }, + { + label: 'Input Key', + name: 'inputKey', + type: 'string', + default: 'input' + }, + { + label: 'Size', + name: 'k', + type: 'number', + default: '4' + } + ] + } + + async init(nodeData: INodeData): Promise { + const memoryKey = nodeData.inputs?.memoryKey as string + const inputKey = nodeData.inputs?.inputKey as string + const k = nodeData.inputs?.k as string + + const obj: Partial = { + returnMessages: true, + memoryKey: memoryKey, + inputKey: inputKey, + k: parseInt(k, 10) + } + + return new BufferWindowMemory(obj) + } +} + +module.exports = { nodeClass: BufferWindowMemory_Memory } diff --git a/packages/components/nodes/memory/BufferWindowMemory/memory.svg b/packages/components/nodes/memory/BufferWindowMemory/memory.svg new file mode 100644 index 00000000..ca8e17da --- /dev/null +++ b/packages/components/nodes/memory/BufferWindowMemory/memory.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file