Fixed local instance
This commit is contained in:
parent
19cc97a1c4
commit
257197d4d8
@ -1,27 +1,23 @@
|
|||||||
# local_instance.py
|
# local_instance.py
|
||||||
import subprocess, os
|
import subprocess, os, threading
|
||||||
from time import sleep
|
from time import sleep
|
||||||
|
|
||||||
instance = None
|
instance = None
|
||||||
port = 11435
|
port = 11435
|
||||||
|
data_dir = os.getenv("XDG_DATA_HOME")
|
||||||
|
|
||||||
def start(data_dir):
|
def start():
|
||||||
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)
|
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)
|
||||||
print("Starting Alpaca's Ollama instance...")
|
print("Starting Alpaca's Ollama instance...")
|
||||||
sleep(1)
|
sleep(1)
|
||||||
while True:
|
|
||||||
err = instance.stderr.readline()
|
|
||||||
if err == '' and instance.poll() is not None:
|
|
||||||
break
|
|
||||||
if 'msg="inference compute"' in err: #Ollama outputs a line with this when it finishes loading, yeah
|
|
||||||
break
|
|
||||||
print("Started Alpaca's Ollama instance")
|
print("Started Alpaca's Ollama instance")
|
||||||
|
|
||||||
def stop():
|
def stop():
|
||||||
if instance: instance.kill()
|
if instance: instance.kill()
|
||||||
print("Stopped Alpaca's Ollama instance")
|
print("Stopped Alpaca's Ollama instance")
|
||||||
|
|
||||||
def reset(data_dir):
|
def reset():
|
||||||
stop()
|
stop()
|
||||||
sleep(1)
|
sleep(1)
|
||||||
start(data_dir)
|
start()
|
||||||
|
|
||||||
|
@ -32,7 +32,6 @@ from . import dialogs, local_instance, connection_handler
|
|||||||
@Gtk.Template(resource_path='/com/jeffser/Alpaca/window.ui')
|
@Gtk.Template(resource_path='/com/jeffser/Alpaca/window.ui')
|
||||||
class AlpacaWindow(Adw.ApplicationWindow):
|
class AlpacaWindow(Adw.ApplicationWindow):
|
||||||
config_dir = os.getenv("XDG_CONFIG_HOME")
|
config_dir = os.getenv("XDG_CONFIG_HOME")
|
||||||
data_dir = os.getenv("XDG_DATA_HOME")
|
|
||||||
app_dir = os.getenv("FLATPAK_DEST")
|
app_dir = os.getenv("FLATPAK_DEST")
|
||||||
|
|
||||||
__gtype_name__ = 'AlpacaWindow'
|
__gtype_name__ = 'AlpacaWindow'
|
||||||
@ -249,6 +248,13 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
|||||||
action_row.set_sensitive(False)
|
action_row.set_sensitive(False)
|
||||||
self.pull_model(model)
|
self.pull_model(model)
|
||||||
|
|
||||||
|
@Gtk.Template.Callback()
|
||||||
|
def closing_app(self, user_data):
|
||||||
|
if self.get_hide_on_close():
|
||||||
|
print("Hiding app...")
|
||||||
|
else:
|
||||||
|
print("Closing app...")
|
||||||
|
local_instance.stop()
|
||||||
|
|
||||||
def show_toast(self, message_type:str, message_id:int, overlay):
|
def show_toast(self, message_type:str, message_id:int, overlay):
|
||||||
if message_type not in self.toast_messages or message_id > len(self.toast_messages[message_type] or message_id < 0):
|
if message_type not in self.toast_messages or message_id > len(self.toast_messages[message_type] or message_id < 0):
|
||||||
@ -779,7 +785,7 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
|||||||
def connect_local(self):
|
def connect_local(self):
|
||||||
self.run_remote = False
|
self.run_remote = False
|
||||||
connection_handler.url = f"http://127.0.0.1:{local_instance.port}"
|
connection_handler.url = f"http://127.0.0.1:{local_instance.port}"
|
||||||
local_instance.start(self.data_dir)
|
local_instance.start()
|
||||||
if self.verify_connection() == False: self.connection_error()
|
if self.verify_connection() == False: self.connection_error()
|
||||||
else: self.remote_connection_switch.set_active(False)
|
else: self.remote_connection_switch.set_active(False)
|
||||||
|
|
||||||
@ -787,7 +793,7 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
|||||||
if self.run_remote:
|
if self.run_remote:
|
||||||
dialogs.reconnect_remote(self, connection_handler.url)
|
dialogs.reconnect_remote(self, connection_handler.url)
|
||||||
else:
|
else:
|
||||||
local_instance.reset(self.data_dir)
|
local_instance.reset()
|
||||||
self.show_toast("error", 7, self.main_overlay)
|
self.show_toast("error", 7, self.main_overlay)
|
||||||
|
|
||||||
def connection_switched(self):
|
def connection_switched(self):
|
||||||
@ -800,7 +806,7 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
|||||||
else: local_instance.stop()
|
else: local_instance.stop()
|
||||||
else:
|
else:
|
||||||
connection_handler.url = f"http://127.0.0.1:{local_instance.port}"
|
connection_handler.url = f"http://127.0.0.1:{local_instance.port}"
|
||||||
local_instance.start(self.data_dir)
|
local_instance.start()
|
||||||
if self.verify_connection() == False: self.connection_error()
|
if self.verify_connection() == False: self.connection_error()
|
||||||
self.update_list_available_models()
|
self.update_list_available_models()
|
||||||
|
|
||||||
@ -877,9 +883,9 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
|||||||
else:
|
else:
|
||||||
self.remote_connection_switch.set_active(False)
|
self.remote_connection_switch.set_active(False)
|
||||||
connection_handler.url = f"http://127.0.0.1:{local_instance.port}"
|
connection_handler.url = f"http://127.0.0.1:{local_instance.port}"
|
||||||
local_instance.start(self.data_dir)
|
local_instance.start()
|
||||||
else:
|
else:
|
||||||
local_instance.start(self.data_dir)
|
local_instance.start()
|
||||||
connection_handler.url = f"http://127.0.0.1:{local_instance.port}"
|
connection_handler.url = f"http://127.0.0.1:{local_instance.port}"
|
||||||
self.welcome_dialog.present(self)
|
self.welcome_dialog.present(self)
|
||||||
if self.verify_connection() is False and self.run_remote == False: self.connection_error()
|
if self.verify_connection() is False and self.run_remote == False: self.connection_error()
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
<requires lib="gtk" version="4.0"/>
|
<requires lib="gtk" version="4.0"/>
|
||||||
<requires lib="Adw" version="1.0"/>
|
<requires lib="Adw" version="1.0"/>
|
||||||
<template class="AlpacaWindow" parent="AdwApplicationWindow">
|
<template class="AlpacaWindow" parent="AdwApplicationWindow">
|
||||||
|
<signal name="close-request" handler="closing_app"/>
|
||||||
<property name="resizable">True</property>
|
<property name="resizable">True</property>
|
||||||
<property name="width-request">360</property>
|
<property name="width-request">360</property>
|
||||||
<property name="height-request">700</property>
|
<property name="height-request">700</property>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user