Skip to content

SCMARS/llm-telegram_bot

Repository files navigation

LLM Telegram Bot

О проекте

LLM Telegram Bot - это проект, который позволяет взаимодействовать с большими языковыми моделями (LLM) через Telegram. Бот поддерживает различные режимы работы, включая чат и режим блокнота, имеет возможность сохранения истории сообщений, поддерживает различные шаблоны промптов и многое другое.

Основные возможности:

  • Поддержка различных шаблонов чата
  • Режимы чата и блокнота
  • Отдельные сессии для всех пользователей (по chat_id)
  • Локальное сохранение истории сообщений - разговор не будет потерян при перезапуске сервера
  • Индикация "X печатает" во время генерации ответа
  • Кнопки: имперсонация, продолжение предыдущего сообщения, регенерация последнего сообщения, удаление последних сообщений из истории, сброс истории, меню загрузки новых персонажей
  • Возможность загрузки новых персонажей из директории text-generation-webui\characters
  • Возможность загрузки новой модели во время разговора
  • Префиксы сообщений: "+" или "#" для имперсонации, "-" или "!" для замены последнего сообщения бота, "++" для замены имени бота, "--" для замены вашего имени, "==" для добавления сообщения в контекст, "📷" для создания изображения через SD API
  • Сохранение/загрузка истории в чате путем скачивания/пересылки .json файла
  • Встроенный автоперевод (можно настроить язык модели/пользователя)
  • Получение текстовых файлов (код, текст и т.д.)
  • Генерация голоса (silero), варианты для английского и русского языков
  • Опция translation_as_hidden_text в .cfg - если вы хотите изучать английский с ботом
  • telegram_users.txt - список разрешенных пользователей (если пуст - разрешено всем)
  • Антифлуд - одно сообщение в 15 секунд от одного пользователя
  • Улучшенный режим групповых чатов

Установка и запуск

Установка (автономное приложение):

  1. Клонируйте репозиторий:
    git clone [email protected]:SCMARS/llm-telegram_bot.git
  2. Установите зависимости:
    pip install -r llm_telegram_bot\requirements_app.txt

Запуск (автономное приложение):

  1. Получите токен бота у https://t.me/BotFather
  2. Скопируйте токен бота в configs\telegram_token.txt
  3. Переместите файл модели в models\
  4. Укажите путь к модели в параметре model_path в configs\app_config.json
  5. Запустите run.cmd (Windows) или run.sh (Linux)

Дополнительно:

(опционально) Для использования exllama:

git clone https://github.com/turboderp/exllama source\generators\exllama
pip install -r source\generators\exllama\requirements.txt

(опционально) Для использования exllamav2:

git clone https://github.com/turboderp/exllamav2 source\generators\exllamav2
cd source\generators\exllamav2
python setup.py install --user

(опционально) Для использования llama.cpp с ускорением GPU переустановите abetlen/llama-cpp-python по инструкции: llama-cpp-python#installation-with-hardware-acceleration или этому руководству для Windows


Установка (режим расширения):

  1. Установите oobabooga/text-generation-webui, добавьте модель, настройте все необходимые параметры
  2. Запустите cmd_windows.bat или cmd_linux.sh для активации venv
  3. Клонируйте этот репозиторий в "text-generation-webui\extensions":
    git clone https://github.com/innightwolfsleep/llm_telegram_bot extensions\telegram_bot
  4. Установите зависимости:
    pip install -r extensions\telegram_bot\requirements_ext.txt

Использование (режим расширения):

  1. Получите токен бота у https://t.me/BotFather
  2. Добавьте токен бота в файл extensions\telegram_bot\configs\telegram_token.txt или в окружение oobabooga
  3. Добавьте флаги в CMD_FLAGS.txt: --api --extension telegram_bot
  4. Запустите соответствующий скрипт start_OS (прямая интеграция в настоящее время недоступна)

Установка/использование (Google Colab):

  1. Запустите блокнот manuals/llm_telegram_bot_cublas.ipynb
  2. Установите, настройте токен бота, запустите

(опционально) Если у вас проблемы с интернетом, измените proxy_url в app_config.json на ваш собственный прокси. Например: https://127.0.0.1:10808

Конфигурация

Файлы конфигурации:

  • app_config.json - конфигурация для запуска в качестве автономного приложения (run.sh или run.cmd)
  • ext_config.json - конфигурация для запуска в качестве расширения для oobabooga/text-generation-webui

Основные параметры конфигурации:

x_config.json
    bot_mode=admin  
        Режим работы бота:
            - admin - бот отвечает всем в режиме чата. Все кнопки, включая настройки для всех, доступны всем. (По умолчанию)
            - chat - бот отвечает всем в режиме чата. Все кнопки, кроме настроек для всех, доступны всем. (Рекомендуется для общения)
            - chat-restricted - то же, что и chat, но пользователь не может изменить персонажа по умолчанию
            - persona - то же, что и chat-restricted, но кнопки сброса/регенерации/удаления сообщений также недоступны
            - notebook - режим блокнота. Префиксы не добавляются автоматически, только "\n" разделяет сообщения пользователя и бота. Ограничения как в режиме chat.
            - query - то же, что и notebook, но без истории. Каждый вопрос для бота как новый разговор без влияния предыдущих вопросов

    user_name_template=
        Шаблон имени пользователя, полезно для группового чата.
        Если пусто, бот всегда получает имя пользователя по умолчанию - You. По умолчанию даже в групповых чатах бот воспринимает всех пользователей как единую сущность "You".
        Но можно заставить бота воспринимать имена пользователей Telegram с помощью шаблонов:
            FIRSTNAME - имя пользователя (Jon)
            LASTNAME - фамилия пользователя (Dow)
            USERNAME - никнейм пользователя (superguy)
            ID - идентификатор пользователя (999999999)
        Так, user_name_template="USERNAME FIRSTNAME ID" преобразуется в имя пользователя "superguy Jon 999999999"
        Но если вы планируете использовать шаблон и групповой чат - вы должны добавить знак "\n" в stopping_strings, чтобы предотвратить имперсонацию бота!!!

    generator_script=GeneratorLlamaCpp
        Название скрипта генератора (папка generators):
            - generator_exllama - на основе llama-cpp-python, рекомендуется
            - generator_llama_cpp - на основе llama-cpp-python, рекомендуется
            - generator_llamacpp_server_chat - использует сервер llama.cpp
            - generator_llamacpp_server_completions - использует сервер llama.cpp
            - generator_ollama_chat - использует сервер ollama_chat
            - generator_ollama_completions - использует сервер ollama_competition
            - generator_langchain_llama_cpp - на основе langchain+llama
            - generator_transformers - на основе transformers, не тестировалось
            - generator_text_generator_webui_openapi - использует расширение OpenAPI oobabooga/text-generation-webui
            - (СЛОМАНО) generator_text_generator_webui - модуль для интеграции в oobabooga/text-generation-webui (в настоящее время сломан)
            - (УСТАРЕЛО) generator_text_generator_webui_api - использует API oobabooga/text-generation-webui (старая версия API)

    model_path=models\llama-13b.ggml.q4_0.gguf
        Путь к файлу модели или директории

    characters_dir_path=characters
    default_char=Example.yaml
        Персонаж по умолчанию и путь к папке с персонажами

    presets_dir_path=presets
    default_preset=Shortwave.yaml
        Пресет генерации по умолчанию и путь к папке с пресетами

    model_lang=en
    user_lang=en
        Язык модели и пользователя по умолчанию. Язык пользователя может быть изменен пользователями индивидуально.

    html_tag_open=<pre>
    html_tag_close=</pre>
        Теги для ответов бота в Telegram. По умолчанию - предварительно отформатированный текст (pre)

    history_dir_path=history
        Директория для истории пользователей

    token_file_path=configs\\telegram_token.txt
        Токен бота. Спросите у https://t.me/BotFather

    admins_file_path=configs\\telegram_admins.txt
        Пользователи, чьи ID в файле admins переключаются в режим администратора и могут выбирать настройки для всех (настройки генерации и модель)

    users_file_path=configs\\telegram_users.txt
        Если в файле users есть хотя бы один ID - бот будет игнорировать всех пользователей, кроме этого ID (или ID). Даже администратор будет проигнорирован.

    generator_params_file_path=configs\\telegram_generator_params.json
        Параметры генерации текста по умолчанию, перезаписываются выбранным пресетом

    user_rules_file_path=configs\\telegram_user_rules.json
        Матрица правил пользователя

    telegram_sd_config=configs\\telegram_sd_config.json
        Конфигурация API Stable Diffusion

    stopping_strings=<END>,<START>,end{code}
        Настройки генерации - какой шаблон текста останавливает генерацию текста? Добавьте "\n", если бот отправляет слишком много текста.

    eos_token=None
        Настройки генерации

    translation_as_hidden_text=on
        Если "on" и язык модели/пользователя не совпадают - перевод будет написан под спойлером. Если "off" - перевод без спойлера, без оригинального текста в сообщении.

    sd_api_url="http://127.0.0.1:7860"
        URL API Stable Diffusion, необходим для использования префиксов "фото"

    proxy_url
        Для обхода блокировки провайдера

Дополнительные файлы конфигурации:

  • generator_params.json - конфигурация для генератора
  • sd_config.json - конфигурация для Stable Diffusion
  • telegram_admins.txt - список ID пользователей, принудительно переведенных в режим администратора. Если telegram_users не пуст - должны быть также в telegram_users!
  • telegram_users.txt - список ID пользователей (или групп), которым разрешено взаимодействовать с ботом. Если пусто - разрешено всем
  • telegram_token.txt (можно использовать .env вместо этого) - токен бота Telegram
  • telegram_user_rules.json - конфигурация видимости кнопок для различных режимов бота

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5