chore: fix convo summary

This commit is contained in:
Louis 2023-11-17 16:01:33 +07:00
parent d27fa7962f
commit c9cfebd7d3
4 changed files with 48 additions and 59 deletions

View File

@ -109,10 +109,10 @@ async function validateModelStatus(): Promise<InitModelResponse> {
return { error: undefined };
}
}
return { error: "Model is not loaded successfully" };
return { error: "Model loading failed" };
})
.catch((err) => {
return { error: `Model is not loaded successfully. ${err.message}` };
return { error: `Model loading failed. ${err.message}` };
});
}

View File

@ -20,11 +20,10 @@ export const useCreateConversation = () => {
const addNewConvoState = useSetAtom(addNewConversationStateAtom)
const requestCreateConvo = async (model: Model) => {
const summary = model.name
const mappedConvo: Thread = {
id: generateConversationId(),
modelId: model.id,
summary,
summary: model.name,
createdAt: new Date().toISOString(),
updatedAt: new Date().toISOString(),
messages: [],

View File

@ -20,8 +20,8 @@ export default function useDeleteModel() {
// reload models
setDownloadedModels(downloadedModels.filter((e) => e.id !== model.id))
toaster({
title: 'Delete a Model',
description: `Model ${model.id} has been deleted.`,
title: 'Model Deletion Successful',
description: `The model ${model.id} has been successfully deleted.`,
})
}

View File

@ -16,6 +16,8 @@ import { ulid } from 'ulid'
import { currentPromptAtom } from '@/containers/Providers/Jotai'
import { useActiveModel } from './useActiveModel'
import {
addNewMessageAtom,
getCurrentChatMessagesAtom,
@ -34,54 +36,51 @@ export default function useSendChatMessage() {
const updateConvWaiting = useSetAtom(updateConversationWaitingForResponseAtom)
const [currentPrompt, setCurrentPrompt] = useAtom(currentPromptAtom)
const currentMessages = useAtomValue(getCurrentChatMessagesAtom)
let timeout: NodeJS.Timeout | undefined = undefined
const { activeModel } = useActiveModel()
function updateConvSummary(newMessage: MessageRequest) {
if (timeout) {
clearTimeout(timeout)
}
timeout = setTimeout(() => {
const conv = currentConvo
if (
!currentConvo?.summary ||
if (
currentConvo &&
newMessage.messages &&
newMessage.messages.length > 2 &&
(!currentConvo.summary ||
currentConvo.summary === '' ||
currentConvo.summary.startsWith('Prompt:')
) {
const summaryMsg: ChatCompletionMessage = {
role: ChatCompletionRole.User,
content:
'summary this conversation in 5 words, the response should just include the summary',
}
// Request convo summary
setTimeout(async () => {
const result = await pluginManager
.get<InferencePlugin>(PluginType.Inference)
?.inferenceRequest({
...newMessage,
messages: newMessage.messages?.concat([summaryMsg]),
})
if (
result?.message &&
result.message.split(' ').length <= 10 &&
conv?.id
) {
const updatedConv = {
...conv,
summary: result.message,
}
updateConversation(updatedConv)
pluginManager
.get<ConversationalPlugin>(PluginType.Conversational)
?.saveConversation({
...updatedConv,
messages: currentMessages,
})
}
}, 1000)
currentConvo.summary === activeModel?.name)
) {
const summaryMsg: ChatCompletionMessage = {
role: ChatCompletionRole.User,
content:
'summary this conversation in a few words, the response should just include the summary',
}
}, 100)
// Request convo summary
setTimeout(async () => {
const result = await pluginManager
.get<InferencePlugin>(PluginType.Inference)
?.inferenceRequest({
...newMessage,
messages: newMessage.messages?.slice(0, -1).concat([summaryMsg]),
})
if (
currentConvo &&
currentConvo.id === newMessage.threadId &&
result?.message &&
result?.message?.trim().length > 0 &&
result.message.split(' ').length <= 10
) {
const updatedConv = {
...currentConvo,
summary: result.message,
}
updateConversation(updatedConv)
pluginManager
.get<ConversationalPlugin>(PluginType.Conversational)
?.saveConversation({
...updatedConv,
messages: currentMessages,
})
}
}, 1000)
}
}
const sendChatMessage = async () => {
@ -124,15 +123,6 @@ export default function useSendChatMessage() {
addNewMessage(threadMessage)
events.emit(EventName.OnNewMessageRequest, messageRequest)
if (!currentConvo?.summary && currentConvo) {
const updatedConv: Thread = {
...currentConvo,
summary: `Prompt: ${prompt}`,
}
updateConversation(updatedConv)
}
updateConvSummary(messageRequest)
}