Skip to content

Commit a6a0398

Browse files
authored
Bugfix/Buffer Memory for Anthropic (#3242)
fix buffer memory
1 parent 7d88183 commit a6a0398

File tree

3 files changed

+22
-8
lines changed

3 files changed

+22
-8
lines changed

Diff for: packages/components/nodes/memory/BufferWindowMemory/BufferWindowMemory.ts

+6-4
Original file line numberDiff line numberDiff line change
@@ -118,14 +118,16 @@ class BufferWindowMemoryExtended extends FlowiseWindowMemory implements MemoryMe
118118
sessionId: id,
119119
chatflowid: this.chatflowid
120120
},
121-
take: this.k + 1,
122121
order: {
123-
createdDate: 'DESC' // we get the latest top K
122+
createdDate: 'ASC'
124123
}
125124
})
126125

127-
// reverse the order of human and ai messages
128-
if (chatMessage.length) chatMessage.reverse()
126+
if (this.k <= 0) {
127+
chatMessage = []
128+
} else {
129+
chatMessage = chatMessage.slice(-this.k * 2)
130+
}
129131

130132
if (prependMessages?.length) {
131133
chatMessage.unshift(...prependMessages)

Diff for: packages/components/nodes/memory/ConversationSummaryBufferMemory/ConversationSummaryBufferMemory.ts

+8-2
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,10 @@ import {
1010
} from '../../../src/Interface'
1111
import { getBaseClasses, mapChatMessageToBaseMessage } from '../../../src/utils'
1212
import { BaseLanguageModel } from '@langchain/core/language_models/base'
13-
import { BaseMessage, getBufferString } from '@langchain/core/messages'
13+
import { BaseMessage, getBufferString, HumanMessage } from '@langchain/core/messages'
1414
import { ConversationSummaryBufferMemory, ConversationSummaryBufferMemoryInput } from 'langchain/memory'
1515
import { DataSource } from 'typeorm'
16+
import { ChatAnthropic } from '../../chatmodels/ChatAnthropic/FlowiseChatAnthropic'
1617

1718
class ConversationSummaryBufferMemory_Memory implements INode {
1819
label: string
@@ -163,7 +164,12 @@ class ConversationSummaryBufferMemoryExtended extends FlowiseSummaryBufferMemory
163164
// ----------- Finished Pruning ---------------
164165

165166
if (this.movingSummaryBuffer) {
166-
baseMessages = [new this.summaryChatMessageClass(this.movingSummaryBuffer), ...baseMessages]
167+
// Anthropic doesn't support multiple system messages
168+
if (this.llm instanceof ChatAnthropic) {
169+
baseMessages = [new HumanMessage(`Below is the summarized conversation:\n\n${this.movingSummaryBuffer}`), ...baseMessages]
170+
} else {
171+
baseMessages = [new this.summaryChatMessageClass(this.movingSummaryBuffer), ...baseMessages]
172+
}
167173
}
168174

169175
if (returnBaseMessages) {

Diff for: packages/components/nodes/memory/ConversationSummaryMemory/ConversationSummaryMemory.ts

+8-2
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,10 @@ import {
1010
} from '../../../src/Interface'
1111
import { getBaseClasses, mapChatMessageToBaseMessage } from '../../../src/utils'
1212
import { BaseLanguageModel } from '@langchain/core/language_models/base'
13-
import { BaseMessage, SystemMessage } from '@langchain/core/messages'
13+
import { BaseMessage, HumanMessage, SystemMessage } from '@langchain/core/messages'
1414
import { ConversationSummaryMemory, ConversationSummaryMemoryInput } from 'langchain/memory'
1515
import { DataSource } from 'typeorm'
16+
import { ChatAnthropic } from '../../chatmodels/ChatAnthropic/FlowiseChatAnthropic'
1617

1718
class ConversationSummaryMemory_Memory implements INode {
1819
label: string
@@ -135,7 +136,12 @@ class ConversationSummaryMemoryExtended extends FlowiseSummaryMemory implements
135136
}
136137

137138
if (returnBaseMessages) {
138-
return [new SystemMessage(this.buffer)]
139+
// Anthropic doesn't support multiple system messages
140+
if (this.llm instanceof ChatAnthropic) {
141+
return [new HumanMessage(`Below is the summarized conversation:\n\n${this.buffer}`)]
142+
} else {
143+
return [new SystemMessage(this.buffer)]
144+
}
139145
}
140146

141147
if (this.buffer) {

0 commit comments

Comments
 (0)