feat: create conversation at the beginning then return the userMessage

This commit is contained in:
Wentao Lyu 2023-03-13 13:11:53 +08:00
parent 5a409ccfa6
commit 8773878be2
6 changed files with 50 additions and 40 deletions

View file

@ -7,10 +7,12 @@ const { handleError, sendMessage } = require('./handlers');
const citationRegex = /\[\^\d+?\^]/g;
router.post('/', async (req, res) => {
const { model, text, parentMessageId, conversationId, ...convo } = req.body;
const { model, text, parentMessageId, conversationId: oldConversationId, ...convo } = req.body;
if (text.length === 0) {
return handleError(res, 'Prompt empty or too short');
}
const conversationId = oldConversationId || crypto.randomUUID();
const userMessageId = messageId;
const userParentMessageId = parentMessageId || '00000000-0000-0000-0000-000000000000'
@ -26,17 +28,9 @@ router.post('/', async (req, res) => {
console.log('ask log', {
model,
...userMessage,
parentMessageId: userParentMessageId,
conversationId,
...convo
});
// if (messageId) {
// // existing conversation
// await saveMessage(userMessage);
// await deleteMessagesSince(userMessage);
// } else {}
res.writeHead(200, {
Connection: 'keep-alive',
'Content-Type': 'text/event-stream',
@ -45,6 +39,10 @@ router.post('/', async (req, res) => {
'X-Accel-Buffering': 'no'
});
await saveMessage(userMessage);
await saveConvo({ ...userMessage, model, chatGptLabel, promptPrefix });
sendMessage(res, { message: userMessage, created: true });
try {
let tokens = '';
const progressCallback = async (partial) => {
@ -107,7 +105,7 @@ router.post('/', async (req, res) => {
res.end();
} catch (error) {
console.log(error);
await deleteMessages({ messageId: userMessageId });
// await deleteMessages({ messageId: userMessageId });
handleError(res, error.message);
}
});