* feat: jan can see feat: Add GPT-4 Vision model (Preview) fix: Add visionModel as property in ModelInfo fix: Fix condition to load local messages in useSetActiveThread hook feat: Enable Image as input for chat fix: Update model parameters in JSON files for remote GPT models fix: Add thread as optional fix: Add support for message as image fix: Linter fix: Update proxyModel to proxy_model and add textModel chore: Change proxyModel to proxy_model fix: Update settings with visionModel and textModel fix: vision model passed through the retrieval tool fix: linter * fix: could not load image and request is not able to be sent --------- Co-authored-by: Louis <louis@jan.ai>
44 lines
1.4 KiB
TypeScript
44 lines
1.4 KiB
TypeScript
import { ExtensionTypeEnum, Thread, ConversationalExtension } from '@janhq/core'
|
|
|
|
import { useAtomValue, useSetAtom } from 'jotai'
|
|
|
|
import { extensionManager } from '@/extension'
|
|
import {
|
|
readyThreadsMessagesAtom,
|
|
setConvoMessagesAtom,
|
|
} from '@/helpers/atoms/ChatMessage.atom'
|
|
import {
|
|
ModelParams,
|
|
setActiveThreadIdAtom,
|
|
setThreadModelParamsAtom,
|
|
} from '@/helpers/atoms/Thread.atom'
|
|
|
|
export default function useSetActiveThread() {
|
|
const setActiveThreadId = useSetAtom(setActiveThreadIdAtom)
|
|
const setThreadMessage = useSetAtom(setConvoMessagesAtom)
|
|
const setThreadModelParams = useSetAtom(setThreadModelParamsAtom)
|
|
const readyMessageThreads = useAtomValue(readyThreadsMessagesAtom)
|
|
|
|
const setActiveThread = async (thread: Thread) => {
|
|
// Load local messages only if there are no messages in the state
|
|
if (!readyMessageThreads[thread?.id]) {
|
|
const messages = await getLocalThreadMessage(thread?.id)
|
|
setThreadMessage(thread?.id, messages)
|
|
}
|
|
|
|
setActiveThreadId(thread?.id)
|
|
const modelParams: ModelParams = {
|
|
...thread?.assistants[0]?.model?.parameters,
|
|
...thread?.assistants[0]?.model?.settings,
|
|
}
|
|
setThreadModelParams(thread?.id, modelParams)
|
|
}
|
|
|
|
return { setActiveThread }
|
|
}
|
|
|
|
const getLocalThreadMessage = async (threadId: string) =>
|
|
extensionManager
|
|
.get<ConversationalExtension>(ExtensionTypeEnum.Conversational)
|
|
?.getAllMessages(threadId) ?? []
|