loading
Возможности / Как работает ИИ-генерация

Полный разбор пайплайна: Kandinsky 3.1, CDN-кеш, fallback FLUX и 152-ФЗ

Когда вы вставляете pixinlink.ru/800x400/офис-программисты в img src, происходит следующее: API принимает URL → вычисляет SHA-256 хеш параметров → проверяет кеш → если изображения нет, отправляет задачу в очередь Celery → переводит промпт через Yandex Translate → генерирует через Kandinsky 3.1 (или FLUX.1 как резервный) → оптимизирует WebP → сохраняет в Yandex Object Storage → кеширует на 1 год в CDN с 140 точками присутствия.

Первый запрос: 8–10 секунд. Все последующие: менее 100 мс.

TL;DR

URL → SHA-256 хеш → Redis проверка →
  • Кеш есть: 302 CDN URL, <100 мс, квота не тратится
  • Кеша нет: SVG placeholder → Celery → Yandex Translate → Kandinsky 3.1
    → WebP → S3 → CDN (140 POP) → Redis
Первый запрос = 8 секунд (генерация).
Все повторные = мгновенно (кеш).
Инфраструктура: Yandex Cloud + Selectel, 152-ФЗ, Россия.

Ключевые факты

8 сек

P95 latency первой генерации через Kandinsky 3.1

<100 мс

TTFB для кешированного изображения — CDN edge

140 POP

точек присутствия Yandex Cloud CDN в РФ и СНГ

11 девяток

durability Yandex Object Storage — 99.999999999%

SHA-256

хеш параметров URL — immutable-кеш, никогда не перезаписывается

2 AI

Kandinsky 3.1 primary + FLUX.1-schnell fallback

0

перезаписей S3-объектов — immutable, новый хеш = новый объект

30%

opacity watermark на Free — вшит в пиксели, не CSS-слой

Ключевые понятия

AI-пайплайн

Цепочка обработки запроса: от текстового промпта до готового изображения. Включает трансляцию, улучшение промпта, нейросетевую генерацию, постобработку, загрузку в хранилище и CDN-доставку. В PixInLink — автоматический, асинхронный, с fallback-моделью.

Kandinsky 3.1

Российская диффузионная нейросеть от Sber (SberCloud). Обучена на русскоязычных данных — лучше понимает кириллические промпты, чем Midjourney или DALL-E. Первичная AI-модель в PixInLink. FLUX.1 — резервная.

CDN (Content Delivery Network)

Сеть серверов в разных городах, каждый хранит копию изображения. Yandex Cloud CDN: 140 точек присутствия в РФ и СНГ. Пользователь получает изображение с ближайшего сервера — скорость <100 мс.

Immutable кеш

Изображение записывается в S3 один раз и никогда не изменяется. URL содержит SHA-256 хеш всех параметров — любое изменение создаёт новый объект. Это гарантирует, что ваш og:image не изменится неожиданно.

Cache miss / Cache hit

Cache miss: изображения нет в кеше → нужна генерация (~8 сек). Cache hit: изображение уже создано → CDN отдаёт мгновенно (<100 мс), квота не расходуется. После первой генерации все повторные запросы — cache hit.

Диффузионная модель

Класс нейросетей, обученных генерировать изображения из случайного шума под управлением текста. Kandinsky не хранит готовые фото — он создаёт их заново каждый раз. Аналогия: не библиотека, а художник, который рисует по описанию.

Как работает «магия»?

Вы вставляете URL в HTML, а браузер получает уникальное изображение. Откуда оно берётся? Это не стоковое фото. Это не шаблон из базы данных. Это генерация искусственным интеллектом — специально для вашего запроса, в реальном времени.

Если вы впервые запрашиваете изображение, браузер покажет SVG-заглушку на 8–10 секунд, пока нейросеть Kandinsky 3.1 рисует картинку. Это нормально: холодный старт. После первой генерации изображение кешируется на 1 год — все последующие запросы мгновенны.

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

Как PixInLink генерирует изображения из URL?

PixInLink принимает URL вида pixinlink.ru/800x400/офис-разработчиков, вычисляет SHA-256 хеш параметров и проверяет CDN-кеш. Если изображение уже генерировалось — возвращает его мгновенно (<100 мс). Если нет — создаёт задачу: переводит промпт на английский (Yandex Translate), генерирует через Kandinsky 3.1 или FLUX.1, оптимизирует в WebP, сохраняет в Yandex Object Storage и кеширует на 1 год через CDN (140 POP). Первый запрос: 8–10 секунд. Повторные: менее 100 мс.

10 шагов от URL до изображения: полный пайплайн

1

Браузер → API Gateway (FastAPI)

0–5 мс

Браузер отправляет GET-запрос. API на FastAPI (Python 3.12) принимает и парсит URL.

GET /800x400/ffffff/000000?prompt=офис-программисты&style=realistic&seed=42

Валидация: width/height 16–8192, HEX 6 символов, prompt не пустой. Если что-то не так → 400 Bad Request.

2

SHA-256 хеш — уникальный отпечаток запроса

<1 мс

API вычисляет SHA-256 от нормализованных параметров. Каждая уникальная комбинация = уникальный ассет:

hash = SHA256("800x400/ffffff/000000?prompt=office&style=realistic&seed=42")
→ abc123def456...

Одинаковый prompt + seed = одинаковый хеш = тот же кешированный файл. Изменили seed — новый хеш — новое изображение.

3

Проверка кеша — Redis

1–3 мс

✅ Cache HIT: CDN URL найден → 302 Redirect на CDN. Квота не тратится. Конец.

🔴 Cache MISS: URL не найден → переходим к шагу 4.

4

SVG Placeholder — немедленный ответ браузеру

5–10 мс

API сразу возвращает SVG-заглушку (200 OK, ~200 байт) с заголовком X-Job-Id. SVG показывает фон цвета bg= с текстом «Generating image...». Браузер не ждёт 8 секунд — видит заглушку немедленно. Параллельно API создаёт запись в PostgreSQL (status=pending) и отправляет задачу в очередь Celery.

5

Celery Queue — асинхронная очередь задач

0–2 сек ожидания

Задача появляется в Redis-очереди. Celery Worker берёт её. Приоритеты: high — Enterprise/Pro, default — обычные, bulk — batch. Пул: 3 GPU-воркера × concurrency=2 = 6 параллельных генераций одновременно. При длине очереди >50 → auto-scale добавляет воркер.

6

Улучшение промпта: Yandex Translate + Style Augmentation

0.5–1 сек

Три операции подряд:

  1. Transliteration: «офис разработчиков» → Yandex Translate → "office of developers"
  2. Style Augmentation: добавляется ", photorealistic, 8k, high detail"
  3. Negative prompt: "blurry, low quality, distorted"

Диффузионные модели обучены преимущественно на английских данных. Yandex Translate + нативная RU-обучка Kandinsky = лучшее качество для кириллических промптов.

7

AI-генерация: Kandinsky 3.1 или FLUX.1-schnell

5–8 сек (Kandinsky) / 2–4 сек (FLUX)

PRIMARY: Kandinsky 3.1

POST /v1/generate{model: "kandinsky-3.1", prompt, width, height, seed}
Ответ: base64-encoded PNG.
Обучен на RU-данных. Хостинг: SberCloud (Россия, 152-ФЗ).

FALLBACK: FLUX.1-schnell

Self-hosted на Selectel RTX 4090 (Россия).
diffusers pipeline, 4 inference steps.
Переключение автоматическое: если Kandinsky → 5xx или timeout.

💡 Для вас это невидимо: даже если Kandinsky недоступен, изображение всё равно будет сгенерировано — через FLUX, автоматически.

8

Постобработка: Image Processor (Pillow + libvips)

0.3–0.5 сек
  1. Decode: base64 → PIL Image
  2. Resize: ImageOps.fit(width, height, LANCZOS) — точное кадрирование
  3. Watermark (только Free): текст «Made with PixInLink.com», bottom-right, 30% opacity. Вшивается в пиксели — нельзя убрать через CSS или DevTools
  4. Format: WebP quality=85, метод 6 → ~50KB vs ~300KB PNG. В 6 раз меньше → лучше PageSpeed
  5. Strip EXIF/IPTC: все метаданные удаляются. Ваши промпты не хранятся в файле
9

Загрузка в Yandex Object Storage (S3)

0.2–0.5 сек
Key: images/{sha256_hash}.webp
Cache-Control: public, max-age=31536000, immutable
x-amz-acl: public-read
Durability: 99.999999999%

Объект никогда не перезаписывается. Новые параметры → новый хеш → новый объект. Ваш og:image не изменится неожиданно.

10

CDN-кеш и финал

async (CDN кеширует при первом запросе к Origin)
  • CDN: Yandex Cloud CDN, 140 POP по России и СНГ
  • Redis: SET image:{hash} cdn_url EX 2592000 (30 дней)
  • PostgreSQL: status=ready, cdnurl=..., generated_at=now()
  • Следующий запрос с тем же URL → CDN edge → <100 мс ✅

Схема пайплайна: от URL до изображения

flowchart TD
    A["Браузер: GET /800x400/офис"] --> B["API Gateway — FastAPI"]
    B --> C{"Redis Cache Check"}
    C -->|"Cache HIT"| D["302 CDN URL <100 мс ✅"]
    C -->|"Cache MISS"| E["SVG Placeholder 200 OK"]
    E --> F["Celery Queue — Redis Broker"]
    F --> G["Celery Worker"]
    G --> H["Yandex Translate RU → EN"]
    H --> I{"AI Provider"}
    I -->|"Primary"| J["Kandinsky 3.1 SberCloud ~8 сек"]
    I -->|"Fallback"| K["FLUX.1-schnell Selectel RTX 4090 ~4 сек"]
    J --> L["Image Processor Pillow: resize, WebP, watermark"]
    K --> L
    L --> M["Yandex Object Storage S3 immutable"]
    M --> N["Yandex CDN 140 POP"]
    N --> O["Redis UPDATE image:{hash}"]
    O --> P["Следующий запрос → Cache HIT <100 мс ✅"]

Почему первый запрос медленный, а повторный мгновенный?

🎂 Аналогия: кондитерская

Представьте, что вы заказываете торт в кондитерской. Первый раз — кондитер печёт его специально для вас (8–10 минут). Но умный кондитер знает: если кто-то закажет такой же — он уже есть в витрине. Следующий покупатель получит его мгновенно. PixInLink работает так же: первая генерация — кулинарный процесс, все последующие — готовый торт в витрине CDN.

ПараметрCache MISSCache HIT
Время ответа8–10 секунд<100 мс
Что возвращает API200 SVG placeholder302 CDN URL
Расход квотыДа, 1 кредитНет
Когда происходитПервый запросВсе повторные
CDN задействованНет (идёт генерация)Да (edge cache)
GPU используетсяДаНет

💡 500 генераций на Starter — это 500 уникальных промптов. Один промпт можно запрашивать миллион раз — квота тратится 1 раз при первой генерации.

Гарантия уникальности: это не стоковые фото

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

МифФакт
❌ PixInLink берёт фото из стоков✅ Генерация через Kandinsky 3.1 (диффузионная нейросеть)
❌ Изображения совпадут у разных пользователей✅ seed=random → каждый раз разные
❌ Нарушаются авторские права✅ Kandinsky обучен на лицензионных данных SberCloud
❌ Изображение изменится через месяц✅ Immutable CDN-кеш, hash-based URLs
❌ Первый медленный запрос — это баг✅ Cold start: нейросеть рисует впервые для этого промпта

Надёжность: что происходит, если AI недоступен?

Уровень 1

Kandinsky 3.1 (primary)

SberCloud API, Россия. При 5xx или timeout → автоматический переход на FLUX.1.

Уровень 2

FLUX.1-schnell (fallback)

Self-hosted на Selectel RTX 4090, Россия. Если Kandinsky упал — FLUX генерирует напрямую.

Уровень 3

Retry с backoff

Celery max_retries=3, задержка 60 сек. Если все попытки исчерпаны → email-уведомление.

КомпонентСбойРеакция системыВидимость для вас
Kandinsky API502/503/timeoutAuto-switch → FLUX.1Нет (чуть медленнее)
FLUX.1 workerOOM/crashRetry → другой GPUНет
RedisConnection errorAPI → 503, retryЗаглушка дольше
PostgreSQLUnavailableCircuit breaker, 503Страница ошибки 503
CDNEdge node downYandex CDN → другой POPНет
S3Upload failWorker retry × 3Задержка +1–2 мин

Circuit Breaker: при 5 подряд ошибках Kandinsky → Circuit Breaker открывается на 60 сек. Все запросы идут прямо в FLUX. После 60 сек — пробный запрос к Kandinsky. Если OK — Circuit Breaker закрывается.

Российская инфраструктура: соответствие 152-ФЗ

КомпонентПровайдерЛокация
API GatewayYandex Serverless Functionsru-central1 (Москва/Ярославль)
Redis CacheYandex Managed Redis Lighthouseru-central1
PostgreSQLYandex Managed PostgreSQL 16ru-central1
Object StorageYandex Object Storageru-central1
CDNYandex Cloud CDN140 POP РФ + СНГ
AI PrimaryKandinsky 3.1SberCloud, Россия
AI FallbackFLUX.1-schnellSelectel, Россия
GPU WorkersSelectel RTX 4090Санкт-Петербург, Россия
  • lockS3 at-rest encryption: AES-256
  • lockHTTPS everywhere: TLS 1.3, managed certificates
  • lockEXIF stripping: метаданные удаляются из каждого изображения
  • lockДанные за рубеж не передаются: вся инфраструктура в РФ

Seed: воспроизводимые изображения для og:image

Seed — это «рецепт» изображения. Добавьте &seed=42 в URL — и PixInLink всегда нарисует одно и то же изображение для одного промпта. Без seed — каждый раз разное. С seed — всегда одинаковое.

Для og:image стабильность критична: если сегодня у статьи один og:image, а завтра другой — соцсети покажут старую версию из своего кеша. Решение: зафиксируй seed.

Без seed

pixinlink.ru/1200x630?prompt=кот

Random seed каждый раз → разные изображения → не кешируется. Подходит для декоративных элементов.

С фиксированным seed

pixinlink.ru/1200x630?prompt=кот&seed=42

Стабильный CDN-кеш. Идеально для og:image и заголовков статей.

Seed из slug (идеальный паттерн)

slug = "kak-pit-kofe"
seed = crc32(slug) % 2147483647
# seed=847392145

CRC32 slug → детерминированное число. Каждый slug = уникальное, но стабильное изображение.

Частые вопросы

Почему первое изображение генерируется медленнее?

Cache miss — нейросеть Kandinsky 3.1 рисует специально для этого запроса. P95 = 8 секунд. Все повторные запросы отдаются из CDN: <100 мс. Квота при cache hit не расходуется.

Расходуется ли квота при повторном запросе?

Нет. Cache hit не расходует квоту. 500 генераций на Starter — это 500 уникальных промптов. Один промпт можно запрашивать любое количество раз — квота тратится 1 раз при первой генерации.

Kandinsky или FLUX.1 — какую модель выбрать?

Выбор происходит автоматически. Kandinsky 3.1 — первичная модель, лучше для русских промптов (8 сек). FLUX.1 — резервная, немного быстрее (4 сек). Принудительный выбор модели доступен в REST API для тарифа Pro.

Изображения хранятся вечно?

CDN-кеш = 1 год. В Yandex Object Storage: 180 дней → Cold Storage, 365 дней → удаление (lifecycle policy). После удаления следующий запрос = новая генерация.

Могут ли два пользователя получить одинаковое изображение?

При одинаковом prompt + seed — да, CDN отдаст тот же кешированный файл. Изображение уникально создано для этого промпта. Хотите гарантированную уникальность — не указывайте seed (random каждый раз).

Как обрабатываются запрещённые промпты?

Kandinsky 3.1 имеет встроенный content policy filter. Запросы с NSFW, насилием и запрещённым контентом отклоняются. PixInLink дополнительно проверяет на уровне API Gateway.

Можно ли использовать изображения коммерчески?

Да, на платных тарифах (без watermark) — полные коммерческие права. На Free (с watermark) — личное использование. Подробнее: pixinlink.ru/terms.

Сколько GPU-ресурсов на одну генерацию?

Kandinsky 3.1 API — GPU на стороне SberCloud. FLUX.1 self-hosted: RTX 4090, 24 GB VRAM, concurrency=2 на worker. При высокой нагрузке (utilization >85%) auto-scale добавляет GPU-воркеры автоматически.

Об этом материале

Архитектура PixInLink разработана командой с опытом в SaaS, distributed systems и computer vision. Все решения задокументированы в Architecture Decision Records (ADR): ADR-007 (Kandinsky/FLUX fallback), ADR-010 (Watermark). Мониторинг 24/7 через Grafana + Telegram-алерты.

  • verifiedКодовые примеры актуальны для FastAPI 0.115, Celery 5.4, Python 3.12
  • verifiedТехнические данные взяты из architecture/components.md и ADR-документов
  • verifiedДата обновления: май 2026
  • verifiedПоддержка: dev@pixinlink.ru · @pixinlinksupport

Попробуйте пайплайн в действии

Первые 50 генераций бесплатно. Без регистрации и кредитной карты.

Вопросы по архитектуре: dev@pixinlink.ru