Unverified Commit 123620bc authored by Timothy Jaeryang Baek's avatar Timothy Jaeryang Baek Committed by GitHub
Browse files

Merge branch 'dev' into dev

parents 99dd81d7 dbdf83c5
...@@ -202,6 +202,7 @@ ...@@ -202,6 +202,7 @@
user: _user ?? undefined, user: _user ?? undefined,
content: userPrompt, content: userPrompt,
files: files.length > 0 ? files : undefined, files: files.length > 0 ? files : undefined,
models: selectedModels.filter((m, mIdx) => selectedModels.indexOf(m) === mIdx),
timestamp: Math.floor(Date.now() / 1000) // Unix epoch timestamp: Math.floor(Date.now() / 1000) // Unix epoch
}; };
...@@ -250,48 +251,50 @@ ...@@ -250,48 +251,50 @@
} }
}; };
const sendPrompt = async (prompt, parentId) => { const sendPrompt = async (prompt, parentId, modelId = null) => {
const _chatId = JSON.parse(JSON.stringify($chatId)); const _chatId = JSON.parse(JSON.stringify($chatId));
await Promise.all( await Promise.all(
(atSelectedModel !== '' ? [atSelectedModel.id] : selectedModels).map(async (modelId) => { (modelId ? [modelId] : atSelectedModel !== '' ? [atSelectedModel.id] : selectedModels).map(
console.log('modelId', modelId); async (modelId) => {
const model = $models.filter((m) => m.id === modelId).at(0); console.log('modelId', modelId);
const model = $models.filter((m) => m.id === modelId).at(0);
if (model) {
// Create response message if (model) {
let responseMessageId = uuidv4(); // Create response message
let responseMessage = { let responseMessageId = uuidv4();
parentId: parentId, let responseMessage = {
id: responseMessageId, parentId: parentId,
childrenIds: [], id: responseMessageId,
role: 'assistant', childrenIds: [],
content: '', role: 'assistant',
model: model.id, content: '',
timestamp: Math.floor(Date.now() / 1000) // Unix epoch model: model.id,
}; timestamp: Math.floor(Date.now() / 1000) // Unix epoch
};
// Add message to history and Set currentId to messageId
history.messages[responseMessageId] = responseMessage; // Add message to history and Set currentId to messageId
history.currentId = responseMessageId; history.messages[responseMessageId] = responseMessage;
history.currentId = responseMessageId;
// Append messageId to childrenIds of parent message
if (parentId !== null) { // Append messageId to childrenIds of parent message
history.messages[parentId].childrenIds = [ if (parentId !== null) {
...history.messages[parentId].childrenIds, history.messages[parentId].childrenIds = [
responseMessageId ...history.messages[parentId].childrenIds,
]; responseMessageId
} ];
}
if (model?.external) { if (model?.external) {
await sendPromptOpenAI(model, prompt, responseMessageId, _chatId); await sendPromptOpenAI(model, prompt, responseMessageId, _chatId);
} else if (model) { } else if (model) {
await sendPromptOllama(model, prompt, responseMessageId, _chatId); await sendPromptOllama(model, prompt, responseMessageId, _chatId);
}
} else {
toast.error($i18n.t(`Model {{modelId}} not found`, { modelId }));
} }
} else {
toast.error($i18n.t(`Model {{modelId}} not found`, { modelId }));
} }
}) )
); );
await chats.set(await getChatList(localStorage.token)); await chats.set(await getChatList(localStorage.token));
...@@ -756,16 +759,14 @@ ...@@ -756,16 +759,14 @@
console.log('stopResponse'); console.log('stopResponse');
}; };
const regenerateResponse = async () => { const regenerateResponse = async (message) => {
console.log('regenerateResponse'); console.log('regenerateResponse');
if (messages.length != 0 && messages.at(-1).done == true) {
messages.splice(messages.length - 1, 1);
messages = messages;
let userMessage = messages.at(-1); if (messages.length != 0) {
let userMessage = history.messages[message.parentId];
let userPrompt = userMessage.content; let userPrompt = userMessage.content;
await sendPrompt(userPrompt, userMessage.id); await sendPrompt(userPrompt, userMessage.id, message.model);
} }
}; };
......
...@@ -210,7 +210,8 @@ ...@@ -210,7 +210,8 @@
user: _user ?? undefined, user: _user ?? undefined,
content: userPrompt, content: userPrompt,
files: files.length > 0 ? files : undefined, files: files.length > 0 ? files : undefined,
timestamp: Math.floor(Date.now() / 1000) // Unix epoch timestamp: Math.floor(Date.now() / 1000), // Unix epoch
models: selectedModels
}; };
// Add message to history and Set currentId to messageId // Add message to history and Set currentId to messageId
...@@ -255,47 +256,51 @@ ...@@ -255,47 +256,51 @@
await sendPrompt(userPrompt, userMessageId); await sendPrompt(userPrompt, userMessageId);
} }
}; };
const sendPrompt = async (prompt, parentId) => {
const sendPrompt = async (prompt, parentId, modelId = null) => {
const _chatId = JSON.parse(JSON.stringify($chatId)); const _chatId = JSON.parse(JSON.stringify($chatId));
await Promise.all( await Promise.all(
(atSelectedModel !== '' ? [atSelectedModel.id] : selectedModels).map(async (modelId) => { (modelId ? [modelId] : atSelectedModel !== '' ? [atSelectedModel.id] : selectedModels).map(
const model = $models.filter((m) => m.id === modelId).at(0); async (modelId) => {
console.log('modelId', modelId);
if (model) { const model = $models.filter((m) => m.id === modelId).at(0);
// Create response message
let responseMessageId = uuidv4(); if (model) {
let responseMessage = { // Create response message
parentId: parentId, let responseMessageId = uuidv4();
id: responseMessageId, let responseMessage = {
childrenIds: [], parentId: parentId,
role: 'assistant', id: responseMessageId,
content: '', childrenIds: [],
model: model.id, role: 'assistant',
timestamp: Math.floor(Date.now() / 1000) // Unix epoch content: '',
}; model: model.id,
timestamp: Math.floor(Date.now() / 1000) // Unix epoch
// Add message to history and Set currentId to messageId };
history.messages[responseMessageId] = responseMessage;
history.currentId = responseMessageId; // Add message to history and Set currentId to messageId
history.messages[responseMessageId] = responseMessage;
// Append messageId to childrenIds of parent message history.currentId = responseMessageId;
if (parentId !== null) {
history.messages[parentId].childrenIds = [ // Append messageId to childrenIds of parent message
...history.messages[parentId].childrenIds, if (parentId !== null) {
responseMessageId history.messages[parentId].childrenIds = [
]; ...history.messages[parentId].childrenIds,
} responseMessageId
];
}
if (model?.external) { if (model?.external) {
await sendPromptOpenAI(model, prompt, responseMessageId, _chatId); await sendPromptOpenAI(model, prompt, responseMessageId, _chatId);
} else if (model) { } else if (model) {
await sendPromptOllama(model, prompt, responseMessageId, _chatId); await sendPromptOllama(model, prompt, responseMessageId, _chatId);
}
} else {
toast.error($i18n.t(`Model {{modelId}} not found`, { modelId }));
} }
} else {
toast.error($i18n.t(`Model {{modelId}} not found`, { modelId }));
} }
}) )
); );
await chats.set(await getChatList(localStorage.token)); await chats.set(await getChatList(localStorage.token));
...@@ -759,16 +764,14 @@ ...@@ -759,16 +764,14 @@
console.log('stopResponse'); console.log('stopResponse');
}; };
const regenerateResponse = async () => { const regenerateResponse = async (message) => {
console.log('regenerateResponse'); console.log('regenerateResponse');
if (messages.length != 0 && messages.at(-1).done == true) {
messages.splice(messages.length - 1, 1);
messages = messages;
let userMessage = messages.at(-1); if (messages.length != 0) {
let userMessage = history.messages[message.parentId];
let userPrompt = userMessage.content; let userPrompt = userMessage.content;
await sendPrompt(userPrompt, userMessage.id); await sendPrompt(userPrompt, userMessage.id, message.model);
} }
}; };
......
...@@ -339,7 +339,7 @@ SYSTEM """${system}"""`.replace(/^\s*\n/gm, ''); ...@@ -339,7 +339,7 @@ SYSTEM """${system}"""`.replace(/^\s*\n/gm, '');
if ( if (
inputFiles && inputFiles &&
inputFiles.length > 0 && inputFiles.length > 0 &&
['image/gif', 'image/jpeg', 'image/png'].includes(inputFiles[0]['type']) ['image/gif', 'image/webp', 'image/jpeg', 'image/png'].includes(inputFiles[0]['type'])
) { ) {
reader.readAsDataURL(inputFiles[0]); reader.readAsDataURL(inputFiles[0]);
} else { } else {
......
...@@ -238,7 +238,7 @@ ...@@ -238,7 +238,7 @@
if ( if (
inputFiles && inputFiles &&
inputFiles.length > 0 && inputFiles.length > 0 &&
['image/gif', 'image/jpeg', 'image/png'].includes(inputFiles[0]['type']) ['image/gif', 'image/webp', 'image/jpeg', 'image/png'].includes(inputFiles[0]['type'])
) { ) {
reader.readAsDataURL(inputFiles[0]); reader.readAsDataURL(inputFiles[0]);
} else { } else {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment