2024-05-25 23:03:26 -06:00
|
|
|
# local_instance.py
|
2024-05-28 11:24:50 -06:00
|
|
|
import subprocess, os, threading
|
2024-05-25 23:03:26 -06:00
|
|
|
from time import sleep
|
2024-07-17 21:49:55 -05:00
|
|
|
from logging import getLogger
|
2024-08-04 04:07:14 +08:00
|
|
|
from .internal import data_dir, cache_dir
|
2024-07-17 21:49:55 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
logger = getLogger(__name__)
|
2024-05-25 23:03:26 -06:00
|
|
|
|
|
|
|
|
instance = None
|
|
|
|
|
port = 11435
|
2024-06-03 16:31:03 -06:00
|
|
|
overrides = {}
|
2024-05-25 23:03:26 -06:00
|
|
|
|
2024-05-28 11:24:50 -06:00
|
|
|
def start():
|
2024-08-04 04:07:14 +08:00
|
|
|
if not os.path.isdir(os.path.join(cache_dir, 'tmp/ollama')):
|
|
|
|
|
os.mkdir(os.path.join(cache_dir, 'tmp/ollama'))
|
2024-06-03 16:31:03 -06:00
|
|
|
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
|
2024-08-04 04:07:14 +08:00
|
|
|
params["TMPDIR"] = os.path.join(cache_dir, 'tmp/ollama')
|
|
|
|
|
instance = subprocess.Popen(["ollama", "serve"], env={**os.environ, **params}, stderr=subprocess.PIPE, text=True)
|
2024-07-17 21:49:55 -05:00
|
|
|
logger.info("Starting Alpaca's Ollama instance...")
|
|
|
|
|
logger.debug(params)
|
2024-05-25 23:03:26 -06:00
|
|
|
sleep(1)
|
2024-07-17 21:49:55 -05:00
|
|
|
logger.info("Started Alpaca's Ollama instance")
|
2024-05-25 23:03:26 -06:00
|
|
|
|
|
|
|
|
def stop():
|
2024-07-17 21:49:55 -05:00
|
|
|
logger.info("Stopping Alpaca's Ollama instance")
|
2024-05-30 19:15:19 -06:00
|
|
|
global instance
|
|
|
|
|
if instance:
|
2024-07-03 17:12:31 -06:00
|
|
|
instance.terminate()
|
2024-05-30 19:15:19 -06:00
|
|
|
instance.wait()
|
|
|
|
|
instance = None
|
2024-07-17 21:49:55 -05:00
|
|
|
logger.info("Stopped Alpaca's Ollama instance")
|
2024-05-25 23:03:26 -06:00
|
|
|
|
2024-05-28 11:24:50 -06:00
|
|
|
def reset():
|
2024-07-17 21:49:55 -05:00
|
|
|
logger.info("Resetting Alpaca's Ollama instance")
|
2024-05-28 10:29:22 -06:00
|
|
|
stop()
|
|
|
|
|
sleep(1)
|
2024-05-28 11:24:50 -06:00
|
|
|
start()
|
|
|
|
|
|