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.

Obecný asistent

„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.
Konkrétní funkce

„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.

01

Nový úkol

Název a krátký popis

Zpřesnit zadání

02

Detail úkolu

Stav, termín, projekt a podúkoly

Navrhnout změny

03

Projekt

Cíl, úkoly a poznámky

Vytvořit strukturu nebo shrnutí

04

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:

  1. Co se uživatel právě snaží dokončit?
  2. Jaká data má v daném místě Zentero k dispozici?
  3. Jaký návrh by mu skutečně ušetřil práci?
  4. 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.

Původní zápis
Upravit stránku s reklamacemi.
Návrh po doplnění kontextu
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.

Brief

Redesign detailu projektu má lépe ukázat produktové přemýšlení, rozhodnutí, výsledek a moji roli. Musí fungovat na desktopu i mobilu.

První struktura

  • 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.

01 · dopoledne

Dokončit zadání reklamací

Úkol má blízký termín a navazuje na něj práce externího dodavatele.

02 · potom

Zkontrolovat mobilní detail Zentera

Mobilní verze stále blokuje uzavření celé úpravy.

03 · pokud zbude čas

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.

Málo kontextu
Dodělat web.

Model musí odhadovat cíl, rozsah, návaznosti i hotový výsledek.

Relevantní kontext
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.

Akce uživatele
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.

  1. 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.

  2. 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.

  3. 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?

  4. 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čí.

  5. 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.