import React, { useState, useCallback } from 'react'; import { Box, Card, Flex, FormControl, Input, Textarea, Slider, SliderTrack, SliderFilledTrack, SliderThumb, SliderMark, Tooltip, Button, Select, Grid, Switch, Image } from '@chakra-ui/react'; import { QuestionOutlineIcon } from '@chakra-ui/icons'; import type { ModelSchema } from '@/types/mongoSchema'; import { UseFormReturn } from 'react-hook-form'; import { modelList, ModelVectorSearchModeMap } from '@/constants/model'; import { formatPrice } from '@/utils/user'; import { useConfirm } from '@/hooks/useConfirm'; import { useSelectFile } from '@/hooks/useSelectFile'; import { useToast } from '@/hooks/useToast'; import { fileToBase64 } from '@/utils/file'; const ModelEditForm = ({ formHooks, canTrain, isOwner, handleDelModel }: { formHooks: UseFormReturn; canTrain: boolean; isOwner: boolean; handleDelModel: () => void; }) => { const { openConfirm, ConfirmChild } = useConfirm({ content: '确认删除该模型?' }); const { register, setValue, getValues } = formHooks; const [refresh, setRefresh] = useState(false); const { File, onOpen: onOpenSelectFile } = useSelectFile({ fileType: '.jpg,.png', multiple: false }); const { toast } = useToast(); const onSelectFile = useCallback( async (e: File[]) => { const file = e[0]; if (!file) return; if (file.size > 100 * 1024) { return toast({ title: '头像需小于 100kb', status: 'warning' }); } const base64 = (await fileToBase64(file)) as string; setValue('avatar', base64); setRefresh((state) => !state); }, [setValue, toast] ); return ( <> 基本信息 头像: {'avatar'} isOwner && onOpenSelectFile()} /> 名称: modelId: {getValues('_id')} 模型类型: {modelList.find((item) => item.model === getValues('service.modelName'))?.name} 价格: {formatPrice( modelList.find((item) => item.model === getValues('service.modelName'))?.price || 0, 1000 )} 元/1K tokens(包括上下文和回答) 收藏人数: {getValues('share.collection')}人 {isOwner && ( 删除模型和知识库 )} 模型效果 温度 { setValue('temperature', e); setRefresh(!refresh); }} > {getValues('temperature')} {canTrain && ( 搜索模式 )} 系统提示词