import { Select, Slider, Stack, Switch, Text, TextInput } from "@mantine/core"; import { useForm } from "@mantine/form"; import { usePubSub } from "create-pubsub/react"; import { settingsPubSub } from "../../../../../modules/pubSub"; import { defaultSettings, inferenceTypes, } from "../../../../../modules/settings"; import { isWebGPUAvailable } from "../../../../../modules/webGpu"; import { AIParameterSlider } from "./components/AIParameterSlider"; import { BrowserSettings } from "./components/BrowserSettings"; import { HordeSettings } from "./components/HordeSettings"; import { OpenAISettings } from "./components/OpenAISettings"; import { SystemPromptInput } from "./components/SystemPromptInput"; import { useHordeModels } from "./hooks/useHordeModels"; import { useHordeUserInfo } from "./hooks/useHordeUserInfo"; import { useOpenAiModels } from "./hooks/useOpenAiModels"; import { penaltySliderMarks } from "./types"; export default function AISettingsForm() { const [settings, setSettings] = usePubSub(settingsPubSub); const { openAiModels, useTextInput } = useOpenAiModels(settings); const hordeModels = useHordeModels(settings); const hordeUserInfo = useHordeUserInfo(settings); const form = useForm({ initialValues: settings, onValuesChange: setSettings, }); return ( {form.values.enableAiResponse && ( <> Search results to consider Determines the number of search results to consider when generating AI responses. A higher value may enhance accuracy, but it will also increase response time. ({ value: index, label: index.toString(), }))} />