mirror of
https://github.com/nomic-ai/gpt4all
synced 2024-11-02 09:40:42 +00:00
89 lines
2.6 KiB
Bash
89 lines
2.6 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
# Display header
|
||
|
echo "=========================================================="
|
||
|
echo " ██████ ██████ ████████ ██ ██ █████ ██ ██ "
|
||
|
echo "██ ██ ██ ██ ██ ██ ██ ██ ██ ██ "
|
||
|
echo "██ ███ ██████ ██ ███████ ███████ ██ ██ "
|
||
|
echo "██ ██ ██ ██ ██ ██ ██ ██ ██ "
|
||
|
echo " ██████ ██ ██ ██ ██ ██ ███████ ███████ "
|
||
|
echo " └─> https://github.com/nomic-ai/gpt4all"
|
||
|
|
||
|
# Function to detect macOS architecture and set the binary filename
|
||
|
detect_mac_arch() {
|
||
|
local mac_arch
|
||
|
mac_arch=$(uname -m)
|
||
|
case "$mac_arch" in
|
||
|
arm64)
|
||
|
os_type="M1 Mac/OSX"
|
||
|
binary_filename="gpt4all-lora-quantized-OSX-m1"
|
||
|
;;
|
||
|
x86_64)
|
||
|
os_type="Intel Mac/OSX"
|
||
|
binary_filename="gpt4all-lora-quantized-OSX-intel"
|
||
|
;;
|
||
|
*)
|
||
|
echo "Unknown macOS architecture"
|
||
|
exit 1
|
||
|
;;
|
||
|
esac
|
||
|
}
|
||
|
|
||
|
# Detect operating system and set the binary filename
|
||
|
case "$(uname -s)" in
|
||
|
Darwin*)
|
||
|
detect_mac_arch
|
||
|
;;
|
||
|
Linux*)
|
||
|
if grep -q Microsoft /proc/version; then
|
||
|
os_type="Windows (WSL)"
|
||
|
binary_filename="gpt4all-lora-quantized-win64.exe"
|
||
|
else
|
||
|
os_type="Linux"
|
||
|
binary_filename="gpt4all-lora-quantized-linux-x86"
|
||
|
fi
|
||
|
;;
|
||
|
CYGWIN*|MINGW32*|MSYS*|MINGW*)
|
||
|
os_type="Windows (Cygwin/MSYS/MINGW)"
|
||
|
binary_filename="gpt4all-lora-quantized-win64.exe"
|
||
|
;;
|
||
|
*)
|
||
|
echo "Unknown operating system"
|
||
|
exit 1
|
||
|
;;
|
||
|
esac
|
||
|
echo "================================"
|
||
|
echo "== You are using $os_type."
|
||
|
|
||
|
|
||
|
# Change to the chat directory
|
||
|
cd chat
|
||
|
|
||
|
# List .bin files and prompt user to select one
|
||
|
bin_files=(*.bin)
|
||
|
echo "== Available .bin files:"
|
||
|
for i in "${!bin_files[@]}"; do
|
||
|
echo " [$((i+1))] ${bin_files[i]}"
|
||
|
done
|
||
|
|
||
|
# Function to get user input and validate it
|
||
|
get_valid_user_input() {
|
||
|
local input_valid=false
|
||
|
|
||
|
while ! $input_valid; do
|
||
|
echo "==> Please enter a number:"
|
||
|
read -r user_selection
|
||
|
if [[ $user_selection =~ ^[0-9]+$ ]] && (( user_selection >= 1 && user_selection <= ${#bin_files[@]} )); then
|
||
|
input_valid=true
|
||
|
else
|
||
|
echo "Invalid input. Please enter a number between 1 and ${#bin_files[@]}."
|
||
|
fi
|
||
|
done
|
||
|
}
|
||
|
|
||
|
get_valid_user_input
|
||
|
selected_bin_file="${bin_files[$((user_selection-1))]}"
|
||
|
|
||
|
# Run the selected .bin file with the appropriate command
|
||
|
./"$binary_filename" -m "$selected_bin_file"
|