Это проект по созданию БЕЗУМНОГО ЛИСА. ЛИС — это не просто бездушная машина. Это гениальная персона, способная найти общий с вами язык, каким бы грязным он ни был. Просто сохраните ваш телеграм чат в формате json, обучите на нём ЛИСА и смотрите, как он начинает повторять за вами...
В папке ./models/ можно найти нескольких моделей, реализающих данного бота:
seq2seq— seq2seq модель с применением Luong Attention Mechanism. Бот создан на основе данного туториалаtransformer— файн-тьюнинг ai-forever/rugpt3small_based_on_gpt2
Для обучения моделей сохраните ваш телеграм чат без сохранения медиа:
Три точки в верхнем правом углу -> Экспорт истории чата -> Формат: Машиночитаемый JSON -> Экспортировать
На выходе вы получите json-файл для обучения
-
Для обучения
seq2seqмодели используйте методtrain()классаSeq2SeqChatbot. Укажите путь кjson-файлу в переменнойCHAT_HISTORY_PATH. Запустите файл./models/seq2seq/model.pyкак модуль. Для этого в корне проекта выполните командуpython -m models.seq2seq.model. -
Для обучения
transformerукажите путь кjson-файлу в методеprepare_data()классаFineTunerв файле./models/transformer/finetuner.py.
finetuner = FineTuner()
dataset_path = finetuner.prepare_data()
finetuner.fine_tune(dataset_path, output_name='fine_tuned_model_gpt_2')Удобнее всего обучение производить в ipynb-блокнотах:
Зависимости для сервера и телеграм-бота распологаются в ./requirements.txt
Зависимости для каждой модели распологаются в ./models/<НАЗВАНИЕ_МОДЕЛИ>/requirements.txt
Существует 2 способа запуска бота:
- Настроить модель в файле
./bot_local.py(на данный момент стоит seq2seq-версия) - Указать значения следующих переменных среды:
TOKEN— токен телеграм-ботаBOT_USERNAME— id ботаCHAT_ID— id чата, в котором находится бот
- В случае использования seq2seq модели, указать в
CHECKPOINT_PATHпуть к архиву с чекпоинтом - Выполнить команду:
python bot_local.py
- Склонировать репозиторий на удаленный сервер
- В
./server.pyуказать нужную модель (на данный момент стоит transformer-версия) - Запустить сервер командой
uvicorn server:app --host 0.0.0.0 --port "<ПОРТ>" - Также можно использовать данный Dockerfile (настроен для работы на huggingface spaces):
FROM python:3.12
RUN useradd -m -u 1000 user
USER user
ENV HOME=/home/user \
PATH=/home/user/.local/bin:$PATH
WORKDIR $HOME/app
COPY --chown=user . $HOME/app
RUN pip install --no-cache-dir --upgrade -r ./requirements.txt
RUN pip install --no-cache-dir -r models/transformer/requirements.txt
RUN pip install --no-cache-dir -r models/seq2seq/requirements.txt
EXPOSE 7860
CMD ["uvicorn", "server:app", "--host", "0.0.0.0", "--port", "7860"]- В файле
./bot_server.pyуказать значения переменных среды (аналогично способу 1), а в функцииhandel_response()указать ссылку на веб-сервер
Теперь, когда ЛИС полностью прознал все ваши секреты, которыми вы так бездумно делились в ваших чатах, пришло время сидеть и наслаждаться пёрлами ЛИСА