This is actively being improved! Pull requests and issues are very welcome!
NOTE: The voice chat is only stable if one person is speaking at a time
NOTE: Please only use this on small private servers. Right now it is set up for testing only, meaning anyone on the server can invoke its commands. Also, the bot will join voice chat whenever someone else joins!
Setup a server to run the bot on so it can run when your computer is off 24/7. For this guide, I will be using DigitalOcean, but you can use any server host you want. Skip this section if you already have a server or want to run it locally.
Create a DigitalOcean account here
Create a droplet
Connect to your droplet
At least 2gb of RAM
ffmpeg
sudo apt-get install ffmpeg
Dev version of Python
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.9-dev
Tested on Python 3.9 but may work with other versions
Pip
sudo apt-get install python3-pip
PortAudio
sudo apt-get install portaudio19-dev
Clone the project files and cd into the directory
git clone https://github.com/hc20k/LLMChat.git
cd LLMChat
Simply run
python3.9 update.py -y
# -y installs required dependencies without user interaction
# Change python.x if using a different version of Python
to install all required dependencies. You will be asked if you want to install the optional dependencies for voice and/or image recognition in the script.
NOTE: It's healthy to run
update.py
after a new commit is made, because requirements may be added.
If you were having trouble with the update.py
script, you can install the dependencies manually using these commands.
Clone the project files and cd into the directory
git clone https://github.com/hc20k/LLMChat.git
cd LLMChat
Manually install the dependencies
pip install -r requirements.txt
# for voice support (ElevenLabs, bark, Azure, whisper)
pip install -r optional/voice-requirements.txt
# for BLIP support
pip install -r optional/blip-requirements.txt
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
# for LLaMA support
pip install -r optional/llama-requirements.txt
Create the bot:
NOTE: Administrator is required for the bot to work properly. If you want to use the bot without Administrator permissions, you can manually select the permissions you want to give the bot.
Copy the config file
cp config.example.ini config.ini
Edit the config file
nano config.ini
speech_recognition_service =
:
whisper
- run OpenAI's Whisper locally. (Free)google
- use Google's online transcription service. (Free)azure
- use Microsoft Azure's online transcription service. ($)tts_service =
:
elevenlabs
- use ElevenLabs for TTS. ($) (Further configuration in the ElevenLabs
section required)azure
- use Azure cognitive services for TTS. ($) (Further configuration in the Azure
section required)silero
- uses local Silero models via pytorch. (Free)play.ht
- uses Play.ht for TTS. API key needed. ($)bark
- uses local Bark models for TTS. Optimal graphics card needed. (Free)audiobook_mode =
true
- the bot will read its responses to the user from the text chat.false
- the bot will listen in VC and respond with voice.llm =
:
openai
- use OpenAI's API for LLM ($ Fast))llama
- use a local LLaMA (GGML) model (Free, requires llama installation and is slower)blip_enabled =
key =
model =
use_embeddings =
bot_api_key =
active_channels =
1090126458803986483,922580158454562851
or all
(Bot will interact with every channel)Supply your API keys & desired voice for the service you chose for tts_service
After changing the configuration files, start the bot
python3.9 main.py
Or run the bot in the background useing screen to keep it running after you disconnect from a server.
screen -S name python3.9 main.py
# Press `Ctrl+a` then `d` to detach from the running bot.
/configure
- Allows you to set the chatbot's name, identity description, and optional reminder text (a context clue sent further along in the transcript so the AI will consider it more)/model
- Allows you to change the current model. If you're in OpenAI mode, it will allow you to select from the OpenAI models. If you're in LLaMA mode, it will allow you to select a file from the LLaMA.search_path
folder./avatar [url]
- Allows you to easily set the chatbot's avatar to a specific URL./message_context_count
- (default 20) Sets the amount of messages that are sent to the AI for context. Increasing this number will increase the amount of tokens you'll use./audiobook_mode
- (default false
) Allows you to change Bot.audiobook_mode
without manually editing the config./reload_config
- Reloads all of the settings in the config.ini./purge
- Deletes all of the messages in the current channel. DANGEROUS. I should probably disable this but I use it during testing./system [message]
- Allows you to send a message as the system
role. Only supported for OpenAI models >= gpt-3.5-turbo./retry
- Allows you to re-infer the last message, in case you didn't like it./print_info
- Prints some info about the bot. (Its name, identity, and model as well as your name and identity)/your_identity
- Allows you to set your own name and identity (What the chatbot knows about you)