Skip to content

Commit 657b8b8

Browse files
committed
fix: Add hack waiting for model loading
1 parent 41dddcc commit 657b8b8

File tree

2 files changed

+32
-7
lines changed

2 files changed

+32
-7
lines changed

extensions/inference-nitro-extension/src/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,6 @@ export default class JanInferenceNitroExtension implements InferenceExtension {
198198
instance: JanInferenceNitroExtension
199199
) {
200200
if (data.model.engine !== 'nitro') { return }
201-
202201
const timestamp = Date.now();
203202
const message: ThreadMessage = {
204203
id: ulid(),

web/hooks/useSendChatMessage.ts

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useState } from 'react'
1+
import { useEffect, useRef, useState } from 'react'
22

33
import {
44
ChatCompletionMessage,
@@ -11,6 +11,7 @@ import {
1111
Thread,
1212
ThreadMessage,
1313
events,
14+
Model,
1415
} from '@janhq/core'
1516
import { ConversationalExtension } from '@janhq/core'
1617
import { useAtom, useAtomValue, useSetAtom } from 'jotai'
@@ -48,6 +49,11 @@ export default function useSendChatMessage() {
4849
const { startModel } = useActiveModel()
4950
const [queuedMessage, setQueuedMessage] = useState(false)
5051

52+
const modelRef = useRef<Model | undefined>()
53+
useEffect(() => {
54+
modelRef.current = activeModel
55+
}, [activeModel])
56+
5157
const resendChatMessage = async () => {
5258
if (!activeThread) {
5359
console.error('No active thread')
@@ -78,19 +84,35 @@ export default function useSendChatMessage() {
7884
id: ulid(),
7985
messages: messages,
8086
threadId: activeThread.id,
81-
model: activeThread.assistants[0].model??selectedModel,
87+
model: activeThread.assistants[0].model ?? selectedModel,
8288
}
8389

8490
const modelId = selectedModel?.id ?? activeThread.assistants[0].model.id
8591

8692
if (activeModel?.id !== modelId) {
8793
setQueuedMessage(true)
88-
await startModel(modelId)
94+
startModel(modelId)
95+
await WaitForModelStarting(modelId)
8996
setQueuedMessage(false)
9097
}
9198
events.emit(EventName.OnMessageSent, messageRequest)
9299
}
93100

101+
// TODO: Refactor @louis
102+
const WaitForModelStarting = async (modelId: string) => {
103+
return new Promise<void>((resolve) => {
104+
setTimeout(async () => {
105+
if (modelRef.current?.id !== modelId) {
106+
console.log('waiting for model to start')
107+
await WaitForModelStarting(modelId)
108+
resolve()
109+
} else {
110+
resolve()
111+
}
112+
}, 200)
113+
})
114+
}
115+
94116
const sendChatMessage = async () => {
95117
if (!currentPrompt || currentPrompt.trim().length === 0) {
96118
return
@@ -167,8 +189,10 @@ export default function useSendChatMessage() {
167189
id: msgId,
168190
threadId: activeThread.id,
169191
messages,
170-
parameters: activeThread.assistants[0].model.parameters,
171-
model: selectedModel??activeThread.assistants[0].model,
192+
parameters:
193+
selectedModel?.parameters ??
194+
activeThread.assistants[0].model.parameters,
195+
model: selectedModel ?? activeThread.assistants[0].model,
172196
}
173197
const timestamp = Date.now()
174198
const threadMessage: ThreadMessage = {
@@ -200,9 +224,11 @@ export default function useSendChatMessage() {
200224

201225
if (activeModel?.id !== modelId) {
202226
setQueuedMessage(true)
203-
await startModel(modelId)
227+
startModel(modelId)
228+
await WaitForModelStarting(modelId)
204229
setQueuedMessage(false)
205230
}
231+
console.log('messageRequest', messageRequest)
206232
events.emit(EventName.OnMessageSent, messageRequest)
207233
}
208234

0 commit comments

Comments
 (0)