Skip to content

Repository files navigation

MIPT SPC Prompt Generator

Banner

Продвинутый генератор промптов на основе шаблонов с поддержкой множественных запросов к различным LLM-провайдерам.

Автор и руководитель проекта

Автор: Колпаков Максим, студент 5 курса ФПМИ МФТИ

Руководитель: Александр Нозик

Описание

MIPT SPC Prompt Generator - приложение, которое позволяет создавать шаблоны промптов с переменными и генерировать множество вариаций на основе заданных значений переменных. Приложение разработано для удобной работы с LLM-моделями (Large Language Models) и поддерживает различных провайдеров, включая OpenAI, Anthropic Claude, Google Gemini и Ollama.

Основная идея проекта заключается в автоматизации процесса создания и отправки серии запросов в LLM-модели, а также в организованном сборе и обработке полученных результатов.

На текущий момент проверен только Gemini API (в России нужен иностранный IP...).

Технологии

  • Kotlin и Jetpack Compose для десктопного интерфейса
  • Koin для внедрения зависимостей
  • Kotlinx Coroutines для асинхронных операций
  • Ktor Client для HTTP-запросов
  • Kotlin Serialization для работы с JSON/YAML
  • SLF4J & Logback для логирования

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

  • 🧠 Создание шаблонов с переменными в формате {{variable_name}}
  • 🔄 Подстановка нескольких значений для каждой переменной
  • ⚡ Параллельная генерация множества запросов к LLM-моделям
  • 📊 Отслеживание прогресса в реальном времени
  • 💾 Сохранение и загрузка шаблонов
  • 📝 Экспорт результатов в файлы Markdown/Text
  • 📅 Просмотр истории генераций
  • ⚙️ Поддержка различных LLM-провайдеров (OpenAI, Anthropic, Google Gemini, Ollama)
  • 🔒 Локальное хранение API-ключей и конфигураций
  • 🌓 Темный и светлый режимы интерфейса (да, да, даже это есть!)

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

Системные требования

  • JDK 17 или выше

Запуск из исходников

  1. Клонировать репозиторий:
git clone https://github.com/maxim-kolpakov/prompt-generator.git
cd prompt-generator
  1. Собрать проект:
./gradlew build
  1. Запустить приложение:
./gradlew run
  1. Настроить ключи для использования API в настройках

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

Создание шаблона

  1. В главном экране введите текст шаблона с использованием переменных в формате {{variable_name}}
  2. Переменные будут автоматически обнаружены и добавлены в редактор переменных
  3. Для каждой переменной введите одно или несколько значений (разделяя их запятыми)
  4. Сохраните шаблон, нажав кнопку "Save"

Генерация промптов

  1. Убедитесь, что все переменные имеют заданные значения
  2. Нажмите кнопку "Generate Prompts"
  3. Отслеживайте прогресс и просматривайте прогресс в реальном времени
  4. После завершения генерации сохраните результаты в файлы кнопкой "Save All"

Настройка провайдеров LLM

  1. Перейдите на вкладку "Settings"
  2. Выберите провайдера по умолчанию
  3. Для каждого провайдера можно настроить:
    • API ключ
    • Базовый URL
    • Модель по умолчанию
    • Ограничения по запросам

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

Конфигурация LLM-провайдеров хранится в файле config/llm-config.yaml. Вы можете указать путь к файлу конфигурации через переменную окружения LLM_CONFIG_PATH.

API-ключи также могут быть заданы через переменные окружения:

  • LLM_API_KEY - ключ для провайдера по умолчанию
  • LLM_OPENAI_API_KEY - ключ для OpenAI
  • LLM_ANTHROPIC_API_KEY - ключ для Anthropic
  • LLM_GEMINI_API_KEY - ключ для Google Gemini

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

- src/main/kotlin/com/promptgenerator/
  - config/         # Конфигурация приложения и LLM-провайдеров
  - data/           # Слой данных и репозитории
    - repository/   # Реализации репозиториев
    - source/       # Источники данных (локальные и удаленные)
      - local/      # Локальное хранение данных
      - remote/     # API-клиенты для LLM-провайдеров
  - di/             # Конфигурация внедрения зависимостей (Koin)
  - domain/         # Бизнес-логика и модели предметной области
    - model/        # Модели данных
    - repository/   # Интерфейсы репозиториев
    - service/      # Сервисные классы
    - usecase/      # Классы сценариев использования
  - ui/             # Пользовательский интерфейс (Compose)
    - components/   # Переиспользуемые компоненты UI
    - icons/        # Иконки приложения
    - screen/       # Экраны приложения
    - theme/        # Темы и стили
    - viewmodel/    # View-модели

Планируемые улучшения

  • Расширенная логика зависимостей между переменными
  • Импорт переменных из CSV/JSON файлов
  • Поддержка дополнительных LLM-провайдеров
  • Управление контекстами шаблонов
  • Аналитика результатов
  • Переход на мультиплатформу по возможности

Лицензия

MIT License

Благодарности

Особая благодарность Александру Нозику за руководство моей работой.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages