Чат вместо формы
Запрос обычным языком, результат в той же ленте. История подгружается порциями, поэтому длинная переписка не тормозит экран.
- chat
y83 projects / 04 / php + vue + comfyui
в продакшне · 2026
Пользователь пишет запрос в чат обычным языком и получает картинку в той же ленте. Он может дорисовать кадр кистью, расширить его за границы, приложить референсы стиля, покрутить слайдеры понятий, поднять детализацию апскейлом или забрать результат через API. Под этим — своя асинхронная очередь, движок ComfyUI с 14 воркфлоу, собранными вручную под конкретные модели, и внешний контракт для интеграций.
продукт
ComfyUI мощный, но это конструктор: графы, очереди, файлы вместо галереи. Нужен был сервис, где человек описывает результат словами и получает картинку, и API, чтобы встроить генерацию в чужой продукт.
14 методов-сборщиков воркфлоу в одном сервисе: сервис сам собирает граф под выбранную модель и режим из 40 уникальных типов узлов ComfyUI. Плюс свой клиент ComfyUI с ручным разбором WebSocket-кадров, чтобы в интерфейсе был виден живой прогресс по каждой ноде, а не «ждём».
Реестр сокращён до 5 моделей, которые реально работают на 8 ГБ видеопамяти: шесть моделей и их чекпойнты удалены с диска GPU-сервера, видео-режимы вырезаны из продукта, пресеты переключены на Krea 2 Turbo. Освободившееся место ушло в глубину — 12 LoRA под Krea 2, 32 рецепта референсов, 8 слайдеров понятий, перевод Krea 2 Turbo на NVFP4.
Внешний API v2 живёт в отдельном файле роутов без сессионной middleware: bearer-токены, вход по логину и паролю, rate limit 100 запросов в минуту, long-poll ожидания, идемпотентные повторы, JSON-ошибки с кодом, вебхуки на завершение и ошибку. Документация открыта на media.y83.ru/docs — OpenAPI на 1 485 строк и справочник на 1 169 строк.
Сервис соединён с Y83 Code в замкнутый мультимодальный контур через 6 MCP-инструментов: агент по ходу разработки генерирует нужные ассеты, правит детали по PNG-маске или прямоугольникам, переносит стиль по 32 рецептам (до 12 референсов), управляет 8 слайдерами понятий и 15 LoRA (12 Krea 2 + 3 SDXL), проверяет результат через ai_vision и сохраняет готовый файл в проект. В чате виден живой процент, готовая картинка и локальная копия файла — разбор инструментов на отдельной странице этого кейса.
возможности
5 моделей, 9 режимов, 402 пресета и отдельный редактор под Krea 2 Turbo.
Запрос обычным языком, результат в той же ленте. История подгружается порциями, поэтому длинная переписка не тормозит экран.
У каждого пресета есть объяснение, почему промпт работает, рекомендованная модель и свои параметры шагов и CFG. Каталог собирается из одного файла-источника, а не правится в трёх местах.
Рецепт отвечает на вопрос «что взять из картинки»: перенести стиль, сохранить объект, скопировать свет, позу, кадрирование, палитру, материал, фон. У каждого рецепта своя сила по умолчанию — её не нужно угадывать.
Яркость, туман, детализация, фотореализм, насыщенность, резкость, боке, драматичный свет. Шкала от −6 до +6, у каждого полюса описано, что он значит.
Krea 2 Turbo как основная модель, Flux.2 Klein 4B для быстрых прогонов, SDXL-семейство: Juggernaut XL с отдельной версией для инпейнта и Pony Diffusion XL. LoRA — 12 под Krea 2 (Realism V2, IdeoKrea, Dark Brush, Neon Drip, Vintage Tarot и другие) и 3 под SDXL. Апскейлеры RealESRGAN и 4x-UltraSharp.
text2img, img2img, controlnet, ipadapter, inpainting, outpainting, krea2, upscale ×2 и ×4. Режимы без рабочих моделей убраны: каждый оставшийся доведён до конца.
Отдельные графы под семейства моделей из 40 уникальных типов узлов: SD и SDXL, Flux.2, Krea 2 с референсами и слайдерами, ControlNet с двумя картинками, IP-Adapter с четырьмя типами веса, апскейл, инпейнт и аутпейнт.
Одно исходное изображение, несколько результатов и отдельный промпт для каждого. Ветки собираются циклом: свой энкодер, сэмплер, декодер и сохранение на каждый кадр.
Генерация с img2img и регулируемым denoise, кисть для инпейнта прямо в интерфейсе, расширение кадра на четыре стороны с предпросмотром зон до запуска.
Область правки задаётся нарисованной маской или до восьми прямоугольниками в пикселях исходника. Denoise по умолчанию 0,85 для инпейнта и 1,0 для аутпейнта — при 1,0 объект заменяется целиком.
Каждый референс — картинка плюс рецепт и сила влияния. Референсом может быть прошлая генерация, файл с телефона или публичный URL: на сервер он уходит инлайн, а слайдеры и референсы сцеплены в один промпт.
До двух LoRA с разной силой, пост-апскейл ×2 или ×4 внутри воркфлоу, восемь шагов, CFG 1.0 и сэмплер er_sde — турбо-настройки модели. Для черновиков есть четырёхшаговый режим.
Создание кадра и правка готового: промпт, негатив, размеры, шаги, CFG, мегапиксели, seed, до двух LoRA, референсы стиля, слайдеры, апскейл после генерации.
Живой прогресс по id с эхом параметров и исходников плюс список сохранённых задач: работа переживает таймаут, закрытие треда и перезапуск приложения.
Остаток минутного лимита можно спросить до запуска пачки, а ненужную задачу — отменить и не жечь GPU.
Шесть инструментов с параметрами и каталоги движка — рецепты, LoRA, слайдеры — на отдельной странице кейса.
Свой клиент ComfyUI: ручной разбор кадров протокола, свои pong-ответы, разбор бинарных кадров превью. Пользователь видит текущую ноду, процент и текст — «Кэш: 14 нодов», «Сохранение результата».
Высокий и низкий приоритет, у каждой задачи три попытки с откатом и таймаут 600 с. Шедулер забирает готовые задачи, коллектор разбирает результаты пачками по 20.
Bearer-токены, вход по логину и паролю, long-poll ожидания результата, выдача параметров и исходников в статусе, список своих генераций, остаток лимита, идемпотентные повторы, вебхуки на завершение и ошибку.
По текущей базе: 1 064 успешных из 1 097 запусков. Срез 27 октября 2026. Тестов — 209 в 30 файлах.
как работает
Пользователь описывает результат словами или выбирает пресет — вместе с объяснением и параметрами.
GenerationService выбирает нужный из 14 билдеров и собирает граф под выбранную модель и режим.
Задача встаёт в очередь по приоритету, job с тремя попытками и откатом 30 секунд.
WebSocket-клиент разбирает кадры ComfyUI и отдаёт в интерфейс ноду, процент и живое превью.
Картинка попадает в галерею с метаданными; событие уходит подписчикам через DeliverWebhook с откатом.
результаты
строк кода
PHP, Vue, TypeScript, миграции, тестыпресетов
19 категорий, у всех объяснениеLoRA под Krea 2
плюс 3 под SDXLгенераций успешно
1 064 из 1 097 в текущей базеЧисла снимаются с живого сервера скриптом и обновляются при каждой выкладке. Срез 27 октября 2026.
экраны
Здесь появятся настоящие скриншоты продакшн-версии.
листайте вбок · 6 экранов
Чат генерации
главный экран: запрос и результат в одной ленте
Панель параметров
режим, модель, шаги, CFG, референсы, слайдеры
Krea 2 Studio
генерация, кисть, расширение кадра
Каталог пресетов
402 пресета с объяснением каждого
Галерея с инпейнтом
карточки, метаданные, рисование по маске
Дашборд состояния
процессы, память, очередь ComfyUI, кнопки рестарта
технологии
этапы
базовая генерация, асинхронная очередь, статусы, история
5 моделей, 9 режимов, 14 билдеров воркфлоу
402 пресета, Krea 2 Studio с референсами и слайдерами, инпейнт-канвас
токены, вебхуки, rate limit, OpenAPI 3.0, документация
сняли шесть моделей и их чекпойнты, вырезали видео-режимы, переключили пресеты на Krea 2 Turbo, довели тесты до 209 тестов в 30 файлах
вход по логину и паролю, long-poll ожидания, выдача параметров в статусе, идемпотентные повторы, JSON-ошибки, остаток лимита и список своих генераций
вопросы
Обёртка — это UI поверх готового движка. Здесь написан свой клиент ComfyUI с ручным разбором WebSocket-кадров и своими pong-ответами, 14 билдеров воркфлоу под конкретные модели, своя очередь на два приоритета с тремя попытками, каталог из 402 пресета, внешний API v2 с публичной документацией, админка на Filament и 209 тестов в 30 файлах.
В реестре 5 моделей, во внешний API отдаются 2 — Krea 2 Turbo и Flux.2 Klein 4B. Плюс 15 LoRA и 2 апскейлера. Квантование выбрано под 8 ГБ видеопамяти: GGUF для Flux.2 и NVFP4 для Krea 2 Turbo. Параметры у моделей разные: Flux.2 идёт с CFG 1.0 и четырьмя шагами, Krea 2 Turbo — с восемью шагами, CFG 1.0 и сэмплером er_sde.
Под каждую модель подобран свой контур квантования и загрузки: Krea 2 Turbo переведена с Q4_0 GGUF на NVFP4 с обычным CLIPLoader (GGUF-текстенкодер давал артефакты), а Flux.2 работает в GGUF. Модели удерживаются в VRAM между задачами без холодной перезагрузки, батчи защищены от потери кадров при нехватке памяти, а внешний API v2 вынесен в изолированный контур роутинга со строгими JSON-контрактами.
Шесть моделей и их чекпойнты удалены с диска GPU-сервера: на 8 ГБ они не работали и только путали каталог. Видео-режимы вырезаны из продукта — на этой видеопамяти они не подтвердились. Пресеты переключены на Krea 2 Turbo, каталог сокращён до 402 записей в 19 категориях. Убрать оказалось полезнее, чем оставить: меньше выбора — понятнее результат.
Каждое крупное изменение проходит через расследование и план в репозитории: требования, архитектурные решения, разбивка на независимые ветки. Так сделаны интеграция Krea 2, референсы и слайдеры, API v2 и чистка реестра моделей. Каждый закрытый пункт виден в истории коммитов отдельным изменением: 94 коммита за 76 дней (28 июля 2026 — 12 октября 2026).
Y83 Media
Веб-сервис генерации изображений на своём GPU: 5 моделей, 9 режимов, 402 пресета, Krea 2 Studio с референсами, слайдерами и LoRA, асинхронная очередь с живым прогрессом и внешний API v2 с публичной документацией.