-
Notifications
You must be signed in to change notification settings - Fork 0
/
langchain_bedrock_memory.js
59 lines (50 loc) · 1.53 KB
/
langchain_bedrock_memory.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
const { BufferMemory } = require("langchain/memory");
const { BedrockChat } = require("langchain/chat_models/bedrock");
const { ConversationChain } = require("langchain/chains");
const {
ChatPromptTemplate,
MessagesPlaceholder,
} = require("langchain/prompts");
const {
DynamoDBChatMessageHistory,
} = require("langchain/stores/message/dynamodb");
// Replace these values
const region = "us-east-1";
const tableName = "<YOUR_TABLE_NAME>"
const partitionKey = "<YOUR_PARTITION_KEY>";
const model = new BedrockChat({
model: "anthropic.claude-instant-v1",
region,
maxTokens: 1000,
temperature: 0.8,
stopSequences: ["\\n\\nHuman:"],
streaming: true,
});
const chatPrompt = ChatPromptTemplate.fromMessages([
[
"system",
"The following is a friendly conversation between a human and an AI. The AI is talkative and provides lots of specific details from its context. If the AI does not know the answer to a question, it truthfully says it does not know.",
],
new MessagesPlaceholder("history"),
["human", "{input}"],
]);
const mockRequest = async (sessionId, userInput) => {
const memory = new BufferMemory({
chatHistory: new DynamoDBChatMessageHistory({
tableName,
partitionKey,
sessionId,
}),
returnMessages: true,
memoryKey: "history",
});
const chain = new ConversationChain({
llm: model,
memory,
prompt: chatPrompt,
});
const res = await chain.call({ input: userInput });
console.log(res);
return res.response;
};
(() => mockRequest("sessionId", "Who is Santa?"))();