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í.
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:
- 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.
- 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ázkyAiAnswerGenerateHandler— 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é kategorieAiCategoryImageGenerateHandler— DALL-E 3 vygeneruje cover pro novou kategoriiAiNicknameGenerateHandler— GPT vygeneruje pool unikátních přezdívek pro nové uživateleSendDailyUserUpdatesHandler— denní email digest o nových odpovědích a lajcíchSpecialDayNotificationHandler— 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:
- Načte AI obrázky kategorií jako dlaždice (600×400px)
- Rozloží je do mřížky s brick pattern (každý druhý řádek posunutý o polovic dlaždice)
- Mezi dlaždicemi aplikuje sigmoid gradient blend mask pro plynulé prolínání
- Celý canvas otočí o −15°
- 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-Eai.agent.answers— generátor seed odpovědíai.agent.category— klasifikátor otázek do kategoriíai.agent.nickname— generátor přezdívekai.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)