Code Helper с использованием Gradio и Qwen

Этот проект реализует помощника для работы с кодом, используя Gradio для интерфейса и модель Qwen для генерации кода. Нужен для помощи с разработкой и обучением.

Проект создан в рамках обучающей программы на вебинаре.

Возможности

  • Интерфейс на основе Gradio: Простое веб-приложение для взаимодействия с помощником.
  • Модель Qwen: Предобученная языковая модель для помощи в написании кода.
  • Настраиваемые параметры: Возможность контролировать количество генерируемых токенов, температуру, и другие параметры через интерфейс.

Структура проекта

  • model.pipeline: Инициализация модели и токенизатора Qwen2-7B-Instruct, которые загружаются и используются для генерации ответов.
  • Интерфейс на основе Gradio: Окно чата, где пользователи могут отправлять запросы и получать ответы.
  • Поддержка Docker: Dockerfile и docker-compose.yml для контейнеризации и запуска с поддержкой GPU через NVIDIA runtime.

Как это работает

Приложение обрабатывает ввод пользователя, передавая его в языковую модель. Модель генерирует ответ, который отображается через интерфейс Gradio. Весь контекст чата хранится во время диалога.

Установка

Требования

  • Python: Версия 3.10 или выше.
  • Docker: Для контейнеризированного запуска с поддержкой GPU.

Шаги установки

  1. Клонируйте репозиторий:

    git clone https://github.com/KirillErokhin/code_helper.git
    cd code-helper
  2. Создайте окружение и установите зависимости:

    Если вы планируете запускать приложение локально, сначала создайте окружение, а затем установите необходимые пакеты Python:

    pip install -r requirements.txt
  3. Запуск с Docker:

    Постройте и запустите приложение в контейнере с поддержкой GPU:

    docker compose up --build

    Это запустит интерфейс Gradio на порту 7860. Откройте его в браузере по адресу http://localhost:7860.

Локальный запуск

Чтобы запустить приложение без Docker:

python3 main.py

Интерфейс Gradio будет доступен через ваш браузер.

Использование

  • Откройте веб-интерфейс
  • Настройте параметры модели, такие как: промпт, количество токенов, температура и т.д. для кастомизации ответа.
  • Введите запрос.
  • Помощник сгенерирует код, который будет отображен в чате.

Пример запроса

Напиши функцию на Python для реверса списка и добавь документацию к коду.

Сгенерированный ответ:

def reverse_list(lst):
    """
    Реверсирует переданный список.

    Параметры:
        lst (list): Список, который нужно реверсировать.

    Возвращает:
        list: Новый список с элементами в обратном порядке.
    """
    return lst[::-1]

Настройка

  • Вы можете изменить системный промпт в Gradio, чтобы настроить поведение модели.
  • Для изменения портов или параметров контейнера отредактируйте файл docker-compose.yml.

TODO:

  • [] - Возможность добавления картинок на основе мультимодальных open source моделей
  • [] - Поддержка FastAPI с стримингом и выводом в Gradio
  • [] - Возможность выбора модели для инференса
  • [] - Рефакторинг кода