|
|
|
|
@ -100,7 +100,7 @@ export const useChat = (
|
|
|
|
|
const handleUpdateChatList = useCallback((newChatList: ChatItem[]) => {
|
|
|
|
|
setChatList(newChatList)
|
|
|
|
|
chatListRef.current = newChatList
|
|
|
|
|
}, [setChatList])
|
|
|
|
|
}, [])
|
|
|
|
|
const handleResponsing = useCallback((isResponsing: boolean) => {
|
|
|
|
|
setIsResponsing(isResponsing)
|
|
|
|
|
isResponsingRef.current = isResponsing
|
|
|
|
|
@ -110,19 +110,29 @@ export const useChat = (
|
|
|
|
|
return replaceStringWithValues(str, promptVariablesConfig?.promptVariables || [], promptVariablesConfig?.inputs || {})
|
|
|
|
|
}, [promptVariablesConfig?.inputs, promptVariablesConfig?.promptVariables])
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
if (config?.opening_statement && chatListRef.current.filter(item => item.isOpeningStatement).length === 0) {
|
|
|
|
|
handleUpdateChatList([
|
|
|
|
|
{
|
|
|
|
|
id: `${Date.now()}`,
|
|
|
|
|
content: getIntroduction(config.opening_statement),
|
|
|
|
|
isAnswer: true,
|
|
|
|
|
isOpeningStatement: true,
|
|
|
|
|
suggestedQuestions: config.suggested_questions,
|
|
|
|
|
},
|
|
|
|
|
...chatListRef.current,
|
|
|
|
|
])
|
|
|
|
|
if (config?.opening_statement) {
|
|
|
|
|
handleUpdateChatList(produce(chatListRef.current, (draft) => {
|
|
|
|
|
const index = draft.findIndex(item => item.isOpeningStatement)
|
|
|
|
|
|
|
|
|
|
if (index > -1) {
|
|
|
|
|
draft[index] = {
|
|
|
|
|
...draft[index],
|
|
|
|
|
content: getIntroduction(config.opening_statement),
|
|
|
|
|
suggestedQuestions: config.suggested_questions,
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
draft.unshift({
|
|
|
|
|
id: `${Date.now()}`,
|
|
|
|
|
content: getIntroduction(config.opening_statement),
|
|
|
|
|
isAnswer: true,
|
|
|
|
|
isOpeningStatement: true,
|
|
|
|
|
suggestedQuestions: config.suggested_questions,
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}))
|
|
|
|
|
}
|
|
|
|
|
}, [])
|
|
|
|
|
}, [config?.opening_statement, getIntroduction, config?.suggested_questions, handleUpdateChatList])
|
|
|
|
|
|
|
|
|
|
const handleStop = useCallback(() => {
|
|
|
|
|
hasStopResponded.current = true
|
|
|
|
|
|