| | |
| | | import { memo, useCallback, useImperativeHandle, useMemo } from 'react' |
| | | import { |
| | | forwardRef, |
| | | memo, |
| | | useCallback, |
| | | useImperativeHandle, |
| | | useMemo, |
| | | } from 'react' |
| | | import { |
| | | useConfigFromDebugContext, |
| | | useFormattingChangedSubscription, |
| | |
| | | import { useFeatures } from '@/app/components/base/features/hooks' |
| | | import { getLastAnswer, isValidGeneratedAnswer } from '@/app/components/base/chat/utils' |
| | | import type { InputForm } from '@/app/components/base/chat/chat/type' |
| | | import { canFindTool } from '@/utils' |
| | | import type { FileEntity } from '@/app/components/base/file-uploader/types' |
| | | |
| | | type DebugWithSingleModelProps = { |
| | | checkCanSend?: () => boolean |
| | |
| | | export type DebugWithSingleModelRefType = { |
| | | handleRestart: () => void |
| | | } |
| | | const DebugWithSingleModel = ( |
| | | { |
| | | ref, |
| | | checkCanSend, |
| | | }: DebugWithSingleModelProps & { |
| | | ref: React.RefObject<DebugWithSingleModelRefType>; |
| | | }, |
| | | ) => { |
| | | const DebugWithSingleModel = forwardRef<DebugWithSingleModelRefType, DebugWithSingleModelProps>(({ |
| | | checkCanSend, |
| | | }, ref) => { |
| | | const { userProfile } = useAppContext() |
| | | const { |
| | | modelConfig, |
| | |
| | | ) |
| | | }, [appId, chatList, checkCanSend, completionParams, config, handleSend, inputs, modelConfig.mode, modelConfig.model_id, modelConfig.provider, textGenerationModelList]) |
| | | |
| | | const doRegenerate = useCallback((chatItem: ChatItemInTree, editedQuestion?: { message: string, files?: FileEntity[] }) => { |
| | | const question = editedQuestion ? chatItem : chatList.find(item => item.id === chatItem.parentMessageId)! |
| | | const doRegenerate = useCallback((chatItem: ChatItemInTree) => { |
| | | const question = chatList.find(item => item.id === chatItem.parentMessageId)! |
| | | const parentAnswer = chatList.find(item => item.id === question.parentMessageId) |
| | | doSend(editedQuestion ? editedQuestion.message : question.content, |
| | | editedQuestion ? editedQuestion.files : question.message_files, |
| | | true, |
| | | isValidGeneratedAnswer(parentAnswer) ? parentAnswer : null, |
| | | ) |
| | | doSend(question.content, question.message_files, true, isValidGeneratedAnswer(parentAnswer) ? parentAnswer : null) |
| | | }, [chatList, doSend]) |
| | | |
| | | const allToolIcons = useMemo(() => { |
| | | const icons: Record<string, any> = {} |
| | | modelConfig.agentConfig.tools?.forEach((item: any) => { |
| | | icons[item.tool_name] = collectionList.find((collection: any) => canFindTool(collection.id, item.provider_id))?.icon |
| | | icons[item.tool_name] = collectionList.find((collection: any) => collection.id === item.provider_id)?.icon |
| | | }) |
| | | return icons |
| | | }, [collectionList, modelConfig.agentConfig.tools]) |
| | |
| | | noSpacing |
| | | /> |
| | | ) |
| | | } |
| | | }) |
| | | |
| | | DebugWithSingleModel.displayName = 'DebugWithSingleModel' |
| | | |