| <script lang="ts" setup> | |
| import { ref } from 'vue' | |
| import { NButton, NInput, NSlider, useMessage } from 'naive-ui' | |
| import { useSettingStore } from '@/store' | |
| import type { SettingsState } from '@/store/modules/settings/helper' | |
| import { t } from '@/locales' | |
| const settingStore = useSettingStore() | |
| const ms = useMessage() | |
| const systemMessage = ref(settingStore.systemMessage ?? '') | |
| const temperature = ref(settingStore.temperature ?? 0.5) | |
| const top_p = ref(settingStore.top_p ?? 1) | |
| function updateSettings(options: Partial<SettingsState>) { | |
| settingStore.updateSetting(options) | |
| ms.success(t('common.success')) | |
| } | |
| function handleReset() { | |
| settingStore.resetSetting() | |
| ms.success(t('common.success')) | |
| window.location.reload() | |
| } | |
| </script> | |
| <template> | |
| <div class="p-4 space-y-5 min-h-[200px]"> | |
| <div class="space-y-6"> | |
| <div class="flex items-center space-x-4"> | |
| <span class="flex-shrink-0 w-[120px]">{{ $t('setting.role') }}</span> | |
| <div class="flex-1"> | |
| <NInput v-model:value="systemMessage" type="textarea" :autosize="{ minRows: 1, maxRows: 4 }" /> | |
| </div> | |
| <NButton size="tiny" text type="primary" @click="updateSettings({ systemMessage })"> | |
| {{ $t('common.save') }} | |
| </NButton> | |
| </div> | |
| <div class="flex items-center space-x-4"> | |
| <span class="flex-shrink-0 w-[120px]">{{ $t('setting.temperature') }} </span> | |
| <div class="flex-1"> | |
| <NSlider v-model:value="temperature" :max="1" :min="0" :step="0.1" /> | |
| </div> | |
| <span>{{ temperature }}</span> | |
| <NButton size="tiny" text type="primary" @click="updateSettings({ temperature })"> | |
| {{ $t('common.save') }} | |
| </NButton> | |
| </div> | |
| <div class="flex items-center space-x-4"> | |
| <span class="flex-shrink-0 w-[120px]">{{ $t('setting.top_p') }} </span> | |
| <div class="flex-1"> | |
| <NSlider v-model:value="top_p" :max="1" :min="0" :step="0.1" /> | |
| </div> | |
| <span>{{ top_p }}</span> | |
| <NButton size="tiny" text type="primary" @click="updateSettings({ top_p })"> | |
| {{ $t('common.save') }} | |
| </NButton> | |
| </div> | |
| <div class="flex items-center space-x-4"> | |
| <span class="flex-shrink-0 w-[120px]"> </span> | |
| <NButton size="small" @click="handleReset"> | |
| {{ $t('common.reset') }} | |
| </NButton> | |
| </div> | |
| </div> | |
| </div> | |
| </template> | |