Продвинутый генератор промптов на основе шаблонов с поддержкой множественных запросов к различным 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 или выше
- Клонировать репозиторий:
git clone https://github.com/maxim-kolpakov/prompt-generator.git
cd prompt-generator- Собрать проект:
./gradlew build- Запустить приложение:
./gradlew run- Настроить ключи для использования API в настройках
- В главном экране введите текст шаблона с использованием переменных в формате
{{variable_name}} - Переменные будут автоматически обнаружены и добавлены в редактор переменных
- Для каждой переменной введите одно или несколько значений (разделяя их запятыми)
- Сохраните шаблон, нажав кнопку "Save"
- Убедитесь, что все переменные имеют заданные значения
- Нажмите кнопку "Generate Prompts"
- Отслеживайте прогресс и просматривайте прогресс в реальном времени
- После завершения генерации сохраните результаты в файлы кнопкой "Save All"
- Перейдите на вкладку "Settings"
- Выберите провайдера по умолчанию
- Для каждого провайдера можно настроить:
- API ключ
- Базовый URL
- Модель по умолчанию
- Ограничения по запросам
Конфигурация LLM-провайдеров хранится в файле config/llm-config.yaml. Вы можете указать путь к файлу конфигурации через переменную окружения LLM_CONFIG_PATH.
API-ключи также могут быть заданы через переменные окружения:
LLM_API_KEY- ключ для провайдера по умолчаниюLLM_OPENAI_API_KEY- ключ для OpenAILLM_ANTHROPIC_API_KEY- ключ для AnthropicLLM_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
Особая благодарность Александру Нозику за руководство моей работой.
