První AI funkce v Zenteru připomínala univerzálního asistenta. Dokázala odpovídat na otázky, navrhovat další postup a pomáhat s rozdělením práce. Při krátké ukázce fungovala dobře. Při každodenním používání jsem ale zjistil, že pro ni často nemám jasný důvod aplikaci otevřít.
Problém nebyl v tom, že by jazykový model neuměl vytvořit použitelnou odpověď. Asistent jen neměl pevné místo v produktu. Užitečnou se AI stala až ve chvíli, kdy jsem ji přestal vnímat jako jednu velkou funkci a rozdělil ji do několika konkrétních pracovních situací.
AI funkce, která vypadala lépe, než fungovala
Když jsem začal do Zentera přidávat umělou inteligenci, obecný asistent vypadal jako logický první krok. Produkt už obsahoval projekty, úkoly, poznámky, termíny a další informace o rozpracované práci. Nabízelo se proto vytvořit jedno místo, kde by se uživatel mohl na svůj obsah ptát a získat pomoc téměř s čímkoliv.
Představa byla jednoduchá. Člověk otevře chat, popíše, co právě řeší, a asistent mu pomůže najít další postup. Mohl navrhnout rozdělení většího úkolu, shrnout projekt, upozornit na nejasnosti nebo doporučit, na co se zaměřit.
Na první pohled to fungovalo dobře. Taková funkce se také snadno prezentuje: stačí napsat složitější požadavek a sledovat, jak se před uživatelem objeví přehledně formulovaný návrh. Jenže produkt se nepoužívá jako připravená ukázka.
Když jsem aplikaci začal používat při skutečné práci, samostatného asistenta jsem otevíral jen výjimečně. Když jsem potřeboval upravit konkrétní úkol, byl jsem v jeho detailu. Při plánování dne jsem pracoval s termíny, prioritami a rozpracovanými položkami. Při zakládání projektu jsem potřeboval připravit jeho základní strukturu.
Přechod do samostatného chatu znamenal opustit právě řešenou situaci, znovu vysvětlit kontext a následně odpověď ručně převést zpět do produktu. Asistent byl technicky dostupný, ale jeho použití vyžadovalo další rozhodnutí:
- Mám ho v této situaci vůbec otevřít?
- Co přesně mu mám napsat?
- Jaký kontext mu musím znovu předat?
- Co z odpovědi následně použiji?
- Kam mám výsledek uložit?
Místo snížení počtu rozhodnutí tak někdy vytvářel další vrstvu práce.
Demo není totéž co pracovní postup
Obecný AI chat je pro demo téměř ideální. Uživatel může položit libovolnou otázku a model zpravidla vytvoří nějakou odpověď. Rozsah funkce působí velký, protože ji lze představit jako pomocníka pro mnoho různých situací.
Právě tato univerzálnost ale přenáší část práce na uživatele. Ten musí poznat, kdy má asistenta využít, sestavit vhodné zadání a dodat mu potřebné informace. Pokud je chat oddělený od místa, kde člověk právě pracuje, musí mezi funkcemi přenášet pozornost i samotný výsledek.
„S čím vám mohu pomoci?“
- Uživatel hledá vhodný okamžik.
- Sám sestavuje prompt a kontext.
- Výsledkem bývá samostatný text.
- Další akci musí vymyslet člověk.
„Zpřesnit tento úkol“
- Funkce je přímo v místě práce.
- Kontext připraví produkt.
- Výstup má očekávanou strukturu.
- Návrh navazuje na konkrétní akci.
V jakém konkrétním okamžiku má člověk tuto funkci použít a co díky ní dokončí jednodušeji než bez ní?
Problém nebyl jen v kvalitě odpovědí
Při hodnocení AI funkcí je snadné soustředit se hlavně na samotný výstup. Byl návrh přesný? Obsahoval správné informace? Dodržel požadovaný formát? To všechno je důležité. Ani velmi kvalitní odpověď ale automaticky nevytváří dobrou produktovou funkci.
Stejně podstatné je, odkud funkce získá kontext, zda je jasné, jaký typ odpovědi vznikne, jestli může uživatel návrh upravit nebo odmítnout a zda se výsledek rovnou promítne do rozpracované práce. Obecný asistent dokázal vytvářet dobrý text. Stále však fungoval spíš jako samostatný nástroj vložený do aplikace než jako její přirozená součást.
Proč mi obecný asistent na začátku dával smysl
Původní rozhodnutí vytvořit univerzálního asistenta dnes nevnímám jako slepou uličku. Zentero už obsahovalo pracovní kontext: projekty měly svůj účel a poznámky, úkoly měly názvy, termíny, priority nebo podúkoly a jednotlivé části spolu byly propojené. Jazykový model tak mohl nad těmito informacemi pracovat lépe než běžný chatbot, kterému musí člověk všechno znovu vysvětlovat.
Lákala mě představa jednoho vstupního místa. Uživatel by prostě napsal, co potřebuje:
„Rozděl mi tento projekt na menší kroky.“
„Co bych měl udělat jako první?“
„Shrň mi, co je v projektu rozpracované.“
„Pomoz mi upravit tento úkol, protože je příliš obecný.“
Jeden dostatečně schopný chat mohl na první pohled pokrýt téměř všechno. Zároveň jsem nemusel předem rozhodnout, které scénáře budou nejdůležitější, kde se zobrazí, jaký kontext dostanou a co přesně se stane po potvrzení výstupu.
Stejná otázka potřebuje v různých místech jiná data
Požadavky, které znějí podobně, potřebují podle situace odlišný kontext i výstup. Pomoc při zadávání nového úkolu může pracovat jen s právě napsaným názvem. V detailu existujícího úkolu už AI zná termín, stav, podúkoly, poznámky a projekt. U projektu potřebuje širší pohled. A doporučený plán dne musí porovnat více položek napříč systémem.
Nový úkol
Název a krátký popis
Zpřesnit zadání
Detail úkolu
Stav, termín, projekt a podúkoly
Navrhnout změny
Projekt
Cíl, úkoly a poznámky
Vytvořit strukturu nebo shrnutí
Plán dne
Priority, termíny a návaznosti
Doporučit pořadí s důvodem
Od jednoho chatu ke konkrétním pracovním situacím
Ve chvíli, kdy jsem přestal přemýšlet o AI jako o jedné samostatné funkci, začal jsem se u každé části produktu ptát:
- Co se uživatel právě snaží dokončit?
- Jaká data má v daném místě Zentero k dispozici?
- Jaký návrh by mu skutečně ušetřil práci?
- Které rozhodnutí musí zůstat na člověku?
Výsledkem nebyl jeden chytřejší chatbot. Vzniklo několik užších funkcí, které používají jazykový model podobným způsobem, ale každá řeší jiný okamžik práce.
Když úkol teprve vzniká
Při rychlém zapisování úkolu člověk často zachytí jen první formulaci: „Dodělat prezentaci“, „Vyřešit formulář“ nebo „Připravit podklady“. O několik dní později už nemusí být jasné, co znamená „dodělat“, jaký má být výsledek ani podle čeho poznám, že je úkol hotový.
AI je proto dostupná přímo v okamžiku, kdy úkol vzniká. Z vágního zápisu může navrhnout přesnější název, popis očekávaného výsledku, prioritu, štítky nebo rozdělení práce na menší kroky.
Upravit stránku s reklamacemi.
Připravit návrh přehledu reklamací v zákaznické zóně včetně mapování stavů, detailu reklamace a filtrování.
- zjistit dostupná data ze zdrojového systému;
- navrhnout veřejné skupiny stavů;
- připravit strukturu přehledu a detailu;
- sepsat nejasnosti a testovací scénáře.
Výsledek nemusí být dokonalý. Uživatel jej může přepsat, část odstranit nebo návrh úplně odmítnout. Hodnota je v tom, že nezačíná na prázdné stránce.
V detailu úkolu už AI pracuje s bohatším kontextem
U existujícího úkolu může model pracovat s popisem, prioritou, termínem, stavem, podúkoly a vazbou na konkrétní projekt. Může upozornit, že chybí jasný výsledek, navrhnout další kroky nebo rozdělit příliš rozsáhlou práci.
Rozdíl proti obecnému chatu není jen v pohodlnějším tlačítku. Funkce zná svůj předmět. Nepracuje s neurčitým dotazem, ale s konkrétní položkou a předvídatelným typem výstupu.
Projekt z krátkého briefu
Když zakládám projekt, často mám jen představu cíle, několik omezení a první termín. V této fázi lze napsat krátký brief a nechat AI připravit první kostru projektu.
Redesign detailu projektu má lépe ukázat produktové přemýšlení, rozhodnutí, výsledek a moji roli. Musí fungovat na desktopu i mobilu.
→
- analýza současné stránky;
- definice struktury;
- revize textu;
- výběr ukázek;
- implementace;
- kontrola přístupnosti.
Nejde o automatické vytvoření hotového projektu. Některé kroky budou příliš obecné, jiné mohou chybět. Přesto je jednodušší upravovat konkrétní návrh než začínat od prázdného seznamu.
Projektový chat má smysl až s projektovým kontextem
Konverzační rozhraní jsem neopustil úplně. V Zenteru má své místo chat navázaný na konkrétní projekt. Uživatel se už neptá univerzálního pomocníka na cokoliv, ale pracuje nad jedním tématem, ke kterému jsou uložené úkoly a poznámky.
„Které části projektu jsou stále rozpracované?“
„Shrň mi dosavadní rozhodnutí.“
„Které úkoly pravděpodobně blokují další postup?“
Odpověď jazykového modelu stále nemusí být úplná. Člověk proto musí mít možnost vrátit se ke zdrojovým úkolům a poznámkám a ověřit si, z čeho vychází.
Ranní návrh neodpovídá na otázku. Pomáhá vybrat další postup
Uživatel zde nemusí nejdřív napsat vlastní dotaz. Zentero projde rozpracovanou práci a sestaví návrh, čemu by dávalo smysl věnovat pozornost. Nejde jen o seřazení podle termínu. Návrh pracuje s kombinací priority, stavu, rozpracovanosti, návazností, rozsahu a informací uložených v detailu.
Dokončit zadání reklamací
Úkol má blízký termín a navazuje na něj práce externího dodavatele.
Zkontrolovat mobilní detail Zentera
Mobilní verze stále blokuje uzavření celé úpravy.
Rozdělit návrh článku
Úkol nemá bezprostřední termín, ale bez členění se obtížně zahajuje.
Důležitá je vysvětlitelnost doporučení. Nestačí zobrazit pořadí. Uživatel musí vědět, podle čeho návrh vznikl, aby jej dokázal posoudit. Plán je první orientace, ne automatické řízení dne.
Kvalita doporučení začíná dlouho před spuštěním AI
Představme si dva úkoly. První obsahuje pouze název „Dodělat web“. Druhý popisuje dokončení mobilní podoby detailu Zentera, má termín, vysokou prioritu, vazbu na projekt a podúkoly pro hero, diagramy, mezery, šířky 375 a 390 pixelů i sticky navigaci.
Jazykový model může být stejný. Druhý úkol je ale pro doporučený plán výrazně lépe čitelný. U prvního model neví, o jaký web jde, kolik práce zbývá, co dokončení odblokuje ani podle čeho poznat výsledek. Čím méně dat dostane, tím více musí domýšlet.
Dodělat web.
Model musí odhadovat cíl, rozsah, návaznosti i hotový výsledek.
Dokončit mobilní podobu detailu Zentera.
Termín · priorita · projekt · očekávaný výsledek · podúkoly
AI není chytřejší než kontext, který jí produkt dokáže předat. A produkt nemůže předat informace, které do něj člověk nikdy nezapsal.
Co se změnilo, když AI dostala jasné hranice
Rozdělení jednoho asistenta do několika funkcí nebylo jen změnou rozhraní. Změnilo způsob, jakým Zentero připravuje kontext, jaké výstupy očekává a co se s nimi děje dál.
| Oblast | Obecný asistent | Konkrétní funkce |
|---|---|---|
| Vstup | Uživatel formuluje celý prompt. | Produkt zná situaci a připraví část zadání. |
| Kontext | Často se ručně kopíruje. | Načítá se z úkolu, projektu nebo plánu. |
| Výstup | Volný text s proměnlivou strukturou. | Očekávaná pole, kroky nebo pořadí. |
| Další akce | Člověk výsledek přenáší jinam. | Návrh lze přijmout přímo do produktu. |
| Kontrola | Obtížně se určuje, co je „správně“. | Lze validovat konkrétní pole a hodnoty. |
Uživatel nemusí pokaždé vymýšlet vlastní prompt
Produkt ví, zda se pracuje s novým úkolem, existujícím detailem nebo celým projektem. Uživatel se může soustředit na svou práci místo přemýšlení, jak správně komunikovat s modelem.
Kontext připravuje produkt
Není nutné kopírovat název, popis, termín a podúkoly. Více kontextu ale automaticky neznamená lepší výsledek. Nadbytečné nebo zastaralé informace mohou model zmást, takže každá funkce potřebuje vlastní výběr relevantních dat.
Výstup je předvídatelnější a navazuje na akci
Konkrétní funkce může očekávat upravený název, prioritu, štítky, podúkoly, pořadí úkolů nebo stručné zdůvodnění. Výsledek lze zkontrolovat, porovnat se současným stavem a nabídnout jeho částečné přijetí. Zmenšuje se mezera mezi „AI něco navrhla“ a „uživatel dokončil část práce“.
Lépe se řeší chyby
U užší funkce lze kontrolovat, zda odpověď obsahuje očekávaná pole, zda se priorita pohybuje v povolených hodnotách, zda podúkoly nejsou prázdné nebo zda model nevrátil nepřiměřené množství kroků. Funkce s jasnou odpovědností se testuje podstatně lépe než otevřený chat.
Několik specializovaných funkcí znamená více stavů, instrukcí, typů odpovědí i chybových situací. U každé je potřeba řešit umístění, dostupnost, načítání, potvrzení, částečné přijetí, odmítnutí a neplatný výstup. Produkt nemusí být jednoduchý uvnitř, aby byl srozumitelný navenek.
Návrh musí zůstat pod kontrolou uživatele
Jasně vymezená funkce neznamená, že její odpověď může produkt automaticky považovat za správnou. Model nezná všechny okolnosti. Nevidí schůzku, která se přesunula, změnu priority domluvenou mimo systém ani důvod, proč člověk záměrně nechal úkol obecný.
Proto se u významnějších změn snažím oddělit vytvoření návrhu od jeho uložení. Uživatel nejdřív vidí, co se má změnit. Může přijmout nový název, ale odmítnout prioritu; ponechat část podúkolů a zbytek smazat; nebo celý návrh zahodit. Potvrzení není jen technický mezikrok. Je součástí důvěry v produkt.
AI návrh→
Náhled změn→
Upravit nebo potvrdit→
Uložit
Stejně důležité je, aby základní práce fungovala i bez AI. Když model neodpoví, vrátí neplatný formát nebo je služba nedostupná, uživatel musí stále dokázat úkol vytvořit, projekt upravit nebo den naplánovat ručně. Umělá inteligence může pracovní postup zkrátit, ale neměla by se stát jedinou cestou k jeho dokončení.
Pět otázek před přidáním AI do produktu
Z této zkušenosti jsem si odnesl otázky, které dnes považuji za důležitější než rozhodnutí, jaký model nebo knihovnu použít.
-
01
Ve kterém okamžiku práce má AI pomoci?
Nestačí říct, že bude pomáhat s projekty nebo plánováním. Člověk právě zakládá úkol, vrací se k rozpracované položce, vytváří strukturu projektu nebo vybírá, čemu se věnovat dnes.
-
02
Jaký kontext potřebuje a kdo jej dodá?
Pokud má uživatel ručně vysvětlovat vše, co produkt už ví, integrace pravděpodobně není dobře navržená. Kontext ale musí být relevantní, aktuální a přiměřený funkci.
-
03
Jak má vypadat použitelný výstup?
„Dobrá odpověď“ není přesné kritérium. Má vzniknout změna, seznam kroků, strukturovaný projekt, pořadí úkolů, shrnutí nebo odpověď se zdroji?
-
04
Co se s výsledkem stane dál?
Může jej uživatel upravit, přijmout celý nebo jen zčásti, porovnat se současným stavem, odmítnout či uložit jako návrh? Samotné zobrazení textu často nestačí.
-
05
Co se stane, když je výstup chybný nebo nepřijde?
Produkt musí chybu rozpoznat, zabránit automatickému uložení nevhodného výsledku, nabídnout opakování a umožnit pokračovat i bez AI.
Obecný asistent nebyl zbytečná odbočka
Pomohl mi rychle zjistit, s jakými informacemi dokáže model pracovat, jaké typy odpovědí mohou být užitečné a ve kterých situacích samotná konverzace nestačí.
Užitečnější AI vznikla až ve chvíli, kdy dostala konkrétní místo, relevantní kontext, omezenou odpovědnost, očekávaný výstup, navazující akci a kontrolu ze strany uživatele.
Člověk už nemusí přemýšlet, jaký prompt napsat a kam výsledek přenést. Řeší svůj úkol nebo projekt a AI mu pomáhá přímo v této situaci. Nevedlo to k menšímu využití umělé inteligence. Vedlo to k méně nápadné AI, která má v produktu jasnější důvod existovat.