Чат-бот на llama-cpp-python
с веб-интерфейсом на Gradio
- 📽 Демонстрация
- 🖼 Скриншоты
- 🚀 Функционал
- 🏗 Стек технологий
- 🐍 Установка и запуск через Python
- 🐳 Установка и запуск через Docker
- 📱 Установка и запуск на Android
В Google Colab ноутбуке дополнительно реализовано:
- Код приложения с комментариями
- Демонстрация пошагового инференса моделей через
llama-cpp-python
- Пример деплоя веб-приложения на фреймворке Gradio на облачный сервер
- Подключение и настройка сервера NGINX
- Регистрация домена для своего сайта
- Установка SSL сертификатов для работы приложения по протоколу HTTPS на своем сайте
- Генерация ответа с использованием моделей в формате GGUF
- Настройка параметров генерации (
temperature
,top_k
,top_p
,repetition_penalty
) - Возможность указать системный промт (если модель его не поддерживает это будет отображено)
- Выбор количества учитываемых сообщений в истории при подаче промта в модель
- Возможность выбора моделей в формате GGUF по URL ссылке с индикацией прогресса загрузки
После запуска приложения происходит загрузка LLM модели по умолчанию (gemma-2-2b-it-Q8_0.gguf
, 2.7 GB) в папку ./models
Чтобы изменить LLM модель, необходимо вставить прямую ссылку на модель в формате GGUF на странице приложения Load model
Где искать LLM модели в формате GGUF
- python >= 3.10
- llama-cpp-python для инференса моделей в формате GGUF
- gradio для написания веб-интерфейса
- Модель gemma-2-2b в формате GGUF в качестве LLM модели по умолчанию
Работоспособность приложения проверялась на следующих ОС и версиях Python
- Ubuntu 22.04, python 3.10.12
- Windows 10, python 3.12.2
- Android 11 (MIUI 12), Ubuntu 22.04, python 3.10.12
1) Клонирование репозитория
git clone https://github.com/sergey21000/gradio-llamacpp-chatbot.git
cd gradio-llamacpp-chatbot
2) Создание и активация виртуального окружения (опционально)
-
Linux
python3 -m venv env source env/bin/activate
-
Windows CMD
python -m venv env env\Scripts\activate
-
Windows PowerShell
python -m venv env env\Scripts\activate.ps1
3) Установка зависимостей
-
С поддержкой CPU
pip install -r requirements.txt --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/cpu
-
С поддержкой CUDA 12.4
pip install -r requirements.txt --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/cu124
Для установки llama-cpp-python
на Windows с поддержкой CUDA нужно предварительно установить Visual Studio 2022 Community и CUDA Toolkit, как например указано в этой инструкции
Для полной переустановки использовать команду
pip install --force-reinstall --no-cache-dir -r requirements.txt --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/cu124
Инструкции по установке llama-cpp-python для других версий и систем
4) Запуск сервера Gradio
python3 app.py
После запуска сервера перейти в браузере по адресу http://localhost:7860/
Приложение будет доступно через некоторое время (после первоначальной загрузки модели в директорию ./models
)
Для запуска приложения с поддержкой GPU CUDA необходима установка NVIDIA Container Toolkit.
-
С поддержкой CPU
docker run -it -p 7860:7860 -v ./models:/app/models sergey21000/gradio-llamacpp-chatbot:cpu
-
С поддержкой CUDA 12.5
docker run -it --gpus all -p 7860:7860 -v ./models:/app/models sergey21000/gradio-llamacpp-chatbot:cuda
1) Клонирование репозитория
git clone https://github.com/sergey21000/gradio-llamacpp-chatbot.git
cd gradio-llamacpp-chatbot
2) Сборка образа и запуск контейнера
-
С поддержкой CPU
Сборка образаdocker build -t gradio-llamacpp-chatbot:cpu -f Dockerfile-cpu .
Запуск контейнера
docker run -it -p 7860:7860 -v ./models:/app/models gradio-llamacpp-chatbot:cpu
-
С поддержкой CUDA
Сборка образаdocker build -t gradio-llamacpp-chatbot:cuda -f Dockerfile-cuda .
Запуск контейнера
docker run -it --gpus all -p 7860:7860 -v ./models:/app/models gradio-llamacpp-chatbot:cuda
После запуска сервера перейти в браузере по адресу http://localhost:7860/
Приложение будет доступно после первоначальной загрузки модели в директорию ./models
Приложение создавалось для тестирования LLM моделей как любительский проект
Оно написано для демонстрационных и образовательных целей и не предназначалось / не тестировалось для промышленного использования
Инструкции по запуску бота на Android
Этот проект лицензирован на условиях лицензии MIT.