diff --git a/src/alpaca.gresource.xml b/src/alpaca.gresource.xml
index 70ec228..22da8a3 100644
--- a/src/alpaca.gresource.xml
+++ b/src/alpaca.gresource.xml
@@ -21,6 +21,7 @@
icons/view-more-symbolic.svg
icons/document-open-symbolic.svg
icons/list-add-symbolic.svg
+ icons/brain-augemnted-symbolic.svg
window.ui
gtk/help-overlay.ui
diff --git a/src/icons/brain-augemnted-symbolic.svg b/src/icons/brain-augemnted-symbolic.svg
new file mode 100644
index 0000000..b6c6a64
--- /dev/null
+++ b/src/icons/brain-augemnted-symbolic.svg
@@ -0,0 +1,2 @@
+
+
diff --git a/src/local_instance.py b/src/local_instance.py
index 46e8e78..4733204 100644
--- a/src/local_instance.py
+++ b/src/local_instance.py
@@ -5,10 +5,14 @@ from time import sleep
instance = None
port = 11435
data_dir = os.getenv("XDG_DATA_HOME")
+overrides = {}
def start():
- global instance
- instance = subprocess.Popen(["/app/bin/ollama", "serve"], env={**os.environ, 'OLLAMA_HOST': f"127.0.0.1:{port}", "HOME": data_dir}, stderr=subprocess.PIPE, text=True)
+ global instance, overrides
+ params = overrides.copy()
+ params["OLLAMA_HOST"] = f"127.0.0.1:{port}" # You can't change this directly sorry :3
+ params["HOME"] = data_dir
+ instance = subprocess.Popen(["/app/bin/ollama", "serve"], env={**os.environ, **params}, stderr=subprocess.PIPE, text=True)
print("Starting Alpaca's Ollama instance...")
sleep(1)
print("Started Alpaca's Ollama instance")
diff --git a/src/window.py b/src/window.py
index f5f90c4..306aac0 100644
--- a/src/window.py
+++ b/src/window.py
@@ -314,6 +314,16 @@ class AlpacaWindow(Adw.ApplicationWindow):
self.manage_models_dialog.present(self)
thread.start()
+ @Gtk.Template.Callback()
+ def override_changed(self, dropdown, pspec):
+ if str(pspec) != "": return #Great code
+ name = dropdown.get_name()
+ value = dropdown.get_selected_item().get_string() if dropdown.get_selected() != 0 else None
+ if (not value and name not in local_instance.overrides) or (value and value in local_instance.overrides and local_instance.overrides[name] == value): return
+ if not value: del local_instance.overrides[name]
+ if value: local_instance.overrides[name] = value
+ self.save_server_config()
+ if not self.run_remote: local_instance.reset()
def check_alphanumeric(self, editable, text, length, position):
new_text = ''.join([char for char in text if char.isalnum() or char in ['-', '_']])
@@ -490,7 +500,7 @@ class AlpacaWindow(Adw.ApplicationWindow):
def save_server_config(self):
with open(os.path.join(self.config_dir, "server.json"), "w+") as f:
- json.dump({'remote_url': self.remote_url, 'run_remote': self.run_remote, 'local_port': local_instance.port, 'run_on_background': self.run_on_background, 'model_tweaks': self.model_tweaks}, f)
+ json.dump({'remote_url': self.remote_url, 'run_remote': self.run_remote, 'local_port': local_instance.port, 'run_on_background': self.run_on_background, 'model_tweaks': self.model_tweaks, 'ollama_overrides': local_instance.overrides}, f)
def verify_connection(self):
response = connection_handler.simple_get(connection_handler.url)
@@ -1012,6 +1022,8 @@ class AlpacaWindow(Adw.ApplicationWindow):
self.temperature_spin.set_value(self.model_tweaks['temperature'])
self.seed_spin.set_value(self.model_tweaks['seed'])
self.keep_alive_spin.set_value(self.model_tweaks['keep_alive'])
+ #Overrides
+ if "ollama_overrides" in data: local_instance.overrides = data['ollama_overrides']
self.background_switch.set_active(self.run_on_background)
self.set_hide_on_close(self.run_on_background)
diff --git a/src/window.ui b/src/window.ui
index d18ca5f..c715cd4 100644
--- a/src/window.ui
+++ b/src/window.ui
@@ -358,6 +358,44 @@
+
+
+