17.08.2026 456 материалов

AI Prompt Lab: как систематизировать промпты без лишних усложнений

Разработчик создал full-stack приложение для управления AI-промптами, намеренно выбрав простую архитектуру и классический стек технологий, чтобы продемонстрировать системный подход там, где большинство хранит заметки в блокнотах.

AI Prompt Lab: как систематизировать промпты без лишних усложнений

В эпоху повального увлечения генеративным AI настоящая проблема — не создание промпта, а его систематизация. AI Prompt Lab пытается решить именно её, и делает это с завидным архитектурным здравым смыслом.

Пока одни разработчики собирают стартапы вокруг очередных обёрток над ChatGPT, другие занимаются менее заметной, но не менее важной инженерной задачей — организацией рабочего процесса с моделями. Именно к таким относится проект AI Prompt Lab: полноценное приложение для хранения, редактирования и использования промптов, построенное на Java 21, Spring Boot, React 19 и PostgreSQL с интеграцией OpenRouter.

Проблема: промпты разлетаются по углам

Кто хоть немного работал с генеративными моделями, знает эту боль: удачный промпт для генерации кода лежит в заметках, инструкция для бота — в чате, а сложная цепочка рассуждений — в текстовом файле на рабочем столе. Через месяц найти нужный вариант практически невозможно, не говоря уже о версионировании и совместном использовании.

Разработчик проекта, скрывающийся под ником certosinolab, предложил простое решение: относиться к промптам как к любому другому структурированному ассету приложения — с CRUD-операциями, аутентификацией и нормальным хранилищем.

Архитектура: нарочитая простота как философия

Самое интересное в проекте — не сам функционал, а архитектурные решения. Автор сознательно отказался от типичного зоопарка технологий:

  • Модульный монолит вместо микросервисов. Бэкенд — единое Spring Boot-приложение со слоистой архитектурой (controller → service → repository → model). Никакой избыточной декомпозиции.
  • React Context вместо Redux или Zustand. Единственное глобальное состояние — данные аутентифицированного пользователя, для чего Context более чем достаточен.
  • Классический стек — Java 21, Spring Boot, PostgreSQL, Vite, TypeScript. Никаких экспериментальных фреймворков или хайповых инструментов.

Такой подход вызывает уважение. В мире, где каждый стартап стремится обрасти Kubernetes-кластером и пятью базами данных ради CRUD-приложения, трезвая оценка реальных потребностей — редкость.

Стек технологий: проверенные решения

Бэкенд строится вокруг Spring Boot с JPA для работы с PostgreSQL. Миграции схемы управляются через Flyway — то есть изменения базы данных версионируются вместе с кодом, а не происходят «сами собой» при старте приложения.

Фронтенд — React 19 с TypeScript и сборщиком Vite. Компоненты разделены по ответственности: страницы, компоненты, контекст, сервисы для API-вызовов, типы. HTTP-запросы изолированы в отдельном сервисном слое, что позволяет менять API без переписывания всего UI.

Как работает промпт-менеджмент

Каждый пользователь получает личное пространство с промптами. Можно создавать, редактировать, удалять и просматривать свои инструкции для моделей. Сортировка выполняется на уровне репозитория — то есть на стороне сервера, а не в клиентском коде.

Кроме того, пользователь может настроить свой аккаунт OpenRouter для работы с различными языковыми моделями. Это ключевой момент: приложение не привязано к конкретному провайдеру, а работает через универсальный агрегатор.

Безопасность: шифрование API-ключей

Отдельного внимания заслуживает обработка сторонних учётных данные. API-ключи OpenRouter шифруются в базе данных с помощью AES в режиме GCM. Расшифровка происходит только при формировании запроса к внешнему сервису. Это правильный подход — ключи не хранятся в открытом виде и не передаются на фронтенд.

Сессии аутентификации реализованы через HTTP-only cookies с BCrypt-хешированием паролей. Ролевая модель разделяет обычных пользователей и администраторов, причём проверка прав доступа происходит на стороне сервера, а не доверяется клиенту.

Чат как точка сборки

Наиболее показательная часть приложения — чат. Здесь сходятся все слои: пользователь выбирает сохранённый промпт, добавляет контекст, React отправляет запрос на Spring Boot, бэкенд подгружает конфигурацию пользователя из PostgreSQL и перенаправляет запрос в OpenRouter, а ответ модели возвращается в интерфейс.

Этот поток наглядно демонстрирует архитектурные границы: каждый слой выполняет свою задачу, не залезая в компетенцию соседнего.

Что можно улучшить

Автор честно признаётся, что проект оставляет место для развития. Среди логичных следующих шагов:

  • Категории и теги для промптов — незаменимы при большом количестве инструкций.
  • Версионирование промптов — возможность отслеживать изменения и возвращаться к предыдущим вариантам.
  • Стриминг ответов — вместо ожидания полного ответа модели progressive отображение через Server-Sent Events.
  • Поддержка нескольких AI-провайдеров — абстракция над OpenRouter, OpenAI, Anthropic и локальными моделями.
  • Сохранение истории чатов — сейчас сессии живут только в рамках открытой страницы.
  • Метрики использования — количество токенов, задержки, стоимость запросов.

Критический взгляд

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

Выбор OpenRouter как единого провайдера — практично, но создаёт зависимость от внешнего сервиса. Шифрование ключей реализовано, но без деталей о ротации ключей или управлении доступом.

Архитектурная простота — одновременно сильная сторона и ограничение. Для индивидуального использования или малой команды это идеально, но для масштабирования потребуется пересмотр некоторых решений.

Вывод

AI Prompt Lab — не революционный проект. Но это добротный пример того, как можно системно подойти к рутинной задаче, не увлекаясь модными стеками и сверхсложными архитектурами.

Разработчик напоминает важный принцип: вводить абстракцию стоит тогда, когда она убирает значимую сложность, а не просто потому, что она существует. В мире, где Junior-разработчики разворачивают Kubernetes для лендинга, такой подход заслуживает внимания.

Полный исходный код проекта доступен на GitHub: Java21_React19_AIPromptLab.