Skip to content
Snippets Groups Projects
Commit 24823cb5 authored by timothycarambat's avatar timothycarambat
Browse files

patch workspace chat history windows to persist most recent chats, not the top n

parent 67c85f15
No related branches found
No related tags found
No related merge requests found
......@@ -21,7 +21,8 @@ const WorkspaceChats = {
forWorkspaceByUser: async function (
workspaceId = null,
userId = null,
limit = null
limit = null,
orderBy = null
) {
if (!workspaceId || !userId) return [];
try {
......@@ -32,9 +33,7 @@ const WorkspaceChats = {
include: true,
},
...(limit !== null ? { take: limit } : {}),
orderBy: {
id: "asc",
},
...(orderBy !== null ? { orderBy } : { orderBy: { id: "asc" } }),
});
return chats;
} catch (error) {
......@@ -43,7 +42,11 @@ const WorkspaceChats = {
}
},
forWorkspace: async function (workspaceId = null, limit = null) {
forWorkspace: async function (
workspaceId = null,
limit = null,
orderBy = null
) {
if (!workspaceId) return [];
try {
const chats = await prisma.workspace_chats.findMany({
......@@ -52,9 +55,7 @@ const WorkspaceChats = {
include: true,
},
...(limit !== null ? { take: limit } : {}),
orderBy: {
id: "asc",
},
...(orderBy !== null ? { orderBy } : { orderBy: { id: "asc" } }),
});
return chats;
} catch (error) {
......
......@@ -87,10 +87,22 @@ async function chatWithWorkspace(
};
}
const messageLimit = workspace?.openAiHistory || 20;
const hasVectorizedSpace = await VectorDb.hasNamespace(workspace.slug);
const embeddingsCount = await VectorDb.namespaceCount(workspace.slug);
if (!hasVectorizedSpace || embeddingsCount === 0) {
const rawHistory = await WorkspaceChats.forWorkspace(workspace.id);
const rawHistory = (
user
? await WorkspaceChats.forWorkspaceByUser(
workspace.id,
user.id,
messageLimit,
{ id: "desc" }
)
: await WorkspaceChats.forWorkspace(workspace.id, messageLimit, {
id: "desc",
})
).reverse();
const chatHistory = convertToPromptHistory(rawHistory);
const response = await LLMConnector.sendChat(
chatHistory,
......@@ -114,12 +126,18 @@ async function chatWithWorkspace(
error: null,
};
} else {
var messageLimit = workspace?.openAiHistory;
const rawHistory = await WorkspaceChats.forWorkspace(
workspace.id,
messageLimit
);
const rawHistory = (
user
? await WorkspaceChats.forWorkspaceByUser(
workspace.id,
user.id,
messageLimit,
{ id: "desc" }
)
: await WorkspaceChats.forWorkspace(workspace.id, messageLimit, {
id: "desc",
})
).reverse();
const chatHistory = convertToPromptHistory(rawHistory);
const {
response,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment