import React from 'react' import TextInputWithTitle from '../TextInputWithTitle' import TextAreaWithTitle from '../TextAreaWithTitle' import DropdownBox from '../DropdownBox' import PrimaryButton from '../PrimaryButton' import ToggleSwitch from '../ToggleSwitch' import CreateBotPromptInput from '../CreateBotPromptInput' import { useGetDownloadedModels } from '@hooks/useGetDownloadedModels' import { SubmitHandler, useForm } from 'react-hook-form' import Avatar from '../Avatar' import { v4 as uuidv4 } from 'uuid' import DraggableProgressBar from '../DraggableProgressBar' import { useSetAtom } from 'jotai' import { activeBotAtom } from '@helpers/atoms/Bot.atom' import { rightSideBarExpandStateAtom } from '@helpers/atoms/SideBarExpand.atom' import { MainViewState, setMainViewStateAtom, } from '@helpers/atoms/MainView.atom' const CreateBotContainer: React.FC = () => { const { downloadedModels } = useGetDownloadedModels() const setActiveBot = useSetAtom(activeBotAtom) const setMainViewState = useSetAtom(setMainViewStateAtom) const setRightSideBarVisibility = useSetAtom(rightSideBarExpandStateAtom) const createBot = async (bot: Bot) => { try { // await executeSerial(DataService.CreateBot, bot) } catch (err) { alert(err) console.error(err) } finally { setMainViewState(MainViewState.BotInfo) setActiveBot(bot) setRightSideBarVisibility(true) } } const { handleSubmit, control } = useForm({ defaultValues: { _id: uuidv4(), name: '', description: '', visibleFromBotProfile: true, systemPrompt: '', welcomeMessage: '', publiclyAccessible: true, suggestReplies: false, renderMarkdownContent: true, customTemperature: 0.7, enableCustomTemperature: false, maxTokens: 2048, frequencyPenalty: 0, presencePenalty: 0, }, mode: 'onChange', }) const onSubmit: SubmitHandler = (data) => { console.log('bot', JSON.stringify(data, null, 2)) if (!data.modelId) { alert('Please select a model') return } const bot: Bot = { ...data, customTemperature: Number(data.customTemperature), maxTokens: Number(data.maxTokens), frequencyPenalty: Number(data.frequencyPenalty), presencePenalty: Number(data.presencePenalty), } createBot(bot) } let models = downloadedModels.map((model: { _id: any }) => { return model._id }) models = ['Select a model', ...models] return (
Create Bot
If this setting is enabled, the bot will be added to your profile and will be publicly accessible. Turning this off will make the bot private.

Custom temperature

Frequency penalty

Presence penalty

) } export default CreateBotContainer