Jag pratar. Slides dyker upp på duken bakom mig, i takt med det jag säger. Ingen klickar på något.
Idén är enkel att beskriva och obehaglig att bygga, för den har en egenskap som nästan inget annat jag gjort har: den körs framför publik. Det förändrar hela kalkylen för vad som får gå fel.
Det svåra är inte att höra vad jag säger
Taligenkänning är löst. En röstdetektor klipper ut yttranden när det blir tyst i sjuhundra millisekunder, och en transkriberingsmodell gör text av dem. Den delen fungerade första kvällen.
Det svåra är nästa fråga: ska det här bli en slide?
Tal är en ström. Slides är diskreta. Mellan dem sitter ett omdöme som ingen transkribering kan ge dig, och det mesta jag säger under en föreläsning ska absolut inte hamna på duken. Utvikningar, upprepningar, ett svar på en fråga från publiken, en mening jag börjar om. En assistent som gör en slide av varje yttrande är inte hjälpsam — den är sabotage i realtid.
Så det finns en ”regissör” i mitten som för varje yttrande fattar ett beslut: skapa ny slide, ändra den befintliga, ta bort något, föreslå utan att göra, utföra ett kommando — eller, oftast, ignorera. Att ignorera är det vanligaste och viktigaste utfallet.
Två spår, för tidens skull
En modell som funderar i fem sekunder är oanvändbar på scen. Publiken hinner titta på dig, på duken, och sedan på dig igen.
Därför går uppenbara röstkommandon en genväg: säger jag ”ta bort den senaste sliden” eller ”ändra rubriken till …” utförs det direkt, utan att någon modell blandas in. Deterministiskt, omedelbart, gratis.
Och där ligger detaljen jag är gladast över. Genvägen har ett negationsskydd. Säger jag ”vi ska inte ta bort den här sliden” matchar mönstret fortfarande — men meningen är den motsatta. Sådana fall skickas vidare till modellen, som förstår skillnaden.
Det är i miniatyr hela poängen med att blanda regler och modeller: regler är snabba och förutsägbara ända tills språket blir språk. Då behövs omdöme. Att välja det ena eller det andra fullt ut ger antingen ett system som är dumt eller ett som är långsamt.
Offline är inte ett läge, det är kravet
Den som föreläst hos kund vet hur gästnätet fungerar: det finns, det är långsamt, och det blockerar sådant du behöver. Att förutsätta uppkoppling när man står i någon annans lokal är att planera för att misslyckas.
Alltså faller modellkedjan nedåt i steg. Först en modell i molnet om den svarar. Annars en kraftigare maskin hemma över tunnel. Annars en modell som kör lokalt på laptopen, på det integrerade grafikkortet. Kedjan hälsokontrolleras löpande, så bytet sker innan jag märker det — inte efter en timeout mitt i en mening.
Samma tänk genom hela systemet. Bilder genereras vid sidan om: sliden visas direkt med sin text, och bilden tonar in när den är klar — eller uteblir tyst om det inte går. Ingen slide väntar någonsin på en bild.
Och delning: säger jag att presentationen ska delas paketeras den som en självbärande fil. Går servern att nå läggs den upp på en publik adress. Går den inte att nå serveras den från laptopen över en egen hotspot i stället. I båda fallen läggs en QR-kod som sista slide, och publiken märker aldrig vilken av vägarna som användes.
Ingenting får dö på scen
Om jag skulle sammanfatta hela bygget i en princip är det den. Varje fel har en degraderad väg framåt, och ingen av dem är ”stanna”.
- Mikrofonen tappar kontakten → felmeddelande i styrvyn och nytt försök var femte sekund.
- Modellen svarar inte → nästa i kedjan.
- Modellen svarar med något som inte går att tolka → ett omförsök, sedan ignoreras yttrandet med en varningsrad.
- Bildgenereringen fallerar → sliden blir en textslide.
- Servern är onåbar → hotspot.
Värsta tänkbara utfall är alltså en utebliven slide. Det är en nivå av felhantering jag sällan bygger annars, och skälet är enkelt: här finns ingen omstart att göra. Det går inte att be trettio personer vänta.
Allt destruktivt är dessutom ångerbart. Varje ändring skriver en historikrad, och ”ta bort den där” har alltid en väg tillbaka. Ett system som agerar på röst kommer att missförstå ibland — då måste ångra vara ett tangenttryck, inte en felsökning.
Tänkpanelen: en bugg som blev en poäng
Under utvecklingen hade jag en panel som visade regissörens beslut i klartext — vad den hörde, vad den valde, varför. Ren felsökning.
Den ligger nu kvar som ett valbart inslag på duken, synlig för publiken.
När jag pratar om AI är det mest övertygande jag kan göra att visa maskineriet i stället för att beskriva det. Publiken ser yttrandet komma in, ser beslutet fattas, ser sliden dyka upp — inklusive de gånger den väljer att ignorera mig, vilket ofta är det som gör starkast intryck. Det är också ärligare: en assistent vars resonemang är dolt ber om förtroende, en vars resonemang syns förtjänar det.
Vad jag tar med mig
Omdömet är produkten. Taligenkänningen, modellen och gränssnittet är komponenter som går att byta ut. Det som avgör om verktyget är användbart är hur ofta det låter bli att göra något — och det är inget som går att mäta i ett test, bara i ett rum med människor i.
Skriv failure-vägarna först. Jag brukar bygga funktionen och lägga till felhanteringen efteråt. Här gick det inte, för felhanteringen var designen. Det är en ordning jag borde använda oftare.
Och det obekväma: det bästa läget är fortfarande att presentera utan den. Verktyget gör en föreläsning mer levande, inte enklare — jag måste både prata och hålla reda på vad maskinen gör. Den som hoppas att AI ska ta bort förberedelsen kommer att bli besviken. Den tar bort efterarbetet, vilket är något helt annat.