enh: add to conversation

This commit is contained in:
Timothy Jaeryang Baek
2024-12-20 15:09:17 -08:00
parent ad5cc9d79e
commit 47318daef0
7 changed files with 103 additions and 5 deletions

View File

@@ -985,6 +985,70 @@
}
};
const addMessages = async ({ modelId, messages }) => {
const model = $models.filter((m) => m.id === modelId).at(0);
const messageList = createMessagesList(history.currentId);
let parentMessage = messageList.length !== 0 ? messageList.at(-1) : null;
let parentId = parentMessage ? parentMessage.id : null;
for (const message of messages) {
let messageId = uuidv4();
if (message.role === 'user') {
const userMessage = {
id: messageId,
parentId: parentId,
childrenIds: [],
timestamp: Math.floor(Date.now() / 1000),
...message
};
if (parentMessage) {
parentMessage.childrenIds.push(messageId);
history.messages[parentMessage.id] = parentMessage;
}
history.messages[messageId] = userMessage;
parentMessage = userMessage;
parentId = messageId;
} else {
const responseMessage = {
id: messageId,
parentId: parentId,
childrenIds: [],
done: true,
model: model.id,
modelName: model.name ?? model.id,
modelIdx: 0,
timestamp: Math.floor(Date.now() / 1000),
...message
};
if (parentMessage) {
parentMessage.childrenIds.push(messageId);
history.messages[parentMessage.id] = parentMessage;
}
history.messages[messageId] = responseMessage;
parentMessage = responseMessage;
parentId = messageId;
}
}
history.currentId = parentId;
await tick();
if (autoScroll) {
scrollToBottom();
}
if (messages.length === 0) {
await initChatHandler();
} else {
await saveChatHandler($chatId);
}
};
const chatCompletionEventHandler = async (data, message, chatId) => {
const { id, done, choices, sources, selectedModelId, error, usage } = data;
@@ -1937,6 +2001,7 @@
{regenerateResponse}
{mergeResponses}
{chatActionHandler}
{addMessages}
bottomPadding={files.length > 0}
/>
</div>