mirror of
https://git.mirrors.martin98.com/https://github.com/langgenius/dify.git
synced 2025-07-07 15:31:49 +08:00
feat: stop response enchancement (#352)
This commit is contained in:
parent
72555d5df8
commit
87af414a52
@ -75,6 +75,8 @@ const Debug: FC<IDebug> = ({
|
|||||||
const [abortController, setAbortController] = useState<AbortController | null>(null)
|
const [abortController, setAbortController] = useState<AbortController | null>(null)
|
||||||
const [isShowFormattingChangeConfirm, setIsShowFormattingChangeConfirm] = useState(false)
|
const [isShowFormattingChangeConfirm, setIsShowFormattingChangeConfirm] = useState(false)
|
||||||
const [isShowSuggestion, setIsShowSuggestion] = useState(false)
|
const [isShowSuggestion, setIsShowSuggestion] = useState(false)
|
||||||
|
const [messageTaskId, setMessageTaskId] = useState('')
|
||||||
|
const [hasStopResponded, setHasStopResponded, getHasStopResponded] = useGetState(false)
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (formattingChanged && chatList.some(item => !item.isAnswer))
|
if (formattingChanged && chatList.some(item => !item.isAnswer))
|
||||||
@ -83,7 +85,7 @@ const Debug: FC<IDebug> = ({
|
|||||||
setFormattingChanged(false)
|
setFormattingChanged(false)
|
||||||
}, [formattingChanged])
|
}, [formattingChanged])
|
||||||
|
|
||||||
const clearConversation = () => {
|
const clearConversation = async () => {
|
||||||
setConversationId(null)
|
setConversationId(null)
|
||||||
abortController?.abort()
|
abortController?.abort()
|
||||||
setResponsingFalse()
|
setResponsingFalse()
|
||||||
@ -136,7 +138,6 @@ const Debug: FC<IDebug> = ({
|
|||||||
|
|
||||||
const doShowSuggestion = isShowSuggestion && !isResponsing
|
const doShowSuggestion = isShowSuggestion && !isResponsing
|
||||||
const [suggestQuestions, setSuggestQuestions] = useState<string[]>([])
|
const [suggestQuestions, setSuggestQuestions] = useState<string[]>([])
|
||||||
const [messageTaskId, setMessageTaskId] = useState('')
|
|
||||||
const onSend = async (message: string) => {
|
const onSend = async (message: string) => {
|
||||||
if (isResponsing) {
|
if (isResponsing) {
|
||||||
notify({ type: 'info', message: t('appDebug.errorMessage.waitForResponse') })
|
notify({ type: 'info', message: t('appDebug.errorMessage.waitForResponse') })
|
||||||
@ -203,6 +204,7 @@ const Debug: FC<IDebug> = ({
|
|||||||
|
|
||||||
let _newConversationId: null | string = null
|
let _newConversationId: null | string = null
|
||||||
|
|
||||||
|
setHasStopResponded(false)
|
||||||
setResponsingTrue()
|
setResponsingTrue()
|
||||||
setIsShowSuggestion(false)
|
setIsShowSuggestion(false)
|
||||||
sendChatMessage(appId, data, {
|
sendChatMessage(appId, data, {
|
||||||
@ -255,7 +257,7 @@ const Debug: FC<IDebug> = ({
|
|||||||
}
|
}
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
if (suggestedQuestionsAfterAnswerConfig.enabled) {
|
if (suggestedQuestionsAfterAnswerConfig.enabled && !getHasStopResponded()) {
|
||||||
const { data }: any = await fetchSuggestedQuestions(appId, responseItem.id)
|
const { data }: any = await fetchSuggestedQuestions(appId, responseItem.id)
|
||||||
setSuggestQuestions(data)
|
setSuggestQuestions(data)
|
||||||
setIsShowSuggestion(true)
|
setIsShowSuggestion(true)
|
||||||
@ -379,8 +381,8 @@ const Debug: FC<IDebug> = ({
|
|||||||
isResponsing={isResponsing}
|
isResponsing={isResponsing}
|
||||||
canStopResponsing={!!messageTaskId}
|
canStopResponsing={!!messageTaskId}
|
||||||
abortResponsing={async () => {
|
abortResponsing={async () => {
|
||||||
abortController?.abort()
|
|
||||||
await stopChatMessageResponding(appId, messageTaskId)
|
await stopChatMessageResponding(appId, messageTaskId)
|
||||||
|
setHasStopResponded(true)
|
||||||
setResponsingFalse()
|
setResponsingFalse()
|
||||||
}}
|
}}
|
||||||
isShowSuggestion={doShowSuggestion}
|
isShowSuggestion={doShowSuggestion}
|
||||||
@ -399,6 +401,7 @@ const Debug: FC<IDebug> = ({
|
|||||||
className="mt-2"
|
className="mt-2"
|
||||||
content={completionRes}
|
content={completionRes}
|
||||||
isLoading={!completionRes && isResponsing}
|
isLoading={!completionRes && isResponsing}
|
||||||
|
isInstalledApp={false}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
@ -191,7 +191,7 @@ const Main: FC<IMainProps> = ({
|
|||||||
}, [chatList, currConversationId])
|
}, [chatList, currConversationId])
|
||||||
// user can not edit inputs if user had send message
|
// user can not edit inputs if user had send message
|
||||||
const canEditInpus = !chatList.some(item => item.isAnswer === false) && isNewConversation
|
const canEditInpus = !chatList.some(item => item.isAnswer === false) && isNewConversation
|
||||||
const createNewChat = () => {
|
const createNewChat = async () => {
|
||||||
// if new chat is already exist, do not create new chat
|
// if new chat is already exist, do not create new chat
|
||||||
abortController?.abort()
|
abortController?.abort()
|
||||||
setResponsingFalse()
|
setResponsingFalse()
|
||||||
@ -333,6 +333,8 @@ const Main: FC<IMainProps> = ({
|
|||||||
const doShowSuggestion = isShowSuggestion && !isResponsing
|
const doShowSuggestion = isShowSuggestion && !isResponsing
|
||||||
const [suggestQuestions, setSuggestQuestions] = useState<string[]>([])
|
const [suggestQuestions, setSuggestQuestions] = useState<string[]>([])
|
||||||
const [messageTaskId, setMessageTaskId] = useState('')
|
const [messageTaskId, setMessageTaskId] = useState('')
|
||||||
|
const [hasStopResponded, setHasStopResponded, getHasStopResponded] = useGetState(false)
|
||||||
|
|
||||||
const handleSend = async (message: string) => {
|
const handleSend = async (message: string) => {
|
||||||
if (isResponsing) {
|
if (isResponsing) {
|
||||||
notify({ type: 'info', message: t('appDebug.errorMessage.waitForResponse') })
|
notify({ type: 'info', message: t('appDebug.errorMessage.waitForResponse') })
|
||||||
@ -371,6 +373,7 @@ const Main: FC<IMainProps> = ({
|
|||||||
|
|
||||||
let tempNewConversationId = ''
|
let tempNewConversationId = ''
|
||||||
|
|
||||||
|
setHasStopResponded(false)
|
||||||
setResponsingTrue()
|
setResponsingTrue()
|
||||||
setIsShowSuggestion(false)
|
setIsShowSuggestion(false)
|
||||||
sendChatMessage(data, {
|
sendChatMessage(data, {
|
||||||
@ -411,7 +414,7 @@ const Main: FC<IMainProps> = ({
|
|||||||
resetNewConversationInputs()
|
resetNewConversationInputs()
|
||||||
setChatNotStarted()
|
setChatNotStarted()
|
||||||
setCurrConversationId(tempNewConversationId, appId, true)
|
setCurrConversationId(tempNewConversationId, appId, true)
|
||||||
if (suggestedQuestionsAfterAnswerConfig?.enabled) {
|
if (suggestedQuestionsAfterAnswerConfig?.enabled && !getHasStopResponded()) {
|
||||||
const { data }: any = await fetchSuggestedQuestions(responseItem.id, isInstalledApp, installedAppInfo?.id)
|
const { data }: any = await fetchSuggestedQuestions(responseItem.id, isInstalledApp, installedAppInfo?.id)
|
||||||
setSuggestQuestions(data)
|
setSuggestQuestions(data)
|
||||||
setIsShowSuggestion(true)
|
setIsShowSuggestion(true)
|
||||||
@ -536,8 +539,8 @@ const Main: FC<IMainProps> = ({
|
|||||||
isResponsing={isResponsing}
|
isResponsing={isResponsing}
|
||||||
canStopResponsing={!!messageTaskId}
|
canStopResponsing={!!messageTaskId}
|
||||||
abortResponsing={async () => {
|
abortResponsing={async () => {
|
||||||
abortController?.abort()
|
|
||||||
await stopChatMessageResponding(appId, messageTaskId, isInstalledApp, installedAppInfo?.id)
|
await stopChatMessageResponding(appId, messageTaskId, isInstalledApp, installedAppInfo?.id)
|
||||||
|
setHasStopResponded(true)
|
||||||
setResponsingFalse()
|
setResponsingFalse()
|
||||||
}}
|
}}
|
||||||
checkCanSend={checkCanSend}
|
checkCanSend={checkCanSend}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user