docs: allow stop answer generation in AI assistant (#14387)
This commit is contained in:
@@ -1,6 +1,11 @@
|
|||||||
import React, { useEffect, useMemo, useRef } from "react"
|
import React, { useEffect, useMemo, useRef } from "react"
|
||||||
import clsx from "clsx"
|
import clsx from "clsx"
|
||||||
import { ArrowUpCircleSolid, LightBulb, LightBulbSolid } from "@medusajs/icons"
|
import {
|
||||||
|
ArrowUpCircleSolid,
|
||||||
|
LightBulb,
|
||||||
|
LightBulbSolid,
|
||||||
|
StopCircleSolid,
|
||||||
|
} from "@medusajs/icons"
|
||||||
import {
|
import {
|
||||||
useAiAssistant,
|
useAiAssistant,
|
||||||
useAnalytics,
|
useAnalytics,
|
||||||
@@ -20,7 +25,7 @@ export const AiAssistantChatWindowInput = ({
|
|||||||
}: AiAssistantChatWindowInputProps) => {
|
}: AiAssistantChatWindowInputProps) => {
|
||||||
const { chatOpened, inputRef, loading, setChatOpened, isCaptchaLoaded } =
|
const { chatOpened, inputRef, loading, setChatOpened, isCaptchaLoaded } =
|
||||||
useAiAssistant()
|
useAiAssistant()
|
||||||
const { submitQuery, conversation } = useChat()
|
const { submitQuery, conversation, stopGeneration } = useChat()
|
||||||
const { track } = useAnalytics()
|
const { track } = useAnalytics()
|
||||||
const { active, toggle } = useDeepThinking()
|
const { active, toggle } = useDeepThinking()
|
||||||
const { isBrowser } = useIsBrowser()
|
const { isBrowser } = useIsBrowser()
|
||||||
@@ -43,6 +48,12 @@ export const AiAssistantChatWindowInput = ({
|
|||||||
overrideQuestion?: string
|
overrideQuestion?: string
|
||||||
) => {
|
) => {
|
||||||
e?.preventDefault()
|
e?.preventDefault()
|
||||||
|
if (loading) {
|
||||||
|
// stop the generation
|
||||||
|
stopGeneration()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
submitQuery(overrideQuestion || question)
|
submitQuery(overrideQuestion || question)
|
||||||
if (!conversation.length) {
|
if (!conversation.length) {
|
||||||
track({
|
track({
|
||||||
@@ -206,10 +217,10 @@ export const AiAssistantChatWindowInput = ({
|
|||||||
"appearance-none p-0 text-medusa-fg-base disabled:text-medusa-fg-disabled",
|
"appearance-none p-0 text-medusa-fg-base disabled:text-medusa-fg-disabled",
|
||||||
"transition-colors"
|
"transition-colors"
|
||||||
)}
|
)}
|
||||||
disabled={!question || loading || !isCaptchaLoaded}
|
disabled={!isCaptchaLoaded || (!question && !loading)}
|
||||||
type="submit"
|
type="submit"
|
||||||
>
|
>
|
||||||
<ArrowUpCircleSolid />
|
{loading ? <StopCircleSolid /> : <ArrowUpCircleSolid />}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ export const AiAssistantChatWindow = () => {
|
|||||||
content: item.question,
|
content: item.question,
|
||||||
sources: item.sources,
|
sources: item.sources,
|
||||||
question_id: item.id,
|
question_id: item.id,
|
||||||
|
isGenerationAborted: item.isGenerationAborted,
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<AiAssistantThreadItem
|
<AiAssistantThreadItem
|
||||||
@@ -61,6 +62,7 @@ export const AiAssistantChatWindow = () => {
|
|||||||
content: item.answer,
|
content: item.answer,
|
||||||
sources: item.sources,
|
sources: item.sources,
|
||||||
question_id: item.id,
|
question_id: item.id,
|
||||||
|
isGenerationAborted: item.isGenerationAborted,
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</Fragment>
|
</Fragment>
|
||||||
|
|||||||
@@ -25,6 +25,13 @@ export const AiAssistantThreadItem = ({ item }: AiAssistantThreadItemProps) => {
|
|||||||
|
|
||||||
return !item.question_id && item.content.length === 0
|
return !item.question_id && item.content.length === 0
|
||||||
}, [item, error])
|
}, [item, error])
|
||||||
|
if (
|
||||||
|
item.isGenerationAborted &&
|
||||||
|
item.type === "answer" &&
|
||||||
|
!item.content.length
|
||||||
|
) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
className={clsx(
|
className={clsx(
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ export type AiAssistantThreadItem = {
|
|||||||
content: string
|
content: string
|
||||||
question_id?: string | null
|
question_id?: string | null
|
||||||
sources?: Source[]
|
sources?: Source[]
|
||||||
|
isGenerationAborted?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
const AiAssistantContext = createContext<AiAssistantContextType | null>(null)
|
const AiAssistantContext = createContext<AiAssistantContextType | null>(null)
|
||||||
|
|||||||
Reference in New Issue
Block a user