6 slov

Klient: Hobby projekt

Sociální platforma, kde otázka dostane AI obraz a komunita odpovídá v přesně 6 slovech. Klíčová inovace: technika Prompt-on-Prompt, kde AI nejprve přeloží abstraktní dotaz na precizní vizuální deskriptor a až ten vstupuje do difuzního modelu. Plně asynchronní pipeline přes Symfony Messenger, kredity, automatická kategorizace, typo-tolerantní vyhledávání a vlastní systém automoderování.

AI Prompt Engineering Symfony Messenger PHP 8.5 DALL-E 3 GPT-4 Symfony AI EasyAdmin Imagick
6 slov

Koncept

Jednoduchá myšlenka s hlubokým technologickým jádrem: uživatel napíše otázku o přesně šesti slovech, platforma vygeneruje AI obrázek jako cover a komunita musí odpovědět v přesně 6 slovech. Ne 5, ne 7 — přesně 6. Limit nutí k přemýšlení a výsledky jsou překvapivě vtipné, moudré i poetické.

Platforma funguje v slovensko-české komunitě a k srpnu 2026 eviduje 203 otázek, 1 274 odpovědí a 39 registrovaných uživatelů. Otázky pokrývají kategorie jako Vztahy, Zdraví, Osobní rozvoj, Kulinářství, Finance či Sebereflexe — každou z nich AI nejen pojmenovává, ale i vizuálně ztvárňuje.

Prompt-on-Prompt Pipeline

Největší problém generativní grafiky je nepřesnost přímého zadání. Abstraktní otázka „Co je to láska?" produkuje generické výstupy. Implementoval jsem dvoufázový postup:

  1. Fáze 1 — Prompt Enhancer: GPT-4 dostane otázku a systémový pokyn, aby ji dekonstruoval na precizní vizuální deskriptor — popis scény, barevnost, kompozice, nálada.
  2. Fáze 2 — Image Generation: Optimalizovaný prompt vstupuje do DALL-E 3 v rozlišení 1792×1024px.

Výsledky jsou výrazně konzistentnější a vizuálně silnější než při přímém zadání.

Asynchronní AI pipeline

Každá událost v systému spouští samostatný Messenger handler, což zaručuje bleskovou odezvu UI i při náročných AI operacích:

  • AiImageGenerateHandler — Prompt-on-Prompt + DALL-E 3 generování coveru otázky
  • AiAnswerGenerateHandler — GPT generuje první odpovědi pro každou novou otázku (seed obsah)
  • AiCategoryGenerateHandler — GPT přiřadí otázku do existující nebo nové kategorie
  • AiCategoryImageGenerateHandler — DALL-E 3 vygeneruje cover pro novou kategorii
  • AiNicknameGenerateHandler — GPT vygeneruje pool unikátních přezdívek pro nové uživatele
  • SendDailyUserUpdatesHandler — denní email digest o nových odpovědích a lajcích
  • SpecialDayNotificationHandler — speciální událostní emaily s interaktivními tlačítky

Systém kreditů a Scheduler

Přidání otázky stojí kredity. Kredity se doplňují automaticky přes Symfony Scheduler se dvěma recurring jobs:

  • AddFreeCoinsProvider — každou minutu doplňuje kredity podle pravidel (cron: * * * * *)
  • Denní reporty — cron v náhodném čase mezi 8:00–20:00, dynamicky generuje seznam uživatelů s novými aktivitami

Scheduler běží bez externého cron démona — čistě přes Symfony Messenger worker.

Full-textové vyhledávání a automoderování

Loupe — typo-tolerantní full-text search engine v čistém PHP — indexuje všechny otázky. Minimální délka prefixu 3 znaky, fuzzy matching, nulová závislost na externím serveru.

AutoModerationService implementuje Weighted Report Score (WRS): každý report má váhu podle závažnosti (1–4), důvěryhodnosti reportéra (reporterTrust: 0.5–1.5) a časové degradace. Systém navrhuje akci: visible / soft_hidden / hard_hidden / quarantine. Reportérova důvěryhodnost se mění na základě historie jeho reportů.

HeroGenerator — kompozitní image engine

Vlastní HeroGeneratorService na bázi Imagick generuje hero pozadí pro profily a speciální stránky. Algoritmus:

  1. Načte AI obrázky kategorií jako dlaždice (600×400px)
  2. Rozloží je do mřížky s brick pattern (každý druhý řádek posunutý o polovic dlaždice)
  3. Mezi dlaždicemi aplikuje sigmoid gradient blend mask pro plynulé prolínání
  4. Celý canvas otočí o −15°
  5. Výsledek ořeže na 2560×1440px, zvýší saturaci a exportuje jako JPEG 80%

Výsledek vypadá jako generativní AI pozadí, no je to deterministická kompozice z existujících obrázků.

Integrace symfony-ai

Projekt je jedním z prvních produkčních nasazení balíčku symfony/ai (Symfony AI). Jednotlivé AI agenty jsou definovány jako Symfony services s atributem #[Autowire(service: ...)]:

  • ai.agent.image_prompt — Prompt Enhancer pro DALL-E
  • ai.agent.answers — generátor seed odpovědí
  • ai.agent.category — klasifikátor otázek do kategorií
  • ai.agent.nickname — generátor přezdívek
  • ai.agent.optimize_categories — optimalizátor kategorií

DALL-E 3 je volán přímo přes PlatformInterface s custom ImageUrl response formátem.

Prompt-on-Prompt Pipeline

Dvoufázová AI transformace: GPT-4 nejprve přeloží abstraktní otázku na precizní vizuální deskriptor, DALL-E 3 generuje cover v rozlišení 1792×1024.

Plně asynchronní AI pipeline

7 specializovaných Symfony Messenger handlerů — obrázky, odpovědi, kategorie, přezdívky, emaily. UI nikdy nečeká na AI.

Symfony Scheduler bez démona

Kredity, denní digesty a speciální události řídí čistě přes Symfony Messenger worker. Žádný externí cron.

Automoderování s WRS

Weighted Report Score systém s časovou degradací, závažností reportu a dynamickým reporterTrust skóre každého uživatele.

Loupe full-text search

Typo-tolerantní vyhledávání bez externí závislosti — čisté PHP, indexování přímo do lokálního adresáře.

HeroGenerator — Imagick engine

Generativní hero pozadí z AI category obrázků — brick grid, sigmoid blend masky, rotace, crop na 2560×1440px.

Technické funkce

  • OpenAI GPT-4o + DALL-E 3
  • Asynchronní Symfony Messenger + Scheduler
  • Prompt-on-Prompt (dvoufázové generování obrazu)
  • Loupe — typo-tolerantní full-text search (PHP-native)
  • Weighted Report Score s dynamickým reporterTrust
  • Custom Imagick composite engine (brick grid + sigmoid blend)
  • 203 otázek · 1 274 odpovědí · 39 uživatelů (srp 2026)