Как работает ИИ-генерация в PixInLink
Разбор реального пайплайна: GigaChat, синхронная генерация, Redis-кеш, WebP-оптимизация
Когда вы вставляете
pixinlink.ru/800x400/офис-программисты в img src,
происходит следующее: API принимает URL → проверяет Redis-кеш →
если изображения нет — генерирует синхронно через GigaChat →
оптимизирует WebP → сохраняет в Redis-кеш.
Первый запрос: 10–30 секунд. Все последующие: менее 100 мс.
TL;DR
URL → проверка Redis-кеша →
• Кеш есть (cache hit): изображение отдаётся мгновенно, квота не тратится
• Кеша нет (cache miss): синхронная генерация через GigaChat
→ оптимизация WebP → запись в Redis-кеш → возврат
Первый запрос = 10–30 секунд (генерация GigaChat).
Все повторные = менее 100 мс (Redis-кеш).
Инфраструктура: Yandex Cloud + SberCloud, 152-ФЗ, Россия.
Ключевые понятия
GigaChat
Российская нейросеть от Сбера для генерации изображений по текстовому описанию. Вызывается синхронно через HTTP API. Хостинг: SberCloud, Россия (152-ФЗ).
Синхронная генерация
Когда изображения нет в кеше, запрос ожидает ответа от GigaChat напрямую — без очередей и отложенной обработки. Это простой и надёжный подход: один HTTP-запрос → один ответ.
Redis-кеш
Сгенерированное изображение (base64) сохраняется в Redis. При повторном запросе того же URL изображение отдаётся из кеша мгновенно — без вызова GigaChat и без расхода квоты.
Cache miss / Cache hit
Cache miss: изображения нет в Redis → синхронная генерация через GigaChat (10–30 сек). Cache hit: изображение найдено в Redis → отдаётся мгновенно (<100 мс), квота не расходуется.
Transliteration
Кириллический промпт побуквенно преобразуется в латиницу: «офис» → «ofis». Простая и быстрая операция без внешних API — выполняется в prompt.py перед отправкой в GigaChat.
WebP-оптимизация
После генерации изображение сжимается в WebP (quality=85). Типичный размер: ~50 KB вместо ~300 KB PNG — в 6 раз меньше. Быстрее загрузка, лучше PageSpeed.
Диффузионная модель
Класс нейросетей, обученных генерировать изображения из случайного шума под управлением текста. GigaChat не хранит готовые фото — он создаёт их заново каждый раз. Аналогия: не библиотека, а художник, который рисует по описанию.
Водяной знак
Для пользователей без регистрации на изображение накладывается текст «Made with PixInLink.com» через PIL ImageDraw. Вшивается в пиксели — нельзя убрать через CSS или DevTools. На платных тарифах водяной знак отсутствует.
Как работает «магия»?
Вы вставляете URL в HTML, а браузер получает уникальное изображение. Откуда оно берётся? Это не стоковое фото. Это не шаблон из базы данных. Это генерация искусственным интеллектом — специально для вашего запроса, в реальном времени.
Если вы впервые запрашиваете изображение, нейросеть GigaChat рисует его синхронно — вы получите ответ через 10–30 секунд. Это холодный старт. После генерации изображение сохраняется в Redis-кеш — все последующие запросы отдаются мгновенно (<100 мс).
Почему это важно: запросы о «медленности» и «стоковости» — самые частые у новых пользователей. Эта страница отвечает на оба: медленность — это первый запрос к нейросети, уникальность — это диффузионная модель, а не база фотографий.
Как PixInLink генерирует изображения из URL?
PixInLink принимает URL вида pixinlink.ru/800x400/офис-разработчиков,
проверяет Redis-кеш. Если изображение уже генерировалось
— возвращает его мгновенно (<100 мс), квота не тратится. Если нет —
промпт проходит побуквенную транслитерацию и отправляется в
GigaChat (Сбер).
Результат оптимизируется в WebP (quality=85, ~50 KB),
сохраняется в Redis-кеш и возвращается браузеру.
Первый запрос: 10–30 секунд. Повторные: менее 100 мс.
Пайплайн: что происходит при запросе
Браузер → API
0–5 мсБраузер отправляет GET-запрос. API на FastAPI принимает и парсит URL.
GET /800x400/офис-программисты?style=realistic&seed=42
Валидация: width/height в допустимых пределах, prompt не пустой.
Проверка Redis-кеша
1–3 мс✅ Cache HIT: изображение найдено в Redis → мгновенный возврат (<100 мс). Квота не тратится.
🔴 Cache MISS: изображения нет → переходим к шагу 3.
Transliteration — подготовка промпта
<1 мсКириллический промпт побуквенно заменяется на латиницу: «офис разработчиков» → «ofis razrabotchikov». Простая функция в prompt.py без внешних API.
Это всё, что нужно GigaChat для понимания русского промпта — нейросеть обучена на русскоязычных данных и корректно интерпретирует транслитерацию.
Генерация через GigaChat
8–25 секGigaChat — российская нейросеть от Сбера
Генерация изображений по текстовому промпту через HTTP API. Запрос отправляется синхронно — API ожидает ответа и возвращает его браузеру. Хостинг: SberCloud (Россия, 152-ФЗ).
💡 Fallback: при таймауте или ошибке GigaChat запрос повторяется автоматически. Если и это не помогло — возвращается ошибка.
Постобработка: WebP + водяной знак
0.3–0.5 сек- Decode: base64 ответ GigaChat → PIL Image
- Resize: точное кадрирование до запрошенных width×height
- Watermark (только анонимы): текст «Made with PixInLink.com» накладывается через PIL ImageDraw. Вшивается в пиксели — нельзя убрать через CSS
- WebP: сжатие quality=85, метод 6 → ~50 KB вместо ~300 KB PNG
- Очистка метаданных: все EXIF/IPTC удаляются
Сохранение в Redis-кеш и возврат
1–3 мсГотовое изображение сохраняется в Redis-кеш для мгновенной отдачи при повторных запросах. HTTP-ответ возвращается браузеру с заголовками кеширования.
Ключ кеша формируется из размеров и наличия водяного знака: gen:800x400. Квота списывается однократно при первой генерации. Все повторные запросы того же URL идут из кеша — без расхода квоты.
Почему первый запрос медленный, а повторный мгновенный?
🎂 Аналогия: кондитерская
Представьте, что вы заказываете торт в кондитерской. Первый раз — кондитер печёт его специально для вас (10–30 минут). Но умный кондитер знает: если кто-то закажет такой же — он уже есть в витрине. Следующий покупатель получит его мгновенно. PixInLink работает так же: первая генерация — приготовление, все последующие — готовое изображение в Redis-кеше.
| Параметр | Cache MISS | Cache HIT |
|---|---|---|
| Время ответа | 10–30 секунд | <100 мс |
| Что происходит | Генерация GigaChat | Выдача из Redis-кеша |
| Расход квоты | Да, 1 генерация | Нет |
| Когда происходит | Первый запрос | Все повторные |
💡 500 генераций на Starter — это 500 уникальных URL. Один и тот же URL можно запрашивать любое количество раз — квота тратится 1 раз при первой генерации.
Гарантия уникальности: это не стоковые фото
Каждое изображение — новая нейросетевая генерация. GigaChat — диффузионная модель: она не хранит готовые фотографии, а создаёт изображения из случайного шума, управляемого текстовым описанием.
| Миф | Факт |
|---|---|
| ❌ PixInLink берёт фото из стоков | ✅ Генерация через GigaChat (диффузионная нейросеть) |
| ❌ Изображения совпадут у разных пользователей | ✅ seed=random → каждый раз разные |
| ❌ Нарушаются авторские права | ✅ GigaChat обучен на лицензионных данных Сбера |
| ❌ Изображение изменится со временем | ✅ Redis-кеш хранит стабильную копию |
| ❌ Первый медленный запрос — это баг | ✅ Синхронная генерация: нейросеть рисует впервые для этого промпта |
Инфраструктура: всё в России
Вся инфраструктура PixInLink размещена на территории РФ в соответствии с 152-ФЗ. Данные не передаются за рубеж.
| Компонент | Провайдер | Локация |
|---|---|---|
| API Gateway | Yandex Cloud | Москва / Ярославль |
| Redis (кеш изображений) | Yandex Managed Redis | Россия |
| PostgreSQL | Yandex Managed PostgreSQL | Россия |
| AI-модель | GigaChat (Сбер) | SberCloud, Россия |
Надёжность: при таймауте или ошибке GigaChat запрос повторяется. Базовая обработка ошибок с retry — без сложной fallback-архитектуры, просто и надёжно.
Seed: воспроизводимые изображения для og:image
Seed — это «рецепт» изображения. Добавьте &seed=42 в URL — и PixInLink
всегда сгенерирует одно и то же изображение для одного промпта. Без seed — каждый раз разное.
С seed — всегда одинаковое.
Как это работает в GigaChat
Параметр &seed={число} задаёт начальное значение для генератора случайных чисел. Представьте, что генерация изображения — это бросок кубиков. &seed — это «запись» того, как именно кубики упали.
Воспроизводимость: один и тот же промпт + один и тот же seed = всегда идентичное изображение. Можно вернуться к результату в любой момент.
Контролируемые вариации: если нравится композиция, но хотите изменить деталь — оставьте тот же seed и поменяйте часть промпта. GigaChat сохранит общую структуру, изменив только указанный аспект.
Для og:image стабильность критична: если сегодня у статьи один og:image,
а завтра другой — соцсети покажут старую версию из своего кеша. Решение: зафиксируй seed.
Без seed
pixinlink.ru/1200x630/кот
Random seed каждый раз → разные изображения. Подходит для декоративных элементов.
С фиксированным seed
pixinlink.ru/1200x630/кот?seed=42
Стабильный результат. Идеально для og:image и заголовков статей.
Seed из slug (паттерн)
slug = "kak-pit-kofe" seed = crc32(slug) % 2147483647
CRC32 slug → детерминированное число. Каждый slug = уникальное, но стабильное изображение.
Частые вопросы
-
Почему первое изображение генерируется медленнее?
expand_moreCache miss — нейросеть GigaChat синхронно рисует изображение для этого запроса. Обычно 10–30 секунд. Все повторные запросы отдаются из Redis-кеша мгновенно (<100 мс), квота не расходуется.
-
Расходуется ли квота при повторном запросе?
expand_moreНет. Cache hit не расходует квоту. 500 генераций на Starter — это 500 уникальных URL. Один URL можно запрашивать любое количество раз — квота тратится 1 раз при первой генерации.
-
Что такое GigaChat и почему именно он?
expand_moreGigaChat — российская нейросеть от Сбера для генерации изображений. Обучена на русскоязычных данных, лучше понимает кириллические промпты. Хостится в России (152-ФЗ). Вызывается через HTTP API синхронно.
-
Где хранятся сгенерированные изображения?
expand_moreВ Redis-кеше. При повторном запросе того же URL изображение отдаётся из кеша мгновенно. Срок хранения в кеше ограничен TTL Redis. При очистке кеша следующее обращение вызовет новую генерацию.
-
Могут ли два пользователя получить одинаковое изображение?
expand_moreПри одинаковом prompt + seed — да, Redis-кеш отдаст тот же результат. Изображение уникально создано для этого промпта. Хотите гарантированную уникальность — не указывайте seed (random каждый раз).
-
Как обрабатываются запрещённые промпты?
expand_moreGigaChat имеет встроенный content policy filter. Запросы с недопустимым контентом отклоняются. PixInLink дополнительно проверяет на уровне API Gateway.
-
Можно ли использовать изображения коммерчески?
expand_moreДа, на платных тарифах (без watermark) — полные коммерческие права. На Free (с watermark) — личное использование с указанием PixInLink. Подробнее: pixinlink.ru/terms.
-
Сколько изображений доступно бесплатно?
expand_more12 изображений бесплатно — без регистрации и кредитной карты. С водяным знаком. Для коммерческого использования без водяного знака — тариф Starter (490 ₽/мес, 500 генераций).
Попробуйте пайплайн в действии
12 изображений бесплатно. Без регистрации и кредитной карты.

