mirror of
https://github.com/ParisNeo/lollms-webui.git
synced 2024-12-18 20:17:50 +00:00
Added personalities manipulation tools
This commit is contained in:
parent
0f8ae835da
commit
4dd666e54c
2
.github/workflows/docker.yaml
vendored
2
.github/workflows/docker.yaml
vendored
@ -18,7 +18,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
push: false
|
push: false
|
||||||
tags: gpt4all-ui:latest
|
tags: lollms-webui:latest
|
||||||
|
|
||||||
lint:
|
lint:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
2
.github/workflows/rsync.yml
vendored
2
.github/workflows/rsync.yml
vendored
@ -24,7 +24,7 @@ jobs:
|
|||||||
id: sync
|
id: sync
|
||||||
uses: aormsby/Fork-Sync-With-Upstream-action@v3.4
|
uses: aormsby/Fork-Sync-With-Upstream-action@v3.4
|
||||||
with:
|
with:
|
||||||
upstream_sync_repo: ParisNeo/Gpt4All-ui
|
upstream_sync_repo: ParisNeo/lollms-webui
|
||||||
upstream_sync_branch: main
|
upstream_sync_branch: main
|
||||||
target_sync_branch: main
|
target_sync_branch: main
|
||||||
target_repo_token: ${{ secrets.GITHUB_TOKEN }} # automatically generated, no need to set
|
target_repo_token: ${{ secrets.GITHUB_TOKEN }} # automatically generated, no need to set
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Contributing to GPT4All-ui
|
# Contributing to lollms-webui
|
||||||
|
|
||||||
Thank you for your interest in contributing to [Your Repository Name]! We appreciate your efforts to help make our project better.
|
Thank you for your interest in contributing to [Your Repository Name]! We appreciate your efforts to help make our project better.
|
||||||
|
|
||||||
@ -30,4 +30,4 @@ To submit a contribution, please follow these steps:
|
|||||||
|
|
||||||
Once your pull request is approved, your changes will be merged into the main repository.
|
Once your pull request is approved, your changes will be merged into the main repository.
|
||||||
|
|
||||||
Thank you for your contributions to GPT4All-ui!
|
Thank you for your contributions to lollms-webui!
|
||||||
|
14
README.md
14
README.md
@ -1,9 +1,9 @@
|
|||||||
# Gpt4All Web UI
|
# Gpt4All Web UI
|
||||||
|
|
||||||
![GitHub license](https://img.shields.io/github/license/nomic-ai/GPT4All-ui)
|
![GitHub license](https://img.shields.io/github/license/nomic-ai/lollms-webui)
|
||||||
![GitHub issues](https://img.shields.io/github/issues/nomic-ai/GPT4All-ui)
|
![GitHub issues](https://img.shields.io/github/issues/nomic-ai/lollms-webui)
|
||||||
![GitHub stars](https://img.shields.io/github/stars/nomic-ai/GPT4All-ui)
|
![GitHub stars](https://img.shields.io/github/stars/nomic-ai/lollms-webui)
|
||||||
![GitHub forks](https://img.shields.io/github/forks/nomic-ai/GPT4All-ui)
|
![GitHub forks](https://img.shields.io/github/forks/nomic-ai/lollms-webui)
|
||||||
[![Discord](https://img.shields.io/discord/1092918764925882418?color=7289da&label=Discord&logo=discord&logoColor=ffffff)](https://discord.gg/4rR282WJb6)
|
[![Discord](https://img.shields.io/discord/1092918764925882418?color=7289da&label=Discord&logo=discord&logoColor=ffffff)](https://discord.gg/4rR282WJb6)
|
||||||
[![Follow me on Twitter](https://img.shields.io/twitter/follow/SpaceNerduino?style=social)](https://twitter.com/SpaceNerduino)
|
[![Follow me on Twitter](https://img.shields.io/twitter/follow/SpaceNerduino?style=social)](https://twitter.com/SpaceNerduino)
|
||||||
[![Follow Me on YouTube](https://img.shields.io/badge/Follow%20Me%20on-YouTube-red?style=flat&logo=youtube)](https://www.youtube.com/user/Parisneo)
|
[![Follow Me on YouTube](https://img.shields.io/badge/Follow%20Me%20on-YouTube-red?style=flat&logo=youtube)](https://www.youtube.com/user/Parisneo)
|
||||||
@ -58,8 +58,8 @@ If you use conda, you can create a virtual environment and install the required
|
|||||||
First clone the project or download the zip file and unzip it:
|
First clone the project or download the zip file and unzip it:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/ParisNeo/gpt4all-ui.git
|
git clone https://github.com/ParisNeo/lollms-webui.git
|
||||||
cd gpt4all-ui
|
cd lollms-webui
|
||||||
```
|
```
|
||||||
Now create a new conda environment, activate it and install requirements
|
Now create a new conda environment, activate it and install requirements
|
||||||
|
|
||||||
@ -100,7 +100,7 @@ Once the app is running, you can go to the application front link displayed in t
|
|||||||
Contributions to GPT4ALL WebUI are welcome! If you encounter any issues, have ideas for improvements, or want to contribute code, please open an issue or submit a pull request on the GitHub repository.
|
Contributions to GPT4ALL WebUI are welcome! If you encounter any issues, have ideas for improvements, or want to contribute code, please open an issue or submit a pull request on the GitHub repository.
|
||||||
|
|
||||||
# License
|
# License
|
||||||
This project is licensed under the Apache 2.0 License. You are free to use this software commercially, build upon it, and integrate it into your own projects. See the [LICENSE](https://github.com/ParisNeo/GPT4All-ui/blob/main/LICENSE) file for details.
|
This project is licensed under the Apache 2.0 License. You are free to use this software commercially, build upon it, and integrate it into your own projects. See the [LICENSE](https://github.com/ParisNeo/lollms-webui/blob/main/LICENSE) file for details.
|
||||||
|
|
||||||
# Acknowledgements
|
# Acknowledgements
|
||||||
Please note that GPT4ALL WebUI is not affiliated with the GPT4All application developed by Nomic AI. The latter is a separate professional application available at gpt4all.io, which has its own unique features and community.
|
Please note that GPT4ALL WebUI is not affiliated with the GPT4All application developed by Nomic AI. The latter is a separate professional application available at gpt4all.io, which has its own unique features and community.
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
######
|
######
|
||||||
# Project : GPT4ALL-UI
|
# Project : lollms-webui
|
||||||
# File : api.py
|
# File : api.py
|
||||||
# Author : ParisNeo with the help of the community
|
# Author : ParisNeo with the help of the community
|
||||||
# Supported by Nomic-AI
|
# Supported by Nomic-AI
|
||||||
# license : Apache 2.0
|
# license : Apache 2.0
|
||||||
# Description :
|
# Description :
|
||||||
# A simple api to communicate with gpt4all-ui and its models.
|
# A simple api to communicate with lollms-webui and its models.
|
||||||
######
|
######
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from api.db import DiscussionsDB
|
from api.db import DiscussionsDB
|
||||||
|
from api.helpers import compare_lists
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
import importlib
|
import importlib
|
||||||
from lollms import AIPersonality, lollms_path, MSG_TYPE
|
from lollms import AIPersonality, lollms_path, MSG_TYPE
|
||||||
@ -22,7 +23,7 @@ import traceback
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
__author__ = "parisneo"
|
__author__ = "parisneo"
|
||||||
__github__ = "https://github.com/ParisNeo/gpt4all-ui"
|
__github__ = "https://github.com/ParisNeo/lollms-webui"
|
||||||
__copyright__ = "Copyright 2023, "
|
__copyright__ = "Copyright 2023, "
|
||||||
__license__ = "Apache 2.0"
|
__license__ = "Apache 2.0"
|
||||||
|
|
||||||
@ -110,7 +111,7 @@ class ModelProcess:
|
|||||||
'status': 'succeeded',
|
'status': 'succeeded',
|
||||||
'binding_status':True,
|
'binding_status':True,
|
||||||
'model_status':True,
|
'model_status':True,
|
||||||
'personality_status':True,
|
'personalities_status':True,
|
||||||
'errors':[]
|
'errors':[]
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -245,44 +246,58 @@ class ModelProcess:
|
|||||||
self._set_config_result['binding_status'] ='failed'
|
self._set_config_result['binding_status'] ='failed'
|
||||||
self._set_config_result['errors'].append(f"couldn't build binding:{ex}")
|
self._set_config_result['errors'].append(f"couldn't build binding:{ex}")
|
||||||
|
|
||||||
def rebuild_personality(self):
|
def rebuild_personalities(self):
|
||||||
|
mounted_personalities=[]
|
||||||
|
print(f" ******************* Building mounted Personalities from main Process *************************")
|
||||||
|
for personality in self.config['personalities']:
|
||||||
try:
|
try:
|
||||||
personality = self.config['personalities'][self.config['default_personality_id']]
|
print(f" {personality}")
|
||||||
print(f" ******************* Building Personality {personality} from main Process *************************")
|
|
||||||
personality_path = lollms_path/f"personalities_zoo/{personality}"
|
personality_path = lollms_path/f"personalities_zoo/{personality}"
|
||||||
personality = AIPersonality(personality_path, run_scripts=False)
|
personality = AIPersonality(personality_path, run_scripts=False)
|
||||||
print(f" ************ Personality {personality.name} is ready (Main process) ***************************")
|
mounted_personalities.append(personality)
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
print(f"Personality file not found or is corrupted ({personality_path}).\nPlease verify that the personality you have selected exists or select another personality. Some updates may lead to change in personality name or category, so check the personality selection in settings to be sure.")
|
print(f"Personality file not found or is corrupted ({personality_path}).\nPlease verify that the personality you have selected exists or select another personality. Some updates may lead to change in personality name or category, so check the personality selection in settings to be sure.")
|
||||||
if self.config["debug"]:
|
if self.config["debug"]:
|
||||||
print(ex)
|
print(ex)
|
||||||
personality = AIPersonality()
|
personality = AIPersonality()
|
||||||
|
|
||||||
return personality
|
print(f" ************ Personalities mounted (Main process) ***************************")
|
||||||
|
|
||||||
def _rebuild_personality(self):
|
return mounted_personalities
|
||||||
try:
|
|
||||||
|
def _rebuild_personalities(self):
|
||||||
|
self.mounted_personalities=[]
|
||||||
|
failed_personalities=[]
|
||||||
self.reset_config_result()
|
self.reset_config_result()
|
||||||
personality = self.config['personalities'][self.config['default_personality_id']]
|
print(f" ******************* Building mounted Personalities from generation Process *************************")
|
||||||
print(f" ******************* Building Personality {personality} from generation Process *************************")
|
for personality in self.config['personalities']:
|
||||||
|
try:
|
||||||
|
print(f" {personality}")
|
||||||
personality_path = lollms_path/f"personalities_zoo/{personality}"
|
personality_path = lollms_path/f"personalities_zoo/{personality}"
|
||||||
self.personality = AIPersonality(personality_path)
|
personality = AIPersonality(personality_path, run_scripts=True)
|
||||||
print(f" ************ Personality {self.personality.name} is ready (generation process) ***************************")
|
self.mounted_personalities.append(personality)
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
print(f"Personality file not found or is corrupted ({personality_path}).")
|
print(f"Personality file not found or is corrupted ({personality_path}).\nPlease verify that the personality you have selected exists or select another personality. Some updates may lead to change in personality name or category, so check the personality selection in settings to be sure.")
|
||||||
print(f"Please verify that the personality you have selected exists or select another personality. Some updates may lead to change in personality name or category, so check the personality selection in settings to be sure.")
|
|
||||||
print(f"Exception: {ex}")
|
|
||||||
if self.config["debug"]:
|
if self.config["debug"]:
|
||||||
print(ex)
|
print(ex)
|
||||||
self.personality = AIPersonality()
|
personality = AIPersonality()
|
||||||
self._set_config_result['status'] ='failed'
|
failed_personalities.append(personality_path)
|
||||||
self._set_config_result['binding_status'] ='failed'
|
self._set_config_result['errors'].append(f"couldn't build personalities:{ex}")
|
||||||
self._set_config_result['errors'].append(f"couldn't build binding:{ex}")
|
|
||||||
|
|
||||||
|
print(f" ************ Personalities mounted (Generation process) ***************************")
|
||||||
|
if len(failed_personalities)==len(self.config['personalities']):
|
||||||
|
self._set_config_result['status'] ='failed'
|
||||||
|
self._set_config_result['personalities_status'] ='failed'
|
||||||
|
elif len(failed_personalities)>0:
|
||||||
|
self._set_config_result['status'] ='semi_failed'
|
||||||
|
self._set_config_result['personalities_status'] ='semi_failed'
|
||||||
|
|
||||||
|
self.personality = self.mounted_personalities[self.config['active_personality_id']]
|
||||||
|
print("Personality set successfully")
|
||||||
|
|
||||||
def _run(self):
|
def _run(self):
|
||||||
self._rebuild_model()
|
self._rebuild_model()
|
||||||
self._rebuild_personality()
|
self._rebuild_personalities()
|
||||||
self.check_set_config_thread = threading.Thread(target=self._check_set_config_queue, args=())
|
self.check_set_config_thread = threading.Thread(target=self._check_set_config_queue, args=())
|
||||||
print("Launching config verification thread")
|
print("Launching config verification thread")
|
||||||
self.check_set_config_thread.start()
|
self.check_set_config_thread.start()
|
||||||
@ -438,8 +453,9 @@ class ModelProcess:
|
|||||||
self._rebuild_model()
|
self._rebuild_model()
|
||||||
|
|
||||||
# verify that the personality is the same
|
# verify that the personality is the same
|
||||||
if self.config["personalities"][-1]!=bk_cfg["personalities"][-1]:
|
|
||||||
self._rebuild_personality()
|
if not compare_lists(self.config["personalities"], bk_cfg["personalities"]):
|
||||||
|
self._rebuild_personalities()
|
||||||
|
|
||||||
|
|
||||||
class LoLLMsAPPI():
|
class LoLLMsAPPI():
|
||||||
@ -450,7 +466,8 @@ class LoLLMsAPPI():
|
|||||||
self.config = config
|
self.config = config
|
||||||
|
|
||||||
self.binding = self.process.rebuild_binding(self.config)
|
self.binding = self.process.rebuild_binding(self.config)
|
||||||
self.personality = self.process.rebuild_personality()
|
self.personalities = self.process.rebuild_personalities()
|
||||||
|
self.personality = self.personalities[self.config["active_personality_id"]]
|
||||||
if config["debug"]:
|
if config["debug"]:
|
||||||
print(print(f"{self.personality}"))
|
print(print(f"{self.personality}"))
|
||||||
self.config_file_path = config_file_path
|
self.config_file_path = config_file_path
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
######
|
######
|
||||||
# Project : GPT4ALL-UI
|
# Project : lollms-webui
|
||||||
# File : binding.py
|
# File : binding.py
|
||||||
# Author : ParisNeo with the help of the community
|
# Author : ParisNeo with the help of the community
|
||||||
# Supported by Nomic-AI
|
# Supported by Nomic-AI
|
||||||
# license : Apache 2.0
|
# license : Apache 2.0
|
||||||
# Description :
|
# Description :
|
||||||
# This is an interface class for GPT4All-ui bindings.
|
# This is an interface class for lollms-webui bindings.
|
||||||
######
|
######
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Callable
|
from typing import Callable
|
||||||
@ -14,7 +14,7 @@ import yaml
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
__author__ = "parisneo"
|
__author__ = "parisneo"
|
||||||
__github__ = "https://github.com/ParisNeo/gpt4all-ui"
|
__github__ = "https://github.com/ParisNeo/lollms-webui"
|
||||||
__copyright__ = "Copyright 2023, "
|
__copyright__ = "Copyright 2023, "
|
||||||
__license__ = "Apache 2.0"
|
__license__ = "Apache 2.0"
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
######
|
######
|
||||||
# Project : GPT4ALL-UI
|
# Project : lollms-webui
|
||||||
# File : config.py
|
# File : config.py
|
||||||
# Author : ParisNeo with the help of the community
|
# Author : ParisNeo with the help of the community
|
||||||
# Supported by Nomic-AI
|
# Supported by Nomic-AI
|
||||||
@ -12,7 +12,7 @@
|
|||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
__author__ = "parisneo"
|
__author__ = "parisneo"
|
||||||
__github__ = "https://github.com/ParisNeo/gpt4all-ui"
|
__github__ = "https://github.com/ParisNeo/lollms-webui"
|
||||||
__copyright__ = "Copyright 2023, "
|
__copyright__ = "Copyright 2023, "
|
||||||
__license__ = "Apache 2.0"
|
__license__ = "Apache 2.0"
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
import sqlite3
|
import sqlite3
|
||||||
|
|
||||||
__author__ = "parisneo"
|
__author__ = "parisneo"
|
||||||
__github__ = "https://github.com/ParisNeo/gpt4all-ui"
|
__github__ = "https://github.com/ParisNeo/lollms-webui"
|
||||||
__copyright__ = "Copyright 2023, "
|
__copyright__ = "Copyright 2023, "
|
||||||
__license__ = "Apache 2.0"
|
__license__ = "Apache 2.0"
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
from config import load_config, save_config
|
from config import load_config, save_config
|
||||||
|
|
||||||
__author__ = "parisneo"
|
__author__ = "parisneo"
|
||||||
__github__ = "https://github.com/ParisNeo/gpt4all-ui"
|
__github__ = "https://github.com/ParisNeo/lollms-webui"
|
||||||
__copyright__ = "Copyright 2023, "
|
__copyright__ = "Copyright 2023, "
|
||||||
__license__ = "Apache 2.0"
|
__license__ = "Apache 2.0"
|
||||||
|
|
||||||
|
11
api/helpers.py
Normal file
11
api/helpers.py
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
|
||||||
|
__author__ = "parisneo"
|
||||||
|
__github__ = "https://github.com/ParisNeo/lollms-webui"
|
||||||
|
__copyright__ = "Copyright 2023, "
|
||||||
|
__license__ = "Apache 2.0"
|
||||||
|
|
||||||
|
def compare_lists(list1, list2):
|
||||||
|
if len(list1) != len(list2):
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
return list1 == list2
|
60
app.py
60
app.py
@ -1,5 +1,5 @@
|
|||||||
######
|
######
|
||||||
# Project : GPT4ALL-UI
|
# Project : lollms-webui
|
||||||
# Author : ParisNeo with the help of the community
|
# Author : ParisNeo with the help of the community
|
||||||
# Supported by Nomic-AI
|
# Supported by Nomic-AI
|
||||||
# license : Apache 2.0
|
# license : Apache 2.0
|
||||||
@ -10,7 +10,7 @@
|
|||||||
######
|
######
|
||||||
|
|
||||||
__author__ = "parisneo"
|
__author__ = "parisneo"
|
||||||
__github__ = "https://github.com/ParisNeo/gpt4all-ui"
|
__github__ = "https://github.com/ParisNeo/lollms-webui"
|
||||||
__copyright__ = "Copyright 2023, "
|
__copyright__ = "Copyright 2023, "
|
||||||
__license__ = "Apache 2.0"
|
__license__ = "Apache 2.0"
|
||||||
|
|
||||||
@ -25,7 +25,9 @@ from tqdm import tqdm
|
|||||||
import subprocess
|
import subprocess
|
||||||
import signal
|
import signal
|
||||||
from lollms import AIPersonality, lollms_path, MSG_TYPE
|
from lollms import AIPersonality, lollms_path, MSG_TYPE
|
||||||
|
from lollms.console import ASCIIColors
|
||||||
from api.db import DiscussionsDB, Discussion
|
from api.db import DiscussionsDB, Discussion
|
||||||
|
from api.helpers import compare_lists
|
||||||
from flask import (
|
from flask import (
|
||||||
Flask,
|
Flask,
|
||||||
Response,
|
Response,
|
||||||
@ -77,9 +79,9 @@ class LoLLMsWebUI(LoLLMsAPPI):
|
|||||||
|
|
||||||
app.template_folder = "web/dist"
|
app.template_folder = "web/dist"
|
||||||
|
|
||||||
self.personality_language= config["personalities"][config["default_personality_id"]].split("/")[0]
|
self.personality_language= config["personalities"][config["active_personality_id"]].split("/")[0]
|
||||||
self.personality_category= config["personalities"][config["default_personality_id"]].split("/")[1]
|
self.personality_category= config["personalities"][config["active_personality_id"]].split("/")[1]
|
||||||
self.personality_name= config["personalities"][config["default_personality_id"]].split("/")[2]
|
self.personality_name= config["personalities"][config["active_personality_id"]].split("/")[2]
|
||||||
|
|
||||||
# =========================================================================================
|
# =========================================================================================
|
||||||
# Endpoints
|
# Endpoints
|
||||||
@ -87,6 +89,9 @@ class LoLLMsWebUI(LoLLMsAPPI):
|
|||||||
self.add_endpoint("/add_reference_to_local_model", "add_reference_to_local_model", self.add_reference_to_local_model, methods=["POST"])
|
self.add_endpoint("/add_reference_to_local_model", "add_reference_to_local_model", self.add_reference_to_local_model, methods=["POST"])
|
||||||
|
|
||||||
self.add_endpoint("/send_file", "send_file", self.send_file, methods=["POST"])
|
self.add_endpoint("/send_file", "send_file", self.send_file, methods=["POST"])
|
||||||
|
self.add_endpoint("/mount_personality", "mount_personality", self.mount_personality, methods=["POST"])
|
||||||
|
self.add_endpoint("/unmount_personality", "unmount_personality", self.unmount_personality, methods=["POST"])
|
||||||
|
self.add_endpoint("/select_personality", "select_personality", self.select_personality, methods=["POST"])
|
||||||
|
|
||||||
|
|
||||||
self.add_endpoint(
|
self.add_endpoint(
|
||||||
@ -669,6 +674,51 @@ class LoLLMsWebUI(LoLLMsAPPI):
|
|||||||
else:
|
else:
|
||||||
return jsonify({"status": True})
|
return jsonify({"status": True})
|
||||||
|
|
||||||
|
|
||||||
|
def mount_personality(self):
|
||||||
|
language = request.files['language']
|
||||||
|
category = request.files['category']
|
||||||
|
name = request.files['name']
|
||||||
|
|
||||||
|
package_path = f"{language}/{category}/{name}"
|
||||||
|
package_full_path = lollms_path/"personalities_zoo"/package_path
|
||||||
|
config_file = package_full_path / "config.yaml"
|
||||||
|
if not config_file.exists():
|
||||||
|
self.config["personalities"].append()
|
||||||
|
self.personalities = self.process.rebuild_personalities()
|
||||||
|
self.personality = self.personalities[self.config["active_personality_id"]]
|
||||||
|
self.apply_settings()
|
||||||
|
return jsonify({"status": True})
|
||||||
|
else:
|
||||||
|
return jsonify({"status": False, "error":"Personality not found"})
|
||||||
|
|
||||||
|
def unmount_personality(self):
|
||||||
|
language = request.files['language']
|
||||||
|
category = request.files['category']
|
||||||
|
name = request.files['name']
|
||||||
|
try:
|
||||||
|
index = self.config["personalities"].index(f"{language}/{category}/{name}")
|
||||||
|
self.config["personalities"].remove(f"{language}/{category}/{name}")
|
||||||
|
if self.config["active_personality_id"]>=index:
|
||||||
|
self.config["active_personality_id"]=0
|
||||||
|
self.personalities = self.process.rebuild_personalities()
|
||||||
|
self.personality = self.personalities[self.config["active_personality_id"]]
|
||||||
|
self.apply_settings()
|
||||||
|
return jsonify({"status": True})
|
||||||
|
except:
|
||||||
|
return jsonify({"status": False, "error":"Couldn't unmount personality"})
|
||||||
|
|
||||||
|
def select_personality(self):
|
||||||
|
id = request.files['id']
|
||||||
|
if id<len(self.config["personalities"]):
|
||||||
|
self.config["active_personality_id"]=id
|
||||||
|
self.personality = self.personalities[self.config["active_personality_id"]]
|
||||||
|
self.apply_settings()
|
||||||
|
return jsonify({"status": True})
|
||||||
|
else:
|
||||||
|
return jsonify({"status": False, "error":"Invalid ID"})
|
||||||
|
|
||||||
|
|
||||||
def send_file(self):
|
def send_file(self):
|
||||||
file = request.files['file']
|
file = request.files['file']
|
||||||
Path("uploads").mkdir(exist_ok=True, parents=True)
|
Path("uploads").mkdir(exist_ok=True, parents=True)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# =================== Lord Of Large Language Models Configuration file ===========================
|
# =================== Lord Of Large Language Models Configuration file ===========================
|
||||||
version: 6
|
version: 7
|
||||||
binding_name: llama_cpp_official
|
binding_name: llama_cpp_official
|
||||||
model_name: Wizard-Vicuna-7B-Uncensored.ggmlv3.q4_0.bin
|
model_name: Wizard-Vicuna-7B-Uncensored.ggmlv3.q4_0.bin
|
||||||
|
|
||||||
@ -21,7 +21,7 @@ n_threads: 8
|
|||||||
|
|
||||||
#Personality parameters
|
#Personality parameters
|
||||||
personalities: ["english/generic/lollms"]
|
personalities: ["english/generic/lollms"]
|
||||||
default_personality_id: 0
|
active_personality_id: 0
|
||||||
override_personality_model_parameters: false #if true the personality parameters are overriden by those of the configuration (may affect personality behaviour)
|
override_personality_model_parameters: false #if true the personality parameters are overriden by those of the configuration (may affect personality behaviour)
|
||||||
|
|
||||||
user_name: user
|
user_name: user
|
||||||
|
@ -476,3 +476,67 @@ The Flask backend API exposes various endpoints to interact with the application
|
|||||||
|
|
||||||
**Output**: Imports the specified discussions.
|
**Output**: Imports the specified discussions.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Active personalities manipulation endpoints
|
||||||
|
|
||||||
|
### Mount Personality
|
||||||
|
|
||||||
|
**Endpoint:** `/mount_personality`
|
||||||
|
|
||||||
|
**Method:** POST
|
||||||
|
|
||||||
|
**Parameters:**
|
||||||
|
- `language` (file): The language file associated with the personality.
|
||||||
|
- `category` (file): The category file associated with the personality.
|
||||||
|
- `name` (file): The name file associated with the personality.
|
||||||
|
|
||||||
|
**Description:**
|
||||||
|
This endpoint mounts a personality by adding it to the list of configured personalities and setting it as the active personality. The personality is specified by providing the language, category, and name files. The endpoint checks if the personality's configuration file exists and, if not, adds the personality to the configuration. After mounting the personality, the settings are applied.
|
||||||
|
|
||||||
|
**Returns:**
|
||||||
|
- If the personality is mounted successfully:
|
||||||
|
- `status` (boolean): `True`
|
||||||
|
- If the personality is not found:
|
||||||
|
- `status` (boolean): `False`
|
||||||
|
- `error` (string): "Personality not found"
|
||||||
|
|
||||||
|
### Unmount Personality
|
||||||
|
|
||||||
|
**Endpoint:** `/unmount_personality`
|
||||||
|
|
||||||
|
**Method:** POST
|
||||||
|
|
||||||
|
**Parameters:**
|
||||||
|
- `language` (file): The language file associated with the personality.
|
||||||
|
- `category` (file): The category file associated with the personality.
|
||||||
|
- `name` (file): The name file associated with the personality.
|
||||||
|
|
||||||
|
**Description:**
|
||||||
|
This endpoint unmounts a personality by removing it from the list of configured personalities. The personality is specified by providing the language, category, and name files. If the active personality is removed, the active personality ID is reset to `0`. After unmounting the personality, the settings are applied.
|
||||||
|
|
||||||
|
**Returns:**
|
||||||
|
- If the personality is unmounted successfully:
|
||||||
|
- `status` (boolean): `True`
|
||||||
|
- If the personality couldn't be unmounted:
|
||||||
|
- `status` (boolean): `False`
|
||||||
|
- `error` (string): "Couldn't unmount personality"
|
||||||
|
|
||||||
|
### Select Personality
|
||||||
|
|
||||||
|
**Endpoint:** `/select_personality`
|
||||||
|
|
||||||
|
**Method:** POST
|
||||||
|
|
||||||
|
**Parameters:**
|
||||||
|
- `id` (file): The ID of the personality to select.
|
||||||
|
|
||||||
|
**Description:**
|
||||||
|
This endpoint selects a personality from the list of configured personalities based on the provided ID. The ID represents the index of the personality in the list. After selecting the personality, the settings are applied.
|
||||||
|
|
||||||
|
**Returns:**
|
||||||
|
- If the personality is selected successfully:
|
||||||
|
- `status` (boolean): `True`
|
||||||
|
- If the ID is invalid:
|
||||||
|
- `status` (boolean): `False`
|
||||||
|
- `error` (string): "Invalid ID"
|
@ -1,4 +1,4 @@
|
|||||||
# GPT4ALL-UI Web interface VUE3 development log, todo's and more
|
# lollms-webui Web interface VUE3 development log, todo's and more
|
||||||
|
|
||||||
## Installation for development
|
## Installation for development
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Welcome to the GPT4ALL WebUI tutorial! In this tutorial, we will walk you throug
|
|||||||
2. If you are using Conda, you can create a Conda virtual environment, install the dependencies mentioned in the `requirements.txt` file, and run the application using `python app.py`. For regular Python installations, follow the next steps.
|
2. If you are using Conda, you can create a Conda virtual environment, install the dependencies mentioned in the `requirements.txt` file, and run the application using `python app.py`. For regular Python installations, follow the next steps.
|
||||||
|
|
||||||
## Download and Launch the Tool
|
## Download and Launch the Tool
|
||||||
1. Visit the GitHub repository page at [github.com/ParisNeo/gpt4all-ui](https://github.com/ParisNeo/gpt4all-ui).
|
1. Visit the GitHub repository page at [github.com/ParisNeo/lollms-webui](https://github.com/ParisNeo/lollms-webui).
|
||||||
2. Click on the "Latest Release" button.
|
2. Click on the "Latest Release" button.
|
||||||
3. Depending on your platform, download either `webui.bat` for Windows or `webui.sh` for Linux.
|
3. Depending on your platform, download either `webui.bat` for Windows or `webui.sh` for Linux.
|
||||||
4. Choose a folder on your system to install the application launcher. For example, you can create a folder named `gpt4all-webui` in your `ai` directory.
|
4. Choose a folder on your system to install the application launcher. For example, you can create a folder named `gpt4all-webui` in your `ai` directory.
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
2. Open Terminal/PowerShell and navigate to a folder you want to clone this repository.
|
2. Open Terminal/PowerShell and navigate to a folder you want to clone this repository.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/ParisNeo/gpt4all-ui.git
|
git clone https://github.com/ParisNeo/lollms-webui.git
|
||||||
```
|
```
|
||||||
|
|
||||||
4. Install/run application by double clicking on `webui.bat` file from Windows explorer as normal user.
|
4. Install/run application by double clicking on `webui.bat` file from Windows explorer as normal user.
|
||||||
@ -44,11 +44,11 @@ sudo pacman -S curl
|
|||||||
```
|
```
|
||||||
2. Open terminal/console copy and paste this command and press enter:
|
2. Open terminal/console copy and paste this command and press enter:
|
||||||
```
|
```
|
||||||
mkdir -p ~/gpt4all-ui && curl -L https://raw.githubusercontent.com/nomic-ai/gpt4all-ui/main/webui.sh -o ~/gpt4all-ui/webui.sh && chmod +x ~/gpt4all-ui/webui.sh && cd ~/gpt4all-ui && ./webui.sh
|
mkdir -p ~/lollms-webui && curl -L https://raw.githubusercontent.com/nomic-ai/lollms-webui/main/webui.sh -o ~/lollms-webui/webui.sh && chmod +x ~/lollms-webui/webui.sh && cd ~/lollms-webui && ./webui.sh
|
||||||
```
|
```
|
||||||
> **Note**
|
> **Note**
|
||||||
>
|
>
|
||||||
> This command creates new directory `/gpt4all-ui/` in your /home/ direcory, downloads a file [webui.sh](https://raw.githubusercontent.com/nomic-ai/gpt4all-ui/main/webui.sh), makes file executable and executes webui.sh that downloads and installs everything that is needed.
|
> This command creates new directory `/lollms-webui/` in your /home/ direcory, downloads a file [webui.sh](https://raw.githubusercontent.com/nomic-ai/lollms-webui/main/webui.sh), makes file executable and executes webui.sh that downloads and installs everything that is needed.
|
||||||
|
|
||||||
3. Follow instructions on screen until it launches webui.
|
3. Follow instructions on screen until it launches webui.
|
||||||
4. To relaunch application:
|
4. To relaunch application:
|
||||||
@ -87,10 +87,10 @@ sudo pacman -S curl git python3
|
|||||||
2. Clone repository:
|
2. Clone repository:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/ParisNeo/gpt4all-ui.git
|
git clone https://github.com/ParisNeo/lollms-webui.git
|
||||||
```
|
```
|
||||||
```bash
|
```bash
|
||||||
cd gpt4all-ui
|
cd lollms-webui
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Install/run application:
|
3. Install/run application:
|
||||||
@ -116,10 +116,10 @@ brew install git python3
|
|||||||
3. Clone repository:
|
3. Clone repository:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/ParisNeo/gpt4all-ui.git
|
git clone https://github.com/ParisNeo/lollms-webui.git
|
||||||
```
|
```
|
||||||
```bash
|
```bash
|
||||||
cd gpt4all-ui
|
cd lollms-webui
|
||||||
```
|
```
|
||||||
|
|
||||||
4. Install/run application:
|
4. Install/run application:
|
||||||
|
@ -21,7 +21,7 @@ Before installing this tool you need to install python 3.10 or higher as well as
|
|||||||
|
|
||||||
|
|
||||||
Now let's cut to the chace. Let's start by installing the tool.
|
Now let's cut to the chace. Let's start by installing the tool.
|
||||||
First, go to the github repository page at github.com/ParisNeo/gpt4all-ui then press the latest release button. Depending on your platform download webui.bat for windows or webui.sh for linux.
|
First, go to the github repository page at github.com/ParisNeo/lollms-webui then press the latest release button. Depending on your platform download webui.bat for windows or webui.sh for linux.
|
||||||
|
|
||||||
We call this file, the application launcher. Make sure you install the launcher in a folder you choose. For example I'll put it in my ai folder at gpt4all-webui.
|
We call this file, the application launcher. Make sure you install the launcher in a folder you choose. For example I'll put it in my ai folder at gpt4all-webui.
|
||||||
|
|
||||||
|
2
package-lock.json
generated
2
package-lock.json
generated
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "gpt4all-ui",
|
"name": "lollms-webui",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {}
|
"packages": {}
|
||||||
|
2
setup.py
2
setup.py
@ -23,7 +23,7 @@ setuptools.setup(
|
|||||||
description="A web ui for running chat models with different bindings. Supports multiple personalities and extensions.",
|
description="A web ui for running chat models with different bindings. Supports multiple personalities and extensions.",
|
||||||
long_description=long_description,
|
long_description=long_description,
|
||||||
long_description_content_type="text/markdown",
|
long_description_content_type="text/markdown",
|
||||||
url="https://github.com/ParisNeo/gpt4all-ui",
|
url="https://github.com/ParisNeo/lollms-webui",
|
||||||
packages=setuptools.find_packages(),
|
packages=setuptools.find_packages(),
|
||||||
install_requires=requirements,
|
install_requires=requirements,
|
||||||
extras_require={"dev": requirements_dev},
|
extras_require={"dev": requirements_dev},
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// Project : GPT4ALL-ui
|
// Project : lollms-webui
|
||||||
// Author : ParisNeo
|
// Author : ParisNeo
|
||||||
// Description :
|
// Description :
|
||||||
// All websocket stuff can be found here.
|
// All websocket stuff can be found here.
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Help | GPT4All-ui</title>
|
<title>Help | lollms-webui</title>
|
||||||
<!-- Include Tailwind CSS -->
|
<!-- Include Tailwind CSS -->
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/utilities.min.css') }}">
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/utilities.min.css') }}">
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/tailwind.min.css') }}">
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/tailwind.min.css') }}">
|
||||||
@ -17,7 +17,7 @@
|
|||||||
<body>
|
<body>
|
||||||
<!-- Navbar -->
|
<!-- Navbar -->
|
||||||
<nav class="flex justify-between items-center bg-gray-200 dark:bg-gray-900 text-black dark:text-white p-4">
|
<nav class="flex justify-between items-center bg-gray-200 dark:bg-gray-900 text-black dark:text-white p-4">
|
||||||
<a href="/" class="text-lg font-bold">GPT4All-ui</a>
|
<a href="/" class="text-lg font-bold">lollms-webui</a>
|
||||||
<!-- Dropdown menu -->
|
<!-- Dropdown menu -->
|
||||||
<div class="relative">
|
<div class="relative">
|
||||||
<button class="flex items-center text-lg font-bold">
|
<button class="flex items-center text-lg font-bold">
|
||||||
@ -44,7 +44,7 @@
|
|||||||
<ul class="list-disc list-inside mb-4">
|
<ul class="list-disc list-inside mb-4">
|
||||||
<li>@ParisNeo : Creator of the project and Lead developer</li>
|
<li>@ParisNeo : Creator of the project and Lead developer</li>
|
||||||
<li>@AndriyMulyar : CEO of Nomic-ai who offered to link the project as their official ui for GPT4All</li>
|
<li>@AndriyMulyar : CEO of Nomic-ai who offered to link the project as their official ui for GPT4All</li>
|
||||||
<li><a href="https://github.com/ParisNeo/gpt4all-ui/graphs/contributors" target="_blank" class="text-blue-900 dark:text-blue-600">A number of very talented open-source developers without whom this project wouldn't be as awesome as it is.</a></li>
|
<li><a href="https://github.com/ParisNeo/lollms-webui/graphs/contributors" target="_blank" class="text-blue-900 dark:text-blue-600">A number of very talented open-source developers without whom this project wouldn't be as awesome as it is.</a></li>
|
||||||
<li> We also appreciate the support of the users of this tool who have helped us in various ways.</li>
|
<li> We also appreciate the support of the users of this tool who have helped us in various ways.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
8
web/dist/assets/index-5da07514.js
vendored
8
web/dist/assets/index-5da07514.js
vendored
File diff suppressed because one or more lines are too long
4
web/package-lock.json
generated
4
web/package-lock.json
generated
@ -1,11 +1,11 @@
|
|||||||
{
|
{
|
||||||
"name": "gpt4all-ui-vue",
|
"name": "lollms-webui-vue",
|
||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "gpt4all-ui-vue",
|
"name": "lollms-webui-vue",
|
||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"axios": "^1.3.6",
|
"axios": "^1.3.6",
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "gpt4all-ui-vue",
|
"name": "lollms-webui-vue",
|
||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<div class="sticky bottom-0 p-6 bg-bg-light-tone dark:bg-bg-dark-tone shadow-inner ">
|
<div class="sticky bottom-0 p-6 bg-bg-light-tone dark:bg-bg-dark-tone shadow-inner ">
|
||||||
<!-- <hr class="container flex flex-col sm:flex-row item-center py-0 h-0 border-bg-dark dark:border-bg-light"> -->
|
<!-- <hr class="container flex flex-col sm:flex-row item-center py-0 h-0 border-bg-dark dark:border-bg-light"> -->
|
||||||
<div class="flex justify-center flex-row items-center gap-2 p-1 ">
|
<div class="flex justify-center flex-row items-center gap-2 p-1 ">
|
||||||
Visit <a class=" hover:text-primary duration-150" href="https://github.com/ParisNeo/gpt4all-ui"
|
Visit <a class=" hover:text-primary duration-150" href="https://github.com/ParisNeo/lollms-webui"
|
||||||
target="_blank">github repository</a> to learn more
|
target="_blank">github repository</a> to learn more
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
@ -5,14 +5,14 @@
|
|||||||
<!-- LOGO -->
|
<!-- LOGO -->
|
||||||
<RouterLink :to="{ name: 'discussions' }">
|
<RouterLink :to="{ name: 'discussions' }">
|
||||||
<div class="flex items-center gap-3 flex-1">
|
<div class="flex items-center gap-3 flex-1">
|
||||||
<img class="w-12 hover:scale-95 duration-150 " title="GPT4ALL-UI" src="@/assets/logo.svg" alt="Logo">
|
<img class="w-12 hover:scale-95 duration-150 " title="lollms-webui" src="@/assets/logo.svg" alt="Logo">
|
||||||
<p class="text-2xl ">GPT4ALL-UI</p>
|
<p class="text-2xl ">lollms-webui</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</RouterLink>
|
</RouterLink>
|
||||||
<!-- GITHUB AND THEME BUTTONS -->
|
<!-- GITHUB AND THEME BUTTONS -->
|
||||||
<div class="flex gap-3 flex-1 items-center justify-end">
|
<div class="flex gap-3 flex-1 items-center justify-end">
|
||||||
<a href="https://github.com/ParisNeo/gpt4all-ui" target="_blank">
|
<a href="https://github.com/ParisNeo/lollms-webui" target="_blank">
|
||||||
|
|
||||||
<div class="text-2xl hover:text-primary duration-150" title="Visit repository page">
|
<div class="text-2xl hover:text-primary duration-150" title="Visit repository page">
|
||||||
<i data-feather="github"></i>
|
<i data-feather="github"></i>
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
<div class="flex flex-col text-center items-center">
|
<div class="flex flex-col text-center items-center">
|
||||||
|
|
||||||
<div class="flex items-center gap-3 text-5xl drop-shadow-md align-middle pt-24 ">
|
<div class="flex items-center gap-3 text-5xl drop-shadow-md align-middle pt-24 ">
|
||||||
<img class="w-24 animate-bounce" title="GPT4ALL-UI" src="@/assets/logo.svg" alt="Logo">
|
<img class="w-24 animate-bounce" title="lollms-webui" src="@/assets/logo.svg" alt="Logo">
|
||||||
<p class=" ">GPT4ALL-UI</p>
|
<p class=" ">lollms-webui</p>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// Project : GPT4ALL-ui
|
// Project : lollms-webui
|
||||||
// Author : ParisNeo
|
// Author : ParisNeo
|
||||||
// Description :
|
// Description :
|
||||||
// All websocket stuff can be found here.
|
// All websocket stuff can be found here.
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
<div class="mt-8">
|
<div class="mt-8">
|
||||||
<h2 class="text-2xl font-bold mb-2">Credits</h2>
|
<h2 class="text-2xl font-bold mb-2">Credits</h2>
|
||||||
<p class="mb-4">This project is developed by <span class="font-bold">ParisNeo</span> With help from the community..</p>
|
<p class="mb-4">This project is developed by <span class="font-bold">ParisNeo</span> With help from the community..</p>
|
||||||
<p class="mb-4"><span class="font-bold"><a href="https://github.com/ParisNeo/gpt4all-ui/graphs/contributors">Check out the full list of developers here and show them some love.</a></span></p>
|
<p class="mb-4"><span class="font-bold"><a href="https://github.com/ParisNeo/lollms-webui/graphs/contributors">Check out the full list of developers here and show them some love.</a></span></p>
|
||||||
<p>Check out the project on <a class="text-blue-500" :href="githubLink" target="_blank" rel="noopener noreferrer">GitHub</a>.</p>
|
<p>Check out the project on <a class="text-blue-500" :href="githubLink" target="_blank" rel="noopener noreferrer">GitHub</a>.</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -32,7 +32,7 @@
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
faqs: [], // Array to store the loaded FAQs
|
faqs: [], // Array to store the loaded FAQs
|
||||||
githubLink: 'https://github.com/ParisNeo/gpt4all-ui', // Replace with your project's GitHub link
|
githubLink: 'https://github.com/ParisNeo/lollms-webui', // Replace with your project's GitHub link
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
@ -720,7 +720,7 @@ export default {
|
|||||||
this.settingsChanged = true
|
this.settingsChanged = true
|
||||||
const res = this.update_setting('personality_folder', pers.personality.folder, () => {
|
const res = this.update_setting('personality_folder', pers.personality.folder, () => {
|
||||||
this.$refs.toast.showToast("Selected personality:\n" + pers.personality.name, 4, true)
|
this.$refs.toast.showToast("Selected personality:\n" + pers.personality.name, 4, true)
|
||||||
this.configFile.personalities[configFile.default_personality_id] = pers.personality.language + "/" + pers.personality.category + "/" + pers.personality.name
|
this.configFile.personalities[configFile.active_personality_id] = pers.personality.language + "/" + pers.personality.category + "/" + pers.personality.name
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
|
@ -116,7 +116,7 @@ if exist GPT4All (
|
|||||||
) else (
|
) else (
|
||||||
echo Cloning repository...
|
echo Cloning repository...
|
||||||
rem Clone the Git repository into a temporary directory
|
rem Clone the Git repository into a temporary directory
|
||||||
git clone https://github.com/ParisNeo/gpt4all-ui.git ./GPT4All
|
git clone https://github.com/ParisNeo/lollms-webui.git ./GPT4All
|
||||||
cd GPT4All
|
cd GPT4All
|
||||||
echo Pulling latest changes
|
echo Pulling latest changes
|
||||||
git pull
|
git pull
|
||||||
|
2
webui.sh
2
webui.sh
@ -62,7 +62,7 @@ if ping -q -c 1 google.com >/dev/null 2>&1; then
|
|||||||
else
|
else
|
||||||
echo Cloning repository...
|
echo Cloning repository...
|
||||||
rem Clone the Git repository into a temporary directory
|
rem Clone the Git repository into a temporary directory
|
||||||
git clone https://github.com/ParisNeo/gpt4all-ui.git ./GPT4All
|
git clone https://github.com/ParisNeo/lollms-webui.git ./GPT4All
|
||||||
cd GPT4All
|
cd GPT4All
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
Loading…
Reference in New Issue
Block a user