Feat/chat add origin (#1130)

This commit is contained in:
zxhlyh
2023-09-09 19:17:12 +08:00
committed by GitHub
parent 6effcd3755
commit 84c76bc04a
74 changed files with 2454 additions and 28 deletions

View File

@@ -167,6 +167,7 @@ const Main: FC<IMainProps> = ({
const [suggestedQuestionsAfterAnswerConfig, setSuggestedQuestionsAfterAnswerConfig] = useState<SuggestedQuestionsAfterAnswerConfig | null>(null)
const [speechToTextConfig, setSpeechToTextConfig] = useState<SuggestedQuestionsAfterAnswerConfig | null>(null)
const [citationConfig, setCitationConfig] = useState<SuggestedQuestionsAfterAnswerConfig | null>(null)
const [conversationIdChangeBecauseOfNew, setConversationIdChangeBecauseOfNew, getConversationIdChangeBecauseOfNew] = useGetState(false)
const [isChatStarted, { setTrue: setChatStarted, setFalse: setChatNotStarted }] = useBoolean(false)
@@ -249,6 +250,7 @@ const Main: FC<IMainProps> = ({
content: item.answer,
feedback: item.feedback,
isAnswer: true,
citation: item.retriever_resources,
})
})
setChatList(newChatList)
@@ -364,7 +366,7 @@ const Main: FC<IMainProps> = ({
const isNotNewConversation = allConversations.some(item => item.id === _conversationId)
setAllConversationList(allConversations)
// fetch new conversation info
const { user_input_form, opening_statement: introduction, suggested_questions_after_answer, speech_to_text }: any = appParams
const { user_input_form, opening_statement: introduction, suggested_questions_after_answer, speech_to_text, retriever_resource }: any = appParams
const prompt_variables = userInputsFormToPromptVariables(user_input_form)
if (siteInfo.default_language)
changeLanguage(siteInfo.default_language)
@@ -380,6 +382,7 @@ const Main: FC<IMainProps> = ({
} as PromptConfig)
setSuggestedQuestionsAfterAnswerConfig(suggested_questions_after_answer)
setSpeechToTextConfig(speech_to_text)
setCitationConfig(retriever_resource)
// setConversationList(conversations as ConversationItem[])
@@ -474,7 +477,7 @@ const Main: FC<IMainProps> = ({
setChatList(newList)
// answer
const responseItem = {
const responseItem: IChatItem = {
id: `${Date.now()}`,
content: '',
isAnswer: true,
@@ -533,6 +536,23 @@ const Main: FC<IMainProps> = ({
setIsShowSuggestion(true)
}
},
onMessageEnd: isInstalledApp
? (messageEnd) => {
if (!isInstalledApp)
return
responseItem.citation = messageEnd.retriever_resources
const newListWithAnswer = produce(
getChatList().filter(item => item.id !== responseItem.id && item.id !== placeholderAnswerId),
(draft) => {
if (!draft.find(item => item.id === questionId))
draft.push({ ...questionItem })
draft.push({ ...responseItem })
})
setChatList(newListWithAnswer)
}
: undefined,
onError() {
setResponsingFalse()
// role back placeholder answer
@@ -678,6 +698,7 @@ const Main: FC<IMainProps> = ({
isShowSuggestion={doShowSuggestion}
suggestionList={suggestQuestions}
isShowSpeechToText={speechToTextConfig?.enabled}
isShowCitation={citationConfig?.enabled && isInstalledApp}
/>
</div>
</div>)