fix: should not attach error messages to the completion request (#2258)

This commit is contained in:
Louis 2024-03-06 16:15:46 +07:00 committed by GitHub
parent 9dc4ede692
commit 7556430693
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 31 additions and 16 deletions

View File

@ -43,7 +43,7 @@ export function requestInference(
if (!response.ok) { if (!response.ok) {
const data = await response.json() const data = await response.json()
const error = { const error = {
message: data.error?.message ?? 'Error occurred.', message: data.error?.message ?? 'An error occurred.',
code: data.error?.code ?? ErrorCode.Unknown, code: data.error?.code ?? ErrorCode.Unknown,
} }
subscriber.error(error) subscriber.error(error)

View File

@ -210,7 +210,7 @@ export default class JanInferenceOpenAIExtension extends BaseExtension {
const messageContent: ThreadContent = { const messageContent: ThreadContent = {
type: ContentType.Text, type: ContentType.Text,
text: { text: {
value: 'Error occurred: ' + err.message, value: 'An error occurred. ' + err.message,
annotations: [], annotations: [],
}, },
} }

View File

@ -205,7 +205,7 @@ export default class JanInferenceTritonTrtLLMExtension extends BaseExtension {
const messageContent: ThreadContent = { const messageContent: ThreadContent = {
type: ContentType.Text, type: ContentType.Text,
text: { text: {
value: 'Error occurred: ' + err.message, value: 'An error occurred. ' + err.message,
annotations: [], annotations: [],
}, },
} }

View File

@ -110,7 +110,10 @@ export const deleteMessageAtom = atom(null, (get, set, id: string) => {
} }
const threadId = get(getActiveThreadIdAtom) const threadId = get(getActiveThreadIdAtom)
if (threadId) { if (threadId) {
newData[threadId] = newData[threadId].filter((e) => e.id !== id) // Should also delete error messages to clear out the error state
newData[threadId] = newData[threadId].filter(
(e) => e.id !== id && e.status !== MessageStatus.Error
)
set(chatMessages, newData) set(chatMessages, newData)
} }
}) })

View File

@ -109,8 +109,9 @@ export default function useSendChatMessage() {
currentMessages currentMessages
.filter( .filter(
(e) => (e) =>
currentMessage.role === ChatCompletionRole.User || (currentMessage.role === ChatCompletionRole.User ||
e.id !== currentMessage.id e.id !== currentMessage.id) &&
e.status !== MessageStatus.Error
) )
.map<ChatCompletionMessage>((msg) => ({ .map<ChatCompletionMessage>((msg) => ({
role: msg.role, role: msg.role,
@ -198,6 +199,7 @@ export default function useSendChatMessage() {
}) })
.concat( .concat(
currentMessages currentMessages
.filter((e) => e.status !== MessageStatus.Error)
.map<ChatCompletionMessage>((msg) => ({ .map<ChatCompletionMessage>((msg) => ({
role: msg.role, role: msg.role,
content: msg.content[0]?.text.value ?? '', content: msg.content[0]?.text.value ?? '',

View File

@ -27,7 +27,10 @@ const ErrorMessage = ({ message }: { message: ThreadMessage }) => {
resendChatMessage(message) resendChatMessage(message)
} }
const errorTitle = getErrorTitle(message.error_code ?? ErrorCode.Unknown) const errorTitle = getErrorTitle(
message.error_code ?? ErrorCode.Unknown,
message.content[0]?.text?.value
)
return ( return (
<div className="mt-10"> <div className="mt-10">

View File

@ -39,11 +39,14 @@ const MessageToolbar = ({ message }: { message: ThreadMessage }) => {
const onDeleteClick = async () => { const onDeleteClick = async () => {
deleteMessage(message.id ?? '') deleteMessage(message.id ?? '')
if (thread) { if (thread) {
// Should also delete error messages to clear out the error state
await extensionManager await extensionManager
.get<ConversationalExtension>(ExtensionTypeEnum.Conversational) .get<ConversationalExtension>(ExtensionTypeEnum.Conversational)
?.writeMessages( ?.writeMessages(
thread.id, thread.id,
messages.filter((msg) => msg.id !== message.id) messages.filter(
(msg) => msg.id !== message.id && msg.status !== MessageStatus.Error
)
) )
} }
} }

View File

@ -21,7 +21,7 @@ const ModalErrorSetDestGlobal = () => {
<ModalPortal /> <ModalPortal />
<ModalContent> <ModalContent>
<ModalHeader> <ModalHeader>
<ModalTitle>Error Occurred</ModalTitle> <ModalTitle>An Error Occurred</ModalTitle>
</ModalHeader> </ModalHeader>
<p className="text-muted-foreground"> <p className="text-muted-foreground">
Oops! Something went wrong. Jan data folder remains the same. Please Oops! Something went wrong. Jan data folder remains the same. Please

View File

@ -1,11 +1,15 @@
import { ErrorCode } from '@janhq/core' import { ErrorCode } from '@janhq/core'
export const getErrorTitle = (errorCode: ErrorCode) => { export const getErrorTitle = (
if (errorCode === ErrorCode.Unknown) { errorCode: ErrorCode,
return 'Apologies, somethings amiss!' errorMessage: string | undefined
} ) => {
switch (errorCode) {
if (errorCode === ErrorCode.InvalidApiKey) { case ErrorCode.Unknown:
return 'Invalid API key. Please check your API key and try again.' return 'Apologies, somethings amiss!'
case ErrorCode.InvalidApiKey:
return 'Invalid API key. Please check your API key and try again.'
default:
return errorMessage
} }
} }