From f02c24c062c40e56230200ccfd481a1ecb431210 Mon Sep 17 00:00:00 2001 From: danemadsen Date: Sun, 4 Aug 2024 09:31:05 +1000 Subject: [PATCH] model pages --- .../model_settings/google_gemini_page.dart | 15 +- .../pages/model_settings/llama_cpp_page.dart | 57 +-- .../pages/model_settings/mistral_ai_page.dart | 9 +- .../pages/model_settings/ollama_page.dart | 68 +--- .../pages/model_settings/open_ai_page.dart | 20 +- .../frequency_penalty_parameter.dart | 30 -- .../last_n_penalty_parameter.dart | 30 -- .../parameter_widgets/min_p_parameter.dart | 30 -- .../mirostat_eta_parameter.dart | 30 -- .../parameter_widgets/mirostat_parameter.dart | 30 -- .../mirostat_tau_parameter.dart | 30 -- .../parameter_widgets/n_batch_parameter.dart | 30 -- .../parameter_widgets/n_ctx_parameter.dart | 30 -- .../parameter_widgets/n_keep_parameter.dart | 30 -- .../n_predict_parameter.dart | 30 -- .../n_threads_parameter.dart | 42 -- .../penalize_nl_parameter.dart | 26 -- .../present_penalty_parameter.dart | 30 -- .../repeat_penalty_parameter.dart | 30 -- .../temperature_parameter.dart | 30 -- .../parameter_widgets/tfs_z_parameter.dart | 30 -- .../parameter_widgets/top_k_parameter.dart | 30 -- .../parameter_widgets/top_p_parameter.dart | 30 -- .../typical_p_parameter.dart | 30 -- .../mobile/parameter_widgets/use_default.dart | 26 -- lib/ui/mobile/utilities/model_parameters.dart | 378 ++++++++++++++++++ 26 files changed, 436 insertions(+), 715 deletions(-) delete mode 100644 lib/ui/mobile/parameter_widgets/frequency_penalty_parameter.dart delete mode 100644 lib/ui/mobile/parameter_widgets/last_n_penalty_parameter.dart delete mode 100644 lib/ui/mobile/parameter_widgets/min_p_parameter.dart delete mode 100644 lib/ui/mobile/parameter_widgets/mirostat_eta_parameter.dart delete mode 100644 lib/ui/mobile/parameter_widgets/mirostat_parameter.dart delete mode 100644 lib/ui/mobile/parameter_widgets/mirostat_tau_parameter.dart delete mode 100644 lib/ui/mobile/parameter_widgets/n_batch_parameter.dart delete mode 100644 lib/ui/mobile/parameter_widgets/n_ctx_parameter.dart delete mode 100644 lib/ui/mobile/parameter_widgets/n_keep_parameter.dart delete mode 100644 lib/ui/mobile/parameter_widgets/n_predict_parameter.dart delete mode 100644 lib/ui/mobile/parameter_widgets/n_threads_parameter.dart delete mode 100644 lib/ui/mobile/parameter_widgets/penalize_nl_parameter.dart delete mode 100644 lib/ui/mobile/parameter_widgets/present_penalty_parameter.dart delete mode 100644 lib/ui/mobile/parameter_widgets/repeat_penalty_parameter.dart delete mode 100644 lib/ui/mobile/parameter_widgets/temperature_parameter.dart delete mode 100644 lib/ui/mobile/parameter_widgets/tfs_z_parameter.dart delete mode 100644 lib/ui/mobile/parameter_widgets/top_k_parameter.dart delete mode 100644 lib/ui/mobile/parameter_widgets/top_p_parameter.dart delete mode 100644 lib/ui/mobile/parameter_widgets/typical_p_parameter.dart delete mode 100644 lib/ui/mobile/parameter_widgets/use_default.dart create mode 100644 lib/ui/mobile/utilities/model_parameters.dart diff --git a/lib/ui/mobile/pages/model_settings/google_gemini_page.dart b/lib/ui/mobile/pages/model_settings/google_gemini_page.dart index d8e5c3bd..4926917e 100644 --- a/lib/ui/mobile/pages/model_settings/google_gemini_page.dart +++ b/lib/ui/mobile/pages/model_settings/google_gemini_page.dart @@ -5,10 +5,7 @@ import 'package:maid/classes/providers/app_data.dart'; import 'package:maid/classes/providers/large_language_model.dart'; import 'package:maid/ui/mobile/layout/model_settings_app_bar.dart'; import 'package:maid/ui/mobile/parameter_widgets/api_key_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/n_predict_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/temperature_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/top_k_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/top_p_parameter.dart'; +import 'package:maid/ui/mobile/utilities/model_parameters.dart'; import 'package:maid/ui/shared/utilities/session_busy_overlay.dart'; import 'package:provider/provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; @@ -34,7 +31,11 @@ class GoogleGeminiPage extends StatelessWidget { prefs.setString("google_gemini_model", json.encode(model.toMap())); }); - return ListView( + return ModelParameters( + newlinePenalty: true, + topP: true, + topK: true, + temperature: true, children: [ const ApiKeyParameter(), Divider( @@ -44,10 +45,6 @@ class GoogleGeminiPage extends StatelessWidget { color: Theme.of(context).colorScheme.primary, ), const SizedBox(height: 20.0), - const NPredictParameter(), - const TopPParameter(), - const TopKParameter(), - const TemperatureParameter(), ] ); } diff --git a/lib/ui/mobile/pages/model_settings/llama_cpp_page.dart b/lib/ui/mobile/pages/model_settings/llama_cpp_page.dart index abd2110d..87d629c2 100644 --- a/lib/ui/mobile/pages/model_settings/llama_cpp_page.dart +++ b/lib/ui/mobile/pages/model_settings/llama_cpp_page.dart @@ -1,25 +1,8 @@ import 'package:flutter/material.dart'; import 'package:maid/ui/mobile/layout/model_settings_app_bar.dart'; -import 'package:maid/ui/mobile/parameter_widgets/min_p_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/n_predict_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/penalize_nl_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/mirostat_eta_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/mirostat_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/mirostat_tau_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/n_batch_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/n_ctx_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/n_threads_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/frequency_penalty_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/last_n_penalty_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/present_penalty_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/repeat_penalty_parameter.dart'; import 'package:maid/ui/mobile/parameter_widgets/seed_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/temperature_parameter.dart'; import 'package:maid/ui/mobile/parameter_widgets/template_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/tfs_z_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/top_k_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/top_p_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/typical_p_parameter.dart'; +import 'package:maid/ui/mobile/utilities/model_parameters.dart'; import 'package:maid/ui/shared/groups/llama_cpp_model_controls.dart'; import 'package:maid/ui/shared/utilities/session_busy_overlay.dart'; @@ -37,7 +20,25 @@ class LlamaCppPage extends StatelessWidget { } Widget buildListView(BuildContext context) { - return ListView( + return ModelParameters( + newlinePenalty: true, + temperature: true, + topK: true, + topP: true, + minP: true, + typicalP: true, + tfsZ: true, + lastNPenalty: true, + repetitionPenalty: true, + frequencyPenalty: true, + presencePenalty: true, + mirostat: true, + mirostatTau: true, + mirostatEta: true, + nCtx: true, + nPredict: true, + nBatch: true, + nThreads: true, children: [ const Padding( padding: EdgeInsets.symmetric(horizontal: 8), @@ -56,25 +57,7 @@ class LlamaCppPage extends StatelessWidget { endIndent: 10, color: Theme.of(context).colorScheme.primary, ), - const PenalizeNlParameter(), const SeedParameter(), - const TemperatureParameter(), - const TopKParameter(), - const TopPParameter(), - const MinPParameter(), - const TfsZParameter(), - const TypicalPParameter(), - const LastNPenaltyParameter(), - const RepeatPenaltyParameter(), - const FrequencyPenaltyParameter(), - const PresentPenaltyParameter(), - const MirostatParameter(), - const MirostatTauParameter(), - const MirostatEtaParameter(), - const NCtxParameter(), - const NPredictParameter(), - const NBatchParameter(), - const NThreadsParameter(), ] ); } diff --git a/lib/ui/mobile/pages/model_settings/mistral_ai_page.dart b/lib/ui/mobile/pages/model_settings/mistral_ai_page.dart index 85780138..2fe96be4 100644 --- a/lib/ui/mobile/pages/model_settings/mistral_ai_page.dart +++ b/lib/ui/mobile/pages/model_settings/mistral_ai_page.dart @@ -6,9 +6,8 @@ import 'package:maid/classes/providers/large_language_model.dart'; import 'package:maid/ui/mobile/layout/model_settings_app_bar.dart'; import 'package:maid/ui/mobile/parameter_widgets/api_key_parameter.dart'; import 'package:maid/ui/mobile/parameter_widgets/seed_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/temperature_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/top_p_parameter.dart'; import 'package:maid/ui/mobile/parameter_widgets/url_parameter.dart'; +import 'package:maid/ui/mobile/utilities/model_parameters.dart'; import 'package:maid/ui/shared/utilities/session_busy_overlay.dart'; import 'package:provider/provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; @@ -34,7 +33,9 @@ class MistralAiPage extends StatelessWidget { prefs.setString("mistral_ai_model", json.encode(model.toMap())); }); - return ListView( + return ModelParameters( + topP: true, + temperature: true, children: [ const ApiKeyParameter(), Divider( @@ -46,8 +47,6 @@ class MistralAiPage extends StatelessWidget { const UrlParameter(), const SizedBox(height: 20.0), const SeedParameter(), - const TopPParameter(), - const TemperatureParameter(), ] ); } diff --git a/lib/ui/mobile/pages/model_settings/ollama_page.dart b/lib/ui/mobile/pages/model_settings/ollama_page.dart index b84f28cb..ab666bc3 100644 --- a/lib/ui/mobile/pages/model_settings/ollama_page.dart +++ b/lib/ui/mobile/pages/model_settings/ollama_page.dart @@ -5,27 +5,9 @@ import 'package:maid/classes/providers/app_data.dart'; import 'package:maid/classes/providers/large_language_model.dart'; import 'package:maid/ui/mobile/layout/model_settings_app_bar.dart'; import 'package:maid/ui/mobile/parameter_widgets/api_key_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/n_keep_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/n_predict_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/penalize_nl_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/mirostat_eta_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/mirostat_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/mirostat_tau_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/n_batch_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/n_ctx_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/n_threads_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/frequency_penalty_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/last_n_penalty_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/present_penalty_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/repeat_penalty_parameter.dart'; import 'package:maid/ui/mobile/parameter_widgets/seed_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/temperature_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/tfs_z_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/top_k_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/top_p_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/typical_p_parameter.dart'; import 'package:maid/ui/mobile/parameter_widgets/url_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/use_default.dart'; +import 'package:maid/ui/mobile/utilities/model_parameters.dart'; import 'package:maid/ui/shared/utilities/session_busy_overlay.dart'; import 'package:provider/provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; @@ -51,7 +33,25 @@ class OllamaPage extends StatelessWidget { prefs.setString("ollama_model", json.encode(model.toMap())); }); - return ListView( + return ModelParameters( + newlinePenalty: true, + nThreads: true, + nCtx: true, + nBatch: true, + nPredict: true, + nKeep: true, + topK: true, + topP: true, + tfsZ: true, + typicalP: true, + temperature: true, + lastNPenalty: true, + repetitionPenalty: true, + frequencyPenalty: true, + presencePenalty: true, + mirostat: true, + mirostatTau: true, + mirostatEta: true, children: [ const ApiKeyParameter(), Divider( @@ -63,34 +63,6 @@ class OllamaPage extends StatelessWidget { const UrlParameter(), const SizedBox(height: 8.0), const SeedParameter(), - const UseDefaultParameter(), - if (!model.useDefault) ...[ - const SizedBox(height: 20.0), - Divider( - height: 20, - indent: 10, - endIndent: 10, - color: Theme.of(context).colorScheme.primary, - ), - const PenalizeNlParameter(), - const NThreadsParameter(), - const NCtxParameter(), - const NBatchParameter(), - const NPredictParameter(), - const NKeepParameter(), - const TopKParameter(), - const TopPParameter(), - const TfsZParameter(), - const TypicalPParameter(), - const TemperatureParameter(), - const LastNPenaltyParameter(), - const RepeatPenaltyParameter(), - const FrequencyPenaltyParameter(), - const PresentPenaltyParameter(), - const MirostatParameter(), - const MirostatTauParameter(), - const MirostatEtaParameter() - ] ] ); } diff --git a/lib/ui/mobile/pages/model_settings/open_ai_page.dart b/lib/ui/mobile/pages/model_settings/open_ai_page.dart index 313af031..dde03b28 100644 --- a/lib/ui/mobile/pages/model_settings/open_ai_page.dart +++ b/lib/ui/mobile/pages/model_settings/open_ai_page.dart @@ -5,13 +5,9 @@ import 'package:maid/classes/providers/app_data.dart'; import 'package:maid/classes/providers/large_language_model.dart'; import 'package:maid/ui/mobile/layout/model_settings_app_bar.dart'; import 'package:maid/ui/mobile/parameter_widgets/api_key_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/n_predict_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/frequency_penalty_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/present_penalty_parameter.dart'; import 'package:maid/ui/mobile/parameter_widgets/seed_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/temperature_parameter.dart'; -import 'package:maid/ui/mobile/parameter_widgets/top_p_parameter.dart'; import 'package:maid/ui/mobile/parameter_widgets/url_parameter.dart'; +import 'package:maid/ui/mobile/utilities/model_parameters.dart'; import 'package:maid/ui/shared/utilities/session_busy_overlay.dart'; import 'package:provider/provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; @@ -37,7 +33,12 @@ class OpenAiPage extends StatelessWidget { prefs.setString("open_ai_model", json.encode(model.toMap())); }); - return ListView( + return ModelParameters( + temperature: true, + frequencyPenalty: true, + presencePenalty: true, + nPredict: true, + topP: true, children: [ const ApiKeyParameter(), Divider( @@ -48,12 +49,7 @@ class OpenAiPage extends StatelessWidget { ), const UrlParameter(), const SizedBox(height: 20.0), - const SeedParameter(), - const TemperatureParameter(), - const FrequencyPenaltyParameter(), - const PresentPenaltyParameter(), - const NPredictParameter(), - const TopPParameter() + const SeedParameter() ] ); } diff --git a/lib/ui/mobile/parameter_widgets/frequency_penalty_parameter.dart b/lib/ui/mobile/parameter_widgets/frequency_penalty_parameter.dart deleted file mode 100644 index 32d8fa9a..00000000 --- a/lib/ui/mobile/parameter_widgets/frequency_penalty_parameter.dart +++ /dev/null @@ -1,30 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:maid/classes/providers/app_data.dart'; -import 'package:maid/classes/providers/large_language_model.dart'; -import 'package:maid/ui/shared/tiles/slider_list_tile.dart'; -import 'package:provider/provider.dart'; - -class FrequencyPenaltyParameter extends StatelessWidget { - const FrequencyPenaltyParameter({super.key}); - - @override - Widget build(BuildContext context) { - return Selector( - selector: (context, appData) => appData.model.penaltyFreq, - builder: frequencyPenaltyBuilder, - ); - } - - Widget frequencyPenaltyBuilder(BuildContext context, double penaltyFreq, Widget? child) { - return SliderListTile( - labelText: 'Frequency Penalty', - inputValue: penaltyFreq, - sliderMin: 0.0, - sliderMax: 1.0, - sliderDivisions: 100, - onValueChanged: (value) { - LargeLanguageModel.of(context).penaltyFreq = value; - } - ); - } -} diff --git a/lib/ui/mobile/parameter_widgets/last_n_penalty_parameter.dart b/lib/ui/mobile/parameter_widgets/last_n_penalty_parameter.dart deleted file mode 100644 index 60ac7fb4..00000000 --- a/lib/ui/mobile/parameter_widgets/last_n_penalty_parameter.dart +++ /dev/null @@ -1,30 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:maid/classes/providers/app_data.dart'; -import 'package:maid/classes/providers/large_language_model.dart'; -import 'package:maid/ui/shared/tiles/slider_list_tile.dart'; -import 'package:provider/provider.dart'; - -class LastNPenaltyParameter extends StatelessWidget { - const LastNPenaltyParameter({super.key}); - - @override - Widget build(BuildContext context) { - return Selector( - selector: (context, appData) => appData.model.penaltyLastN, - builder: lastNPenaltyBuilder, - ); - } - - Widget lastNPenaltyBuilder(BuildContext context, int penaltyLastN, Widget? child) { - return SliderListTile( - labelText: 'Last N Penalty', - inputValue: penaltyLastN, - sliderMin: 0.0, - sliderMax: 128.0, - sliderDivisions: 127, - onValueChanged: (value) { - LargeLanguageModel.of(context).penaltyLastN = value.round(); - } - ); - } -} diff --git a/lib/ui/mobile/parameter_widgets/min_p_parameter.dart b/lib/ui/mobile/parameter_widgets/min_p_parameter.dart deleted file mode 100644 index 617e1b0d..00000000 --- a/lib/ui/mobile/parameter_widgets/min_p_parameter.dart +++ /dev/null @@ -1,30 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:maid/classes/providers/app_data.dart'; -import 'package:maid/classes/providers/large_language_model.dart'; -import 'package:maid/ui/shared/tiles/slider_list_tile.dart'; -import 'package:provider/provider.dart'; - -class MinPParameter extends StatelessWidget { - const MinPParameter({super.key}); - - @override - Widget build(BuildContext context) { - return Selector( - selector: (context, appData) => appData.model.minP, - builder: minPBuilder, - ); - } - - Widget minPBuilder(BuildContext context, double minP, Widget? child) { - return SliderListTile( - labelText: 'Min P', - inputValue: minP, - sliderMin: 0.0, - sliderMax: 1.0, - sliderDivisions: 100, - onValueChanged: (value) { - LargeLanguageModel.of(context).minP = value; - } - ); - } -} diff --git a/lib/ui/mobile/parameter_widgets/mirostat_eta_parameter.dart b/lib/ui/mobile/parameter_widgets/mirostat_eta_parameter.dart deleted file mode 100644 index d6065c10..00000000 --- a/lib/ui/mobile/parameter_widgets/mirostat_eta_parameter.dart +++ /dev/null @@ -1,30 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:maid/classes/providers/app_data.dart'; -import 'package:maid/classes/providers/large_language_model.dart'; -import 'package:maid/ui/shared/tiles/slider_list_tile.dart'; -import 'package:provider/provider.dart'; - -class MirostatEtaParameter extends StatelessWidget { - const MirostatEtaParameter({super.key}); - - @override - Widget build(BuildContext context) { - return Selector( - selector: (context, appData) => appData.model.mirostatEta, - builder: mirostatEtaBuilder, - ); - } - - Widget mirostatEtaBuilder(BuildContext context, double mirostatEta, Widget? child) { - return SliderListTile( - labelText: 'Mirostat Eta', - inputValue: mirostatEta, - sliderMin: 0.0, - sliderMax: 1.0, - sliderDivisions: 100, - onValueChanged: (value) { - LargeLanguageModel.of(context).mirostatEta = value; - } - ); - } -} diff --git a/lib/ui/mobile/parameter_widgets/mirostat_parameter.dart b/lib/ui/mobile/parameter_widgets/mirostat_parameter.dart deleted file mode 100644 index abe0405c..00000000 --- a/lib/ui/mobile/parameter_widgets/mirostat_parameter.dart +++ /dev/null @@ -1,30 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:maid/classes/providers/app_data.dart'; -import 'package:maid/classes/providers/large_language_model.dart'; -import 'package:maid/ui/shared/tiles/slider_list_tile.dart'; -import 'package:provider/provider.dart'; - -class MirostatParameter extends StatelessWidget { - const MirostatParameter({super.key}); - - @override - Widget build(BuildContext context) { - return Selector( - selector: (context, appData) => appData.model.mirostat, - builder: mirostatBuilder, - ); - } - - Widget mirostatBuilder(BuildContext context, int mirostat, Widget? child) { - return SliderListTile( - labelText: 'Mirostat', - inputValue: mirostat, - sliderMin: 0.0, - sliderMax: 128.0, - sliderDivisions: 127, - onValueChanged: (value) { - LargeLanguageModel.of(context).mirostat = value.round(); - } - ); - } -} diff --git a/lib/ui/mobile/parameter_widgets/mirostat_tau_parameter.dart b/lib/ui/mobile/parameter_widgets/mirostat_tau_parameter.dart deleted file mode 100644 index c4b3ee2b..00000000 --- a/lib/ui/mobile/parameter_widgets/mirostat_tau_parameter.dart +++ /dev/null @@ -1,30 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:maid/classes/providers/app_data.dart'; -import 'package:maid/classes/providers/large_language_model.dart'; -import 'package:maid/ui/shared/tiles/slider_list_tile.dart'; -import 'package:provider/provider.dart'; - -class MirostatTauParameter extends StatelessWidget { - const MirostatTauParameter({super.key}); - - @override - Widget build(BuildContext context) { - return Selector( - selector: (context, appData) => appData.model.mirostatTau, - builder: mirostatTauBuilder, - ); - } - - Widget mirostatTauBuilder(BuildContext context, double mirostatTau, Widget? child) { - return SliderListTile( - labelText: 'MirostatTau', - inputValue: mirostatTau, - sliderMin: 0.0, - sliderMax: 10.0, - sliderDivisions: 100, - onValueChanged: (value) { - LargeLanguageModel.of(context).mirostatTau = value; - } - ); - } -} diff --git a/lib/ui/mobile/parameter_widgets/n_batch_parameter.dart b/lib/ui/mobile/parameter_widgets/n_batch_parameter.dart deleted file mode 100644 index 65bdc51a..00000000 --- a/lib/ui/mobile/parameter_widgets/n_batch_parameter.dart +++ /dev/null @@ -1,30 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:maid/classes/providers/app_data.dart'; -import 'package:maid/classes/providers/large_language_model.dart'; -import 'package:maid/ui/shared/tiles/slider_list_tile.dart'; -import 'package:provider/provider.dart'; - -class NBatchParameter extends StatelessWidget { - const NBatchParameter({super.key}); - - @override - Widget build(BuildContext context) { - return Selector( - selector: (context, appData) => appData.model.nBatch, - builder: nBatchBuilder, - ); - } - - Widget nBatchBuilder(BuildContext context, int nBatch, Widget? child) { - return SliderListTile( - labelText: 'Batch Size', - inputValue: nBatch, - sliderMin: 1.0, - sliderMax: 4096.0, - sliderDivisions: 4095, - onValueChanged: (value) { - LargeLanguageModel.of(context).nBatch = value.round(); - } - ); - } -} diff --git a/lib/ui/mobile/parameter_widgets/n_ctx_parameter.dart b/lib/ui/mobile/parameter_widgets/n_ctx_parameter.dart deleted file mode 100644 index abe4c797..00000000 --- a/lib/ui/mobile/parameter_widgets/n_ctx_parameter.dart +++ /dev/null @@ -1,30 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:maid/classes/providers/app_data.dart'; -import 'package:maid/classes/providers/large_language_model.dart'; -import 'package:maid/ui/shared/tiles/slider_list_tile.dart'; -import 'package:provider/provider.dart'; - -class NCtxParameter extends StatelessWidget { - const NCtxParameter({super.key}); - - @override - Widget build(BuildContext context) { - return Selector( - selector: (context, appData) => appData.model.nCtx, - builder: nCtxBuilder, - ); - } - - Widget nCtxBuilder(BuildContext context, int nCtx, Widget? child) { - return SliderListTile( - labelText: 'Context Length', - inputValue: nCtx, - sliderMin: 0.0, - sliderMax: 4096.0, - sliderDivisions: 4095, - onValueChanged: (value) { - LargeLanguageModel.of(context).nCtx = value.round(); - } - ); - } -} diff --git a/lib/ui/mobile/parameter_widgets/n_keep_parameter.dart b/lib/ui/mobile/parameter_widgets/n_keep_parameter.dart deleted file mode 100644 index 48717bd9..00000000 --- a/lib/ui/mobile/parameter_widgets/n_keep_parameter.dart +++ /dev/null @@ -1,30 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:maid/classes/providers/app_data.dart'; -import 'package:maid/classes/providers/large_language_model.dart'; -import 'package:maid/ui/shared/tiles/slider_list_tile.dart'; -import 'package:provider/provider.dart'; - -class NKeepParameter extends StatelessWidget { - const NKeepParameter({super.key}); - - @override - Widget build(BuildContext context) { - return Selector( - selector: (context, appData) => appData.model.nKeep, - builder: nKeepBuilder, - ); - } - - Widget nKeepBuilder(BuildContext context, int nKeep, Widget? child) { - return SliderListTile( - labelText: 'NKeep', - inputValue: nKeep, - sliderMin: 1.0, - sliderMax: 1024.0, - sliderDivisions: 1023, - onValueChanged: (value) { - LargeLanguageModel.of(context).nKeep = value.round(); - } - ); - } -} diff --git a/lib/ui/mobile/parameter_widgets/n_predict_parameter.dart b/lib/ui/mobile/parameter_widgets/n_predict_parameter.dart deleted file mode 100644 index 299375d0..00000000 --- a/lib/ui/mobile/parameter_widgets/n_predict_parameter.dart +++ /dev/null @@ -1,30 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:maid/classes/providers/app_data.dart'; -import 'package:maid/classes/providers/large_language_model.dart'; -import 'package:maid/ui/shared/tiles/slider_list_tile.dart'; -import 'package:provider/provider.dart'; - -class NPredictParameter extends StatelessWidget { - const NPredictParameter({super.key}); - - @override - Widget build(BuildContext context) { - return Selector( - selector: (context, appData) => appData.model.nPredict, - builder: nPredictBuilder, - ); - } - - Widget nPredictBuilder(BuildContext context, int nPredict, Widget? child) { - return SliderListTile( - labelText: 'Predict Length', - inputValue: nPredict, - sliderMin: 1.0, - sliderMax: 4096.0, - sliderDivisions: 4095, - onValueChanged: (value) { - LargeLanguageModel.of(context).nPredict = value.round(); - } - ); - } -} diff --git a/lib/ui/mobile/parameter_widgets/n_threads_parameter.dart b/lib/ui/mobile/parameter_widgets/n_threads_parameter.dart deleted file mode 100644 index 3fada907..00000000 --- a/lib/ui/mobile/parameter_widgets/n_threads_parameter.dart +++ /dev/null @@ -1,42 +0,0 @@ -import 'dart:io'; - -import 'package:flutter/material.dart'; -import 'package:maid/classes/providers/large_language_model.dart'; -import 'package:maid/enumerators/large_language_model_type.dart'; -import 'package:maid/classes/providers/app_data.dart'; -import 'package:maid/ui/shared/tiles/slider_list_tile.dart'; -import 'package:provider/provider.dart'; - -class NThreadsParameter extends StatelessWidget { - const NThreadsParameter({super.key}); - - @override - Widget build(BuildContext context) { - return Selector( - selector: (context, appData) => appData.model, - builder: nThreadsBuilder, - ); - } - - Widget nThreadsBuilder(BuildContext context, LargeLanguageModel model, Widget? child) { - final max = model.type == LargeLanguageModelType.llamacpp - ? Platform.numberOfProcessors.toDouble() - : 128.0; - - return SliderListTile( - labelText: 'NThreads', - inputValue: model.nThread, - sliderMin: 1.0, - sliderMax: max, - sliderDivisions: max.round() - 1, - onValueChanged: (value) { - if (value.round() > Platform.numberOfProcessors) { - LargeLanguageModel.of(context).nThread = Platform.numberOfProcessors; - } - else { - LargeLanguageModel.of(context).nThread = value.round(); - } - } - ); - } -} diff --git a/lib/ui/mobile/parameter_widgets/penalize_nl_parameter.dart b/lib/ui/mobile/parameter_widgets/penalize_nl_parameter.dart deleted file mode 100644 index 3eb5558e..00000000 --- a/lib/ui/mobile/parameter_widgets/penalize_nl_parameter.dart +++ /dev/null @@ -1,26 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:maid/classes/providers/app_data.dart'; -import 'package:maid/classes/providers/large_language_model.dart'; -import 'package:provider/provider.dart'; - -class PenalizeNlParameter extends StatelessWidget { - const PenalizeNlParameter({super.key}); - - @override - Widget build(BuildContext context) { - return Selector( - selector: (context, appData) => appData.model.penalizeNewline, - builder: buildSwitchContainer - ); - } - - Widget buildSwitchContainer(BuildContext context, bool penalizeNewline, Widget? child) { - return SwitchListTile( - title: const Text('Penalize New Line'), - value: penalizeNewline, - onChanged: (value) { - LargeLanguageModel.of(context).penalizeNewline = value; - }, - ); - } -} diff --git a/lib/ui/mobile/parameter_widgets/present_penalty_parameter.dart b/lib/ui/mobile/parameter_widgets/present_penalty_parameter.dart deleted file mode 100644 index eab3166f..00000000 --- a/lib/ui/mobile/parameter_widgets/present_penalty_parameter.dart +++ /dev/null @@ -1,30 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:maid/classes/providers/app_data.dart'; -import 'package:maid/classes/providers/large_language_model.dart'; -import 'package:maid/ui/shared/tiles/slider_list_tile.dart'; -import 'package:provider/provider.dart'; - -class PresentPenaltyParameter extends StatelessWidget { - const PresentPenaltyParameter({super.key}); - - @override - Widget build(BuildContext context) { - return Selector( - selector: (context, appData) => appData.model.penaltyPresent, - builder: presentPenaltyBuilder, - ); - } - - Widget presentPenaltyBuilder(BuildContext context, double penaltyPresent, Widget? child) { - return SliderListTile( - labelText: 'Presence Penalty', - inputValue: penaltyPresent, - sliderMin: 0.0, - sliderMax: 1.0, - sliderDivisions: 100, - onValueChanged: (value) { - LargeLanguageModel.of(context).penaltyPresent = value; - } - ); - } -} diff --git a/lib/ui/mobile/parameter_widgets/repeat_penalty_parameter.dart b/lib/ui/mobile/parameter_widgets/repeat_penalty_parameter.dart deleted file mode 100644 index 1330c83b..00000000 --- a/lib/ui/mobile/parameter_widgets/repeat_penalty_parameter.dart +++ /dev/null @@ -1,30 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:maid/classes/providers/app_data.dart'; -import 'package:maid/classes/providers/large_language_model.dart'; -import 'package:maid/ui/shared/tiles/slider_list_tile.dart'; -import 'package:provider/provider.dart'; - -class RepeatPenaltyParameter extends StatelessWidget { - const RepeatPenaltyParameter({super.key}); - - @override - Widget build(BuildContext context) { - return Selector( - selector: (context, appData) => appData.model.penaltyRepeat, - builder: repeatPenaltyBuilder, - ); - } - - Widget repeatPenaltyBuilder(BuildContext context, double penaltyRepeat, Widget? child) { - return SliderListTile( - labelText: 'Repeat Penalty', - inputValue: penaltyRepeat, - sliderMin: 0.0, - sliderMax: 2.0, - sliderDivisions: 200, - onValueChanged: (value) { - LargeLanguageModel.of(context).penaltyRepeat = value; - } - ); - } -} diff --git a/lib/ui/mobile/parameter_widgets/temperature_parameter.dart b/lib/ui/mobile/parameter_widgets/temperature_parameter.dart deleted file mode 100644 index ac284dde..00000000 --- a/lib/ui/mobile/parameter_widgets/temperature_parameter.dart +++ /dev/null @@ -1,30 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:maid/classes/providers/app_data.dart'; -import 'package:maid/classes/providers/large_language_model.dart'; -import 'package:maid/ui/shared/tiles/slider_list_tile.dart'; -import 'package:provider/provider.dart'; - -class TemperatureParameter extends StatelessWidget { - const TemperatureParameter({super.key}); - - @override - Widget build(BuildContext context) { - return Selector( - selector: (context, appData) => appData.model.temperature, - builder: temperatureBuilder, - ); - } - - Widget temperatureBuilder(BuildContext context, double temperature, Widget? child) { - return SliderListTile( - labelText: 'Temperature', - inputValue: temperature, - sliderMin: 0.0, - sliderMax: 1.0, - sliderDivisions: 100, - onValueChanged: (value) { - LargeLanguageModel.of(context).temperature = value; - } - ); - } -} diff --git a/lib/ui/mobile/parameter_widgets/tfs_z_parameter.dart b/lib/ui/mobile/parameter_widgets/tfs_z_parameter.dart deleted file mode 100644 index 4cdcd1cd..00000000 --- a/lib/ui/mobile/parameter_widgets/tfs_z_parameter.dart +++ /dev/null @@ -1,30 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:maid/classes/providers/app_data.dart'; -import 'package:maid/classes/providers/large_language_model.dart'; -import 'package:maid/ui/shared/tiles/slider_list_tile.dart'; -import 'package:provider/provider.dart'; - -class TfsZParameter extends StatelessWidget { - const TfsZParameter({super.key}); - - @override - Widget build(BuildContext context) { - return Selector( - selector: (context, appData) => appData.model.tfsZ, - builder: tfsZBuilder, - ); - } - - Widget tfsZBuilder(BuildContext context, double tfsZ, Widget? child) { - return SliderListTile( - labelText: 'TfsZ', - inputValue: tfsZ, - sliderMin: 0.0, - sliderMax: 1.0, - sliderDivisions: 100, - onValueChanged: (value) { - LargeLanguageModel.of(context).tfsZ = value; - } - ); - } -} diff --git a/lib/ui/mobile/parameter_widgets/top_k_parameter.dart b/lib/ui/mobile/parameter_widgets/top_k_parameter.dart deleted file mode 100644 index c32f71c7..00000000 --- a/lib/ui/mobile/parameter_widgets/top_k_parameter.dart +++ /dev/null @@ -1,30 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:maid/classes/providers/app_data.dart'; -import 'package:maid/classes/providers/large_language_model.dart'; -import 'package:maid/ui/shared/tiles/slider_list_tile.dart'; -import 'package:provider/provider.dart'; - -class TopKParameter extends StatelessWidget { - const TopKParameter({super.key}); - - @override - Widget build(BuildContext context) { - return Selector( - selector: (context, appData) => appData.model.topK, - builder: topKBuilder, - ); - } - - Widget topKBuilder(BuildContext context, int topK, Widget? child) { - return SliderListTile( - labelText: 'TopK', - inputValue: topK, - sliderMin: 1.0, - sliderMax: 128.0, - sliderDivisions: 127, - onValueChanged: (value) { - LargeLanguageModel.of(context).topK = value.round(); - } - ); - } -} diff --git a/lib/ui/mobile/parameter_widgets/top_p_parameter.dart b/lib/ui/mobile/parameter_widgets/top_p_parameter.dart deleted file mode 100644 index d1bdbea2..00000000 --- a/lib/ui/mobile/parameter_widgets/top_p_parameter.dart +++ /dev/null @@ -1,30 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:maid/classes/providers/app_data.dart'; -import 'package:maid/classes/providers/large_language_model.dart'; -import 'package:maid/ui/shared/tiles/slider_list_tile.dart'; -import 'package:provider/provider.dart'; - -class TopPParameter extends StatelessWidget { - const TopPParameter({super.key}); - - @override - Widget build(BuildContext context) { - return Selector( - selector: (context, appData) => appData.model.topP, - builder: topPBuilder, - ); - } - - Widget topPBuilder(BuildContext context, double topP, Widget? child) { - return SliderListTile( - labelText: 'TopP', - inputValue: topP, - sliderMin: 0.0, - sliderMax: 1.0, - sliderDivisions: 100, - onValueChanged: (value) { - LargeLanguageModel.of(context).topP = value; - } - ); - } -} diff --git a/lib/ui/mobile/parameter_widgets/typical_p_parameter.dart b/lib/ui/mobile/parameter_widgets/typical_p_parameter.dart deleted file mode 100644 index 6df4f3fa..00000000 --- a/lib/ui/mobile/parameter_widgets/typical_p_parameter.dart +++ /dev/null @@ -1,30 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:maid/classes/providers/app_data.dart'; -import 'package:maid/classes/providers/large_language_model.dart'; -import 'package:maid/ui/shared/tiles/slider_list_tile.dart'; -import 'package:provider/provider.dart'; - -class TypicalPParameter extends StatelessWidget { - const TypicalPParameter({super.key}); - - @override - Widget build(BuildContext context) { - return Selector( - selector: (context, appData) => appData.model.typicalP, - builder: typicalPBuilder, - ); - } - - Widget typicalPBuilder(BuildContext context, double typicalP, Widget? child) { - return SliderListTile( - labelText: 'TypicalP', - inputValue: typicalP, - sliderMin: 0.0, - sliderMax: 1.0, - sliderDivisions: 100, - onValueChanged: (value) { - LargeLanguageModel.of(context).typicalP = value; - } - ); - } -} diff --git a/lib/ui/mobile/parameter_widgets/use_default.dart b/lib/ui/mobile/parameter_widgets/use_default.dart deleted file mode 100644 index ddde2149..00000000 --- a/lib/ui/mobile/parameter_widgets/use_default.dart +++ /dev/null @@ -1,26 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:maid/classes/providers/app_data.dart'; -import 'package:maid/classes/providers/large_language_model.dart'; -import 'package:provider/provider.dart'; - -class UseDefaultParameter extends StatelessWidget { - const UseDefaultParameter({super.key}); - - @override - Widget build(BuildContext context) { - return Selector( - selector: (context, appData) => appData.model.useDefault, - builder: buildSwitchContainer - ); - } - - Widget buildSwitchContainer(BuildContext context, bool useDefault, Widget? child) { - return SwitchListTile( - title: const Text('Use Default Parameters'), - value: useDefault, - onChanged: (value) { - LargeLanguageModel.of(context).useDefault = value; - }, - ); - } -} diff --git a/lib/ui/mobile/utilities/model_parameters.dart b/lib/ui/mobile/utilities/model_parameters.dart new file mode 100644 index 00000000..399b9140 --- /dev/null +++ b/lib/ui/mobile/utilities/model_parameters.dart @@ -0,0 +1,378 @@ +import 'dart:io'; + +import 'package:flutter/material.dart'; +import 'package:maid/classes/providers/app_data.dart'; +import 'package:maid/classes/providers/large_language_model.dart'; +import 'package:maid/enumerators/large_language_model_type.dart'; +import 'package:maid/ui/shared/tiles/slider_list_tile.dart'; +import 'package:provider/provider.dart'; + +class ModelParameters extends StatelessWidget { + final List children; + final bool mirostatEta; + final bool mirostat; + final bool mirostatTau; + final bool nBatch; + final bool nCtx; + final bool nKeep; + final bool nPredict; + final bool nThreads; + final bool newlinePenalty; + final bool presencePenalty; + final bool repetitionPenalty; + final bool frequencyPenalty; + final bool lastNPenalty; + final bool temperature; + final bool tfsZ; + final bool topK; + final bool topP; + final bool minP; + final bool typicalP; + + const ModelParameters({ + super.key, + required this.children, + this.mirostatEta = false, + this.mirostat = false, + this.mirostatTau = false, + this.nBatch = false, + this.nCtx = false, + this.nKeep = false, + this.nPredict = false, + this.nThreads = false, + this.newlinePenalty = false, + this.presencePenalty = false, + this.repetitionPenalty = false, + this.frequencyPenalty = false, + this.lastNPenalty = false, + this.temperature = false, + this.tfsZ = false, + this.topK = false, + this.topP = false, + this.minP = false, + this.typicalP = false + }); + + @override + Widget build(BuildContext context) { + return Selector( + selector: (context, appData) => appData.model, + builder: buildListView + ); + } + + Widget buildListView(BuildContext context, LargeLanguageModel model, Widget? child) { + List widgets = children; + + widgets.add( + SwitchListTile( + title: const Text('Use Default Parameters'), + value: model.useDefault, + onChanged: (value) { + LargeLanguageModel.of(context).useDefault = value; + }, + ) + ); + + if (model.useDefault) { + return ListView( + children: widgets, + ); + } + + if (frequencyPenalty) { + widgets.add( + SliderListTile( + labelText: 'Frequency Penalty', + inputValue: model.penaltyFreq, + sliderMin: 0.0, + sliderMax: 1.0, + sliderDivisions: 100, + onValueChanged: (value) { + LargeLanguageModel.of(context).penaltyFreq = value; + } + ) + ); + } + + if (lastNPenalty) { + widgets.add( + SliderListTile( + labelText: 'Last N Penalty', + inputValue: model.penaltyLastN, + sliderMin: 0.0, + sliderMax: 128.0, + sliderDivisions: 127, + onValueChanged: (value) { + LargeLanguageModel.of(context).penaltyLastN = value.round(); + } + ) + ); + } + + if (mirostatEta) { + widgets.add( + SliderListTile( + labelText: 'Mirostat Eta', + inputValue: model.mirostatEta, + sliderMin: 0.0, + sliderMax: 1.0, + sliderDivisions: 100, + onValueChanged: (value) { + LargeLanguageModel.of(context).mirostatEta = value; + } + ) + ); + } + + if (mirostat) { + widgets.add( + SliderListTile( + labelText: 'Mirostat', + inputValue: model.mirostat, + sliderMin: 0.0, + sliderMax: 128.0, + sliderDivisions: 127, + onValueChanged: (value) { + LargeLanguageModel.of(context).mirostat = value.round(); + } + ) + ); + } + + if (mirostatTau) { + widgets.add( + SliderListTile( + labelText: 'Mirostat Tau', + inputValue: model.mirostatTau, + sliderMin: 0.0, + sliderMax: 10.0, + sliderDivisions: 100, + onValueChanged: (value) { + LargeLanguageModel.of(context).mirostatTau = value; + } + ) + ); + } + + if (nBatch) { + widgets.add( + SliderListTile( + labelText: 'Batch Size', + inputValue: model.nBatch, + sliderMin: 1.0, + sliderMax: 4096.0, + sliderDivisions: 4095, + onValueChanged: (value) { + LargeLanguageModel.of(context).nBatch = value.round(); + } + ) + ); + } + + if (nCtx) { + widgets.add( + SliderListTile( + labelText: 'Context Size', + inputValue: model.nCtx, + sliderMin: 1.0, + sliderMax: 4096.0, + sliderDivisions: 4095, + onValueChanged: (value) { + LargeLanguageModel.of(context).nCtx = value.round(); + } + ) + ); + } + + if (nKeep) { + widgets.add( + SliderListTile( + labelText: 'Keep Length', + inputValue: model.nKeep, + sliderMin: 1.0, + sliderMax: 1024.0, + sliderDivisions: 1023, + onValueChanged: (value) { + LargeLanguageModel.of(context).nKeep = value.round(); + } + ) + ); + } + + if (nPredict) { + widgets.add( + SliderListTile( + labelText: 'Predict Length', + inputValue: model.nPredict, + sliderMin: 1.0, + sliderMax: 4096.0, + sliderDivisions: 4095, + onValueChanged: (value) { + LargeLanguageModel.of(context).nPredict = value.round(); + } + ) + ); + } + + if (nThreads) { + final max = model.type == LargeLanguageModelType.llamacpp + ? Platform.numberOfProcessors.toDouble() + : 128.0; + + widgets.add( + SliderListTile( + labelText: 'NThreads', + inputValue: model.nThread, + sliderMin: 1.0, + sliderMax: max, + sliderDivisions: max.round() - 1, + onValueChanged: (value) { + if (value.round() > Platform.numberOfProcessors) { + LargeLanguageModel.of(context).nThread = Platform.numberOfProcessors; + } + else { + LargeLanguageModel.of(context).nThread = value.round(); + } + } + ) + ); + } + + if (newlinePenalty) { + widgets.add( + SwitchListTile( + title: const Text('Penalize New Line'), + value: model.penalizeNewline, + onChanged: (value) { + LargeLanguageModel.of(context).penalizeNewline = value; + }, + ) + ); + } + + if (presencePenalty) { + widgets.add( + SliderListTile( + labelText: 'Presence Penalty', + inputValue: model.penaltyPresent, + sliderMin: 0.0, + sliderMax: 1.0, + sliderDivisions: 100, + onValueChanged: (value) { + LargeLanguageModel.of(context).penaltyPresent = value; + } + ) + ); + } + + if (repetitionPenalty) { + widgets.add( + SliderListTile( + labelText: 'Repetition Penalty', + inputValue: model.penaltyRepeat, + sliderMin: 0.0, + sliderMax: 2.0, + sliderDivisions: 200, + onValueChanged: (value) { + LargeLanguageModel.of(context).penaltyRepeat = value; + } + ) + ); + } + + if (temperature) { + widgets.add( + SliderListTile( + labelText: 'Temperature', + inputValue: model.temperature, + sliderMin: 0.0, + sliderMax: 1.0, + sliderDivisions: 100, + onValueChanged: (value) { + LargeLanguageModel.of(context).temperature = value; + } + ) + ); + } + + if (tfsZ) { + widgets.add( + SliderListTile( + labelText: 'TFS Z', + inputValue: model.tfsZ, + sliderMin: 0.0, + sliderMax: 1.0, + sliderDivisions: 100, + onValueChanged: (value) { + LargeLanguageModel.of(context).tfsZ = value; + } + ) + ); + } + + if (topK) { + widgets.add( + SliderListTile( + labelText: 'Top K', + inputValue: model.topK, + sliderMin: 1.0, + sliderMax: 128.0, + sliderDivisions: 127, + onValueChanged: (value) { + LargeLanguageModel.of(context).topK = value.round(); + } + ) + ); + } + + if (topP) { + widgets.add( + SliderListTile( + labelText: 'Top P', + inputValue: model.topP, + sliderMin: 0.0, + sliderMax: 1.0, + sliderDivisions: 100, + onValueChanged: (value) { + LargeLanguageModel.of(context).topP = value; + } + ) + ); + } + + if (minP) { + widgets.add( + SliderListTile( + labelText: 'Min P', + inputValue: model.minP, + sliderMin: 0.0, + sliderMax: 1.0, + sliderDivisions: 100, + onValueChanged: (value) { + LargeLanguageModel.of(context).minP = value; + } + ) + ); + } + + if (typicalP) { + widgets.add( + SliderListTile( + labelText: 'Typical P', + inputValue: model.typicalP, + sliderMin: 0.0, + sliderMax: 1.0, + sliderDivisions: 100, + onValueChanged: (value) { + LargeLanguageModel.of(context).typicalP = value; + } + ) + ); + } + + return ListView( + children: widgets, + ); + } +} \ No newline at end of file