Skip to content

Commit

Permalink
refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
danemadsen committed Aug 3, 2024
1 parent bd656eb commit da5523d
Show file tree
Hide file tree
Showing 25 changed files with 501 additions and 470 deletions.
50 changes: 26 additions & 24 deletions lib/ui/mobile/pages/model_settings/google_gemini_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import 'dart:convert';

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/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';
Expand All @@ -20,33 +21,34 @@ class GoogleGeminiPage extends StatelessWidget {
return Scaffold(
appBar: const ModelSettingsAppBar(title: "Google Gemini Parameters"),
body: SessionBusyOverlay(
child: Consumer<AppData>(
builder: (context, appData, child) {
final session = appData.currentSession;
child: Selector<AppData, LargeLanguageModel>(
selector: (context, appData) => appData.model,
builder: listViewBuilder
),
)
);
}

SharedPreferences.getInstance().then((prefs) {
prefs.setString("google_gemini_model", json.encode(session.model.toMap()));
});
Widget listViewBuilder(BuildContext context, LargeLanguageModel model, Widget? child) {
SharedPreferences.getInstance().then((prefs) {
prefs.setString("google_gemini_model", json.encode(model.toMap()));
});

return ListView(
children: [
const ApiKeyParameter(),
Divider(
height: 20,
indent: 10,
endIndent: 10,
color: Theme.of(context).colorScheme.primary,
),
const SizedBox(height: 20.0),
const NPredictParameter(),
const TopPParameter(),
const TopKParameter(),
const TemperatureParameter(),
]
);
},
return ListView(
children: [
const ApiKeyParameter(),
Divider(
height: 20,
indent: 10,
endIndent: 10,
color: Theme.of(context).colorScheme.primary,
),
)
const SizedBox(height: 20.0),
const NPredictParameter(),
const TopPParameter(),
const TopKParameter(),
const TemperatureParameter(),
]
);
}
}
52 changes: 27 additions & 25 deletions lib/ui/mobile/pages/model_settings/mistral_ai_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import 'dart:convert';

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/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';
Expand All @@ -20,33 +21,34 @@ class MistralAiPage extends StatelessWidget {
return Scaffold(
appBar: const ModelSettingsAppBar(title: "MistralAI Parameters"),
body: SessionBusyOverlay(
child: Consumer<AppData>(
builder: (context, appData, child) {
final session = appData.currentSession;

SharedPreferences.getInstance().then((prefs) {
prefs.setString("mistral_ai_model", json.encode(session.model.toMap()));
});

return ListView(
children: [
const ApiKeyParameter(),
Divider(
height: 20,
indent: 10,
endIndent: 10,
color: Theme.of(context).colorScheme.primary,
),
const UrlParameter(),
const SizedBox(height: 20.0),
const SeedParameter(),
const TopPParameter(),
const TemperatureParameter(),
]
);
},
child: Selector<AppData, LargeLanguageModel>(
selector: (context, appData) => appData.model,
builder: listViewBuilder,
),
)
);
}

Widget listViewBuilder(BuildContext context, LargeLanguageModel model, Widget? child) {
SharedPreferences.getInstance().then((prefs) {
prefs.setString("mistral_ai_model", json.encode(model.toMap()));
});

return ListView(
children: [
const ApiKeyParameter(),
Divider(
height: 20,
indent: 10,
endIndent: 10,
color: Theme.of(context).colorScheme.primary,
),
const UrlParameter(),
const SizedBox(height: 20.0),
const SeedParameter(),
const TopPParameter(),
const TemperatureParameter(),
]
);
}
}
104 changes: 53 additions & 51 deletions lib/ui/mobile/pages/model_settings/ollama_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import 'dart:convert';

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/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';
Expand Down Expand Up @@ -37,59 +38,60 @@ class OllamaPage extends StatelessWidget {
return Scaffold(
appBar: const ModelSettingsAppBar(title: "Ollama Parameters"),
body: SessionBusyOverlay(
child: Consumer<AppData>(
builder: (context, appData, child) {
final session = appData.currentSession;

SharedPreferences.getInstance().then((prefs) {
prefs.setString("ollama_model", json.encode(session.model.toMap()));
});

return ListView(
children: [
const ApiKeyParameter(),
Divider(
height: 20,
indent: 10,
endIndent: 10,
color: Theme.of(context).colorScheme.primary,
),
const UrlParameter(),
const SizedBox(height: 8.0),
const SeedParameter(),
const UseDefaultParameter(),
if (!session.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()
]
]
);
},
child: Selector<AppData, LargeLanguageModel>(
selector: (context, appData) => appData.model,
builder: listViewBuilder
)
)
);
}

Widget listViewBuilder(BuildContext context, LargeLanguageModel model, Widget? child) {
SharedPreferences.getInstance().then((prefs) {
prefs.setString("ollama_model", json.encode(model.toMap()));
});

return ListView(
children: [
const ApiKeyParameter(),
Divider(
height: 20,
indent: 10,
endIndent: 10,
color: Theme.of(context).colorScheme.primary,
),
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()
]
]
);
}
}
58 changes: 30 additions & 28 deletions lib/ui/mobile/pages/model_settings/open_ai_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import 'dart:convert';

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/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';
Expand All @@ -23,36 +24,37 @@ class OpenAiPage extends StatelessWidget {
return Scaffold(
appBar: const ModelSettingsAppBar(title: "OpenAI Parameters"),
body: SessionBusyOverlay(
child: Consumer<AppData>(
builder: (context, appData, child) {
final session = appData.currentSession;

SharedPreferences.getInstance().then((prefs) {
prefs.setString("open_ai_model", json.encode(session.model.toMap()));
});

return ListView(
children: [
const ApiKeyParameter(),
Divider(
height: 20,
indent: 10,
endIndent: 10,
color: Theme.of(context).colorScheme.primary,
),
const UrlParameter(),
const SizedBox(height: 20.0),
const SeedParameter(),
const TemperatureParameter(),
const FrequencyPenaltyParameter(),
const PresentPenaltyParameter(),
const NPredictParameter(),
const TopPParameter()
]
);
},
child: Selector<AppData, LargeLanguageModel>(
selector: (context, appData) => appData.model,
builder: listViewBuilder,
),
)
);
}

Widget listViewBuilder(BuildContext context, LargeLanguageModel model, Widget? child) {
SharedPreferences.getInstance().then((prefs) {
prefs.setString("open_ai_model", json.encode(model.toMap()));
});

return ListView(
children: [
const ApiKeyParameter(),
Divider(
height: 20,
indent: 10,
endIndent: 10,
color: Theme.of(context).colorScheme.primary,
),
const UrlParameter(),
const SizedBox(height: 20.0),
const SeedParameter(),
const TemperatureParameter(),
const FrequencyPenaltyParameter(),
const PresentPenaltyParameter(),
const NPredictParameter(),
const TopPParameter()
]
);
}
}
31 changes: 16 additions & 15 deletions lib/ui/mobile/parameter_widgets/frequency_penalty_parameter.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
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';

Expand All @@ -8,21 +9,21 @@ class FrequencyPenaltyParameter extends StatelessWidget {

@override
Widget build(BuildContext context) {
return Consumer<AppData>(
builder: (context, appData, child) {
final session = appData.currentSession;
return SliderListTile(
labelText: 'Frequency Penalty',
inputValue: session.model.penaltyFreq,
sliderMin: 0.0,
sliderMax: 1.0,
sliderDivisions: 100,
onValueChanged: (value) {
session.model.penaltyFreq = value;
session.notify();
}
);
return Selector<AppData, double>(
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;
}
);
}
Expand Down
Loading

0 comments on commit da5523d

Please sign in to comment.