Бился долго, решил быстро, или бото-новости с зайчушками-хоррорюшками 18+
Автор: SangoЗа последние пару месяцев каких-то больших прорывов в моём самописном телеграм-боте по управлению Stable Diffusion (установленной на персональном ПК) не было. Чутка рефакторинга, добавил несколько стилей для работы с моделями Pony Diffusion (последние 2-3 недели сижу исключительно на них). Из чуть более «крутых» фишек:
1. Сделал функцию «перевода в стиле таблица». Удобно (на самом деле нет) для разбора найденных в интернете промптов, т.к. мой уровень английского весьма мал. Выводит построчно каждый токен из оригинального промпта с его переводом на русский язык.
2. Добавил апскейлер. Теперь могу увеличить в 2 раза последнюю сгенерированную картинку, или просто выставить чекбокс и апскейлить все генерируемые изображения.
К слову — после добавления этих фишек ни разу ими не пользовался
А последние пару недель мою голову занимала задачка - прикрутить каким-либо способом к боту форму редактирования промпта...
Текущая логика бота такова, что после ввода некого запроса (своего собственного или найденного в интернете), работа идет именно с ним. Можно прогонять запрос через разные модели, менять параметры, размер генерации, добавлять стили, специальные ключевые слова, варьируя таким образом конечный результат в некоторых пределах.
Но...
...изначально введённый запрос остается неизменным. Это значит что если в начальном запросе была указана баба с огромными титьками и красными труселями — маловероятно что титьки сами по себе сдуются а трусы внезапно поменяют цвет с красного на зелёный...
...разве что сама стабла решит
выебнутьсяпроявить фантазию
Чтобы внести изменения, нужно заново вводить (или копировать в строку ввода) запрос с правками, что не есть удобно. Плюс при таком подходе начинается новая сессия, а хотелось бы чтобы изменения появились в рамках старой (хотя все на что влияет сессия - это запаковка результатов генераций в одну общую папку).
Как же быть?
Первая мысль которая сама собой возникла в голове — прикрутить к боту Web Apps (есть такая фишка у телеграма), представляющий из себя форму, в которой смогу редактировать запрос. Технологично, современно, все дела. Однако почитав мануалы и посмотрев примеры, понял что для моего уровня владения веб-технологиями, задача, скажем так, сложноватая. Во всяком случае настолько заморачиваться не хотелось. Так что...
Более дуболомно-простая идея которую могу в принципе осилить — генерировать на стороне бота статичный HTML-файл, содержащий textarea с заполненным изначальным запросом, и кнопку отправки изменений. Не буду подробно рассказывать какие препоны возникли на моём пути, скажу только что столкнулся с непонятным для себя моментом: тестовый HTML-файл корректно отрабатывал при запуске с ПК, и не работал когда открывал его через вебвью в мобильном клиенте телеграмм. Конкретно не срабатывала кнопка. То ли телега в целях безопасности в принципе не дает работать js в просматриваемых файлах или отправлять запросы, то ли не учел какие-то нюансы мобильной платформы... короче хрен его знает что там не взлетело...
Подустав, чуть было не опустил руки...
...но решил погуглить ещё какие-либо варианты. 5 минут копаний в интернете в перерывах между просмотром сисек — и я внезапно нахожу информацию что в inline-кнопки можно добавить опцию switch_inline_query_current_chat, которая просто введет в пользовательскую строку ввода название бота и ту информацию, которую укажешь для опции.
Как же это в итоге выглядит?
Собственно, не мудрствуя лукаво, взял из интернета такой вот запрос...
<lora:Kenva:1.0> score_9, knva, halftone effect, mask, 1girl, solo, veil, huntress, rabbit mask, blood on face, looking at viewer, black hair, white eyes, bloody, large breasts, horror, bunnygirl, bunnysuit, creepy, horror manga, black and white, red blood, teeth
Negative prompt: saggy tits, sagging breasts, too many fingers,, oversaturated, disfigured, poorly drawn, bad : wrong anatomy, extra | missing | floating | disconnected limb, mutated, blurry
Steps: 20, Size: 832x1216, Seed: 1123696223, Sampler: DDIM, CFG scale: 7, Clip skip: 2
...и запихнул его в бота:
Теперь жмем на кнопку editor в меню:
После чего в поле ввода автоматически подставляется наш исходный запрос:
Вносим незначительные правки…
…и получаем результат!
Способ простой, примитивный. Реализовал тоже топорно, потому имеются некоторые косяки (нет нормальной поддержки флагов) которые буду в дальнейшем исправлять. Тем не менее оно работает!
А уже сегодня утром по дороге на работу появились некоторые новые идеи которые записал в бэклог. Так что бот не только живет и производит контент, но и снова потихоньку развивается.
Такие вот новости)