mirror of
https://github.com/open-webui/open-webui.git
synced 2025-12-24 07:39:27 +01:00
enh: add to conversation
This commit is contained in:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user