ИИ Собеседник для telegram на python с SpeechKit
Алгоритм работы бота:
- бот принимает текстовое или голосовое сообщение
- если получен текст, он отправляется в качестве промта в YandexGPT
- если получено голосовое сообщение:
- оно расшифровывается в текст с помощью SpeechKit
- бот отправляет текст в качестве запроса в YandexGPT
- сгенерированный YandexGPT ответ бот направит в SpeechKit для превращения текста в голос
- бот присылает пользователю ответ в том же формате, в котором пользователь присылал запрос: текст в ответ на текст, голос в ответ на голос
Файлы папки проекта
- bot.py — код бота
- database.py — код для работы с базой данных
- speechkit.py — код для работы со SpeechKit
- yandex_gpt.py — код для работы с Yandex GPT
- validators.py — функции для проверки лимитов
- config.py — файл для хранения полезных констант проекта
- creds.py — файл для хранения данных учётной записи
- text.py — файл с текстовыми сообщениями бота
- requirements.txt — файл с зависимостями
- README.md — описание и инструкция к проекту
- Приватный SSH ключ
- Имя пользователя сервера
- IP сервера
- Ссылка для клонирования бота, в данном случае:
git clone https://github.com/karukador/SPEECHKIT_BOT
- Получите приватный ключ для доступа к серверу
- Используя ключ, подключитесь к удаленному серверу с помощью команды:
ssh -i "\путь\к\ключу" <username>@<ip>
- При первом подключении подтвердите свои действия командой
yes
- Установите пакетный менеджер
pip
:sudo apt install python3-pip -y
- Если при установке появится окно - нажмите Tab, затем Enter
- Установите утилиту
tmux
для запуска проекта в фоне:sudo apt install tmux -y
- Если при установке появится окно - нажмите Tab, затем Enter
- Перейдите/создайте и перейдите в директорию, в которой хотите разместить бота на сервере (необязательно)
- Выполните команду клонирования репозитория:
git clone https://github.com/karukador/SPEECHKIT_BOT
- Перейдите в склонированный проект командой:
cd SPEECHKIT_BOT
- Установите все необходимые библиотеки с помощью
pip
и нашего файликаrequirements.txt
:pip install -r requirements.txt
- Перейдите в папку
creds
:cd creds
- Зайдите в файл
folder_id.txt
:nano folder_id.txt
- В открытом окне запишите ваш folder id
- Выйдите, используя сочетание клавиш
CTRL+X
- Для подтверждения изменений нажмите
y
- Повторите аналогичные действия для файла
bot_token.txt
- Запустите бота командой:
python3 bot.py
- Такой запуск продлится до закрытия терминала
- Остановите бота сочетанием клавиш
CTRL+C
- Запустите установленную на 2 шаге утилиту tmux c помощью команды:
tmux
- В новом открывшемся терминале снова запустите бота командой:
python3 bot.py
- Теперь можно закрыть терминал - бот продолжит работу.
Чтобы выключить запущенного через tmux бота, нужно заново подключиться по ssh к удалённой машине и выполнить команду
tmux ls
Она выведет все активные запуски tmux, например:
0: 1 windows (created Sun Jan 21 20:31:54 2024)
- Эта запись показывает, во сколько был запущен бот. После этого можно выполнить команду, чтобы выключить бота с заданным номером:
tmux kill-session -t <номер_бота>
- Если был запущен только один бот, то его выключит команда:
tmux kill-session -t 0