Bavarder/src/widgets/model_item.py

97 lines
4.0 KiB
Python

import unicodedata
import re
from typing import List, Dict
from gi.repository import Gtk, Adw, GLib
from bavarder.constants import app_id, rootdir
@Gtk.Template(resource_path=f"{rootdir}/ui/model_item.ui")
class Model(Adw.ExpanderRow):
__gtype_name__ = "Model"
max_tokens = Gtk.Template.Child("max-tokens")
max_tokens_adjustment = Gtk.Template.Child("max-tokens-adjustment")
temperature = Gtk.Template.Child("temperature")
temperature_adjustment = Gtk.Template.Child("temperature-adjustment")
top_p = Gtk.Template.Child("top-p")
top_p_adjustment = Gtk.Template.Child("top-p-adjustment")
top_k = Gtk.Template.Child("top-k")
top_k_adjustment = Gtk.Template.Child("top-k-adjustment")
repetition_penalty = Gtk.Template.Child("repetition-penalty")
repetition_penalty_adjustment = Gtk.Template.Child("repetition-penalty-adjustment")
n_batch = Gtk.Template.Child("n-batch")
n_batch_adjustment = Gtk.Template.Child("n-batch-adjustment")
repeat_last_n = Gtk.Template.Child("repeat-last-n")
repeat_last_n_adjustment = Gtk.Template.Child("repeat-last-n-adjustment")
system_prompt = Gtk.Template.Child("system-prompt")
def __init__(self, app, window, model, **kwargs):
super().__init__(**kwargs)
self.app = app
self.window = window
self.model = model
self.max_tokens_adjustment.set_value(self.app.model_settings.get("max_tokens", 200))
self.temperature_adjustment.set_value(self.app.model_settings.get("temperature", 0.7))
self.top_p_adjustment.set_value(self.app.model_settings.get("top_p", 0.4))
self.top_k_adjustment.set_value(self.app.model_settings.get("top_k", 40))
self.repetition_penalty_adjustment.set_value(self.app.model_settings.get("repetition_penalty", 1.18))
self.n_batch_adjustment.set_value(self.app.model_settings.get("n_batch", 8))
self.repeat_last_n_adjustment.set_value(self.app.model_settings.get("repeat_last_n", 64))
self.system_prompt.set_text(self.app.model_settings.get("system_template", "A chat between a curious user and an artificial intelligence assistant."))
self.add_row(self.max_tokens)
self.add_row(self.temperature)
self.add_row(self.top_p)
self.add_row(self.top_k)
self.add_row(self.repetition_penalty)
self.add_row(self.n_batch)
self.add_row(self.repeat_last_n)
self.add_row(self.system_prompt)
self.setup()
def setup(self):
self.set_title(self.model)
self.app.win.load_model_selector()
@Gtk.Template.Callback()
def on_delete_button_clicked(self, widget, *args):
self.app.delete_model(self.model)
self.window.load_models()
toast = Adw.Toast()
toast.set_title(_("Model %s deleted!" % self.model) )
self.window.add_toast(toast)
@Gtk.Template.Callback()
def on_max_tokens_changed(self, widget, *args):
self.app.model_settings["max_tokens"] = widget.get_value()
@Gtk.Template.Callback()
def on_temperature_changed(self, widget, *args):
self.app.model_settings["temperature"] = widget.get_value()
@Gtk.Template.Callback()
def on_top_p_changed(self, widget, *args):
self.app.model_settings["top_p"] = widget.get_value()
@Gtk.Template.Callback()
def on_top_k_changed(self, widget, *args):
self.app.model_settings["top_k"] = widget.get_value()
@Gtk.Template.Callback()
def on_repetition_penalty_changed(self, widget, *args):
self.app.model_settings["repetition_penalty"] = widget.get_value()
@Gtk.Template.Callback()
def on_n_batch_changed(self, widget, *args):
self.app.model_settings["n_batch"] = widget.get_value()
@Gtk.Template.Callback()
def on_repeat_last_n_changed(self, widget, *args):
self.app.model_settings["repeat_last_n"] = widget.get_value()
@Gtk.Template.Callback()
def on_system_prompt_changed(self, widget, *args):
self.app.model_settings["system_template"] = widget.get_text()