mirror of
https://github.com/ParisNeo/lollms-webui.git
synced 2025-02-20 17:22:47 +00:00
added backend installation
This commit is contained in:
parent
d2f158876f
commit
8b2a8415f4
@ -1,55 +0,0 @@
|
||||
@echo off
|
||||
setlocal enabledelayedexpansion
|
||||
|
||||
REM Clone the repository to a tmp folder
|
||||
set "REPO_URL=https://github.com/ParisNeo/PyAIPersonality.git"
|
||||
set "TMP_FOLDER=%temp%\PyAIPersonality"
|
||||
git clone %REPO_URL% %TMP_FOLDER%
|
||||
|
||||
REM List the available languages and prompt user to select one
|
||||
set "LANGUAGES_FOLDER=%TMP_FOLDER%\personalities_zoo"
|
||||
set "LANGUAGE_INDEX=0"
|
||||
for /d %%d in ("%LANGUAGES_FOLDER%\*") do (
|
||||
set /a "LANGUAGE_INDEX+=1"
|
||||
set "LANGUAGES[!LANGUAGE_INDEX!]=%%~nxd"
|
||||
echo !LANGUAGE_INDEX!. %%~nxd
|
||||
)
|
||||
set /p "SELECTED_LANGUAGE=Enter the number of the desired language: "
|
||||
set "LANGUAGE_FOLDER=%LANGUAGES_FOLDER%\!LANGUAGES[%SELECTED_LANGUAGE%]!"
|
||||
|
||||
REM List the available categories and prompt user to select one
|
||||
set "CATEGORIES_FOLDER=%LANGUAGE_FOLDER%"
|
||||
set "CATEGORY_INDEX=0"
|
||||
for /d %%d in ("%CATEGORIES_FOLDER%\*") do (
|
||||
set /a "CATEGORY_INDEX+=1"
|
||||
set "CATEGORIES[!CATEGORY_INDEX!]=%%~nxd"
|
||||
echo !CATEGORY_INDEX!. %%~nxd
|
||||
)
|
||||
set /p "SELECTED_CATEGORY=Enter the number of the desired category: "
|
||||
set "CATEGORY_FOLDER=%CATEGORIES_FOLDER%\!CATEGORIES[%SELECTED_CATEGORY%]!"
|
||||
|
||||
REM List the available personalities and prompt user to select one
|
||||
set "PERSONALITIES_FOLDER=%CATEGORY_FOLDER%"
|
||||
set "PERSONALITY_INDEX=0"
|
||||
for /d %%d in ("%PERSONALITIES_FOLDER%\*") do (
|
||||
set /a "PERSONALITY_INDEX+=1"
|
||||
set "PERSONALITIES[!PERSONALITY_INDEX!]=%%~nxd"
|
||||
echo !PERSONALITY_INDEX!. %%~nxd
|
||||
)
|
||||
set /p "SELECTED_PERSONALITY=Enter the number of the desired personality: "
|
||||
set "PERSONALITY_FOLDER=%PERSONALITIES_FOLDER%\!PERSONALITIES[%SELECTED_PERSONALITY%]!"
|
||||
|
||||
REM Copy the selected personality folder to personalities/language/category folder
|
||||
set "OUTPUT_FOLDER=%CD%\personalities\!LANGUAGES[%SELECTED_LANGUAGE%]!\!CATEGORIES[%SELECTED_CATEGORY%]!\!PERSONALITIES[%SELECTED_PERSONALITY%]!"
|
||||
if not exist "%OUTPUT_FOLDER%" mkdir "%OUTPUT_FOLDER%"
|
||||
xcopy /e /y "%PERSONALITY_FOLDER%" "%OUTPUT_FOLDER%"
|
||||
|
||||
REM cleaning
|
||||
if exist "./tmp" (
|
||||
echo Cleaning tmp folder
|
||||
rd /s /q "./tmp"
|
||||
)
|
||||
REM Remove the tmp folder
|
||||
rd /s /q "%TMP_FOLDER%"
|
||||
echo Done
|
||||
pause
|
3
installations/add_backend.bat
Normal file
3
installations/add_backend.bat
Normal file
@ -0,0 +1,3 @@
|
||||
call ../env/Scripts/activate.bat
|
||||
python install_backend.py %*
|
||||
pause
|
1
installations/backendlist.yaml
Normal file
1
installations/backendlist.yaml
Normal file
@ -0,0 +1 @@
|
||||
GPT4All_GPTJ_backend : https://github.com/ParisNeo/GPT4All_GPTJ_backend
|
60
installations/install_backend.py
Normal file
60
installations/install_backend.py
Normal file
@ -0,0 +1,60 @@
|
||||
import argparse
|
||||
import subprocess
|
||||
import shutil
|
||||
import yaml
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def install_backend(backend_name):
|
||||
# Load the list of available backends from backendlist.yaml
|
||||
with open('backendlist.yaml', 'r') as f:
|
||||
backend_list = yaml.safe_load(f)
|
||||
|
||||
# Get the Github repository URL for the selected backend
|
||||
try:
|
||||
backend_url = backend_list[backend_name]
|
||||
except KeyError:
|
||||
print(f"Backend '{backend_name}' not found in backendlist.yaml")
|
||||
return
|
||||
|
||||
# Clone the Github repository to a tmp folder
|
||||
tmp_folder = Path('tmp')
|
||||
if tmp_folder.exists():
|
||||
shutil.rmtree(tmp_folder)
|
||||
subprocess.run(['git', 'clone', backend_url, tmp_folder])
|
||||
|
||||
# Install the requirements.txt from the cloned project
|
||||
requirements_file = tmp_folder / 'requirements.txt'
|
||||
subprocess.run(['pip', 'install', '-r', str(requirements_file)])
|
||||
|
||||
# Copy the folder found inside the binding to ../backends
|
||||
folders = [f for f in tmp_folder.iterdir() if f.is_dir() and not f.stem.startswith(".")]
|
||||
src_folder = folders[0]
|
||||
dst_folder = Path('../backends') / src_folder.stem
|
||||
print(f"coipying from {src_folder} to {dst_folder}")
|
||||
# Delete the destination directory if it already exists
|
||||
if dst_folder.exists():
|
||||
shutil.rmtree(dst_folder)
|
||||
|
||||
shutil.copytree(src_folder, dst_folder)
|
||||
|
||||
# Create an empty folder in ../models with the same name
|
||||
models_folder = Path('../models')
|
||||
models_folder.mkdir(exist_ok=True)
|
||||
(models_folder / backend_name).mkdir(exist_ok=True, parents=True)
|
||||
if tmp_folder.exists():
|
||||
shutil.rmtree(tmp_folder)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# Load the list of available backends from backendlist.yaml
|
||||
with open('backendlist.yaml', 'r') as f:
|
||||
backend_list = yaml.safe_load(f)
|
||||
|
||||
# Print the list of available backends and prompt the user to select one
|
||||
print("Available backends:")
|
||||
for backend_id, backend_name in enumerate(backend_list):
|
||||
print(f" {backend_id} - {backend_name}")
|
||||
backend_id = int(input("Select a backend to install: "))
|
||||
|
||||
install_backend(list(backend_list.keys())[backend_id])
|
Loading…
x
Reference in New Issue
Block a user