{"id":31,"date":"2026-07-14T20:00:00","date_gmt":"2026-07-14T18:00:00","guid":{"rendered":"https:\/\/airex.se\/blogg\/presentationsassistenten\/"},"modified":"2026-07-14T20:00:00","modified_gmt":"2026-07-14T18:00:00","slug":"presentationsassistenten","status":"publish","type":"post","link":"https:\/\/airex.se\/blogg\/presentationsassistenten\/","title":{"rendered":"Slides som skriver sig sj\u00e4lva medan jag pratar"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Jag pratar. Slides dyker upp p\u00e5 duken bakom mig, i takt med det jag s\u00e4ger. Ingen klickar p\u00e5 n\u00e5got.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Id\u00e9n \u00e4r enkel att beskriva och obehaglig att bygga, f\u00f6r den har en egenskap som n\u00e4stan inget annat jag gjort har: <strong>den k\u00f6rs framf\u00f6r publik.<\/strong> Det f\u00f6r\u00e4ndrar hela kalkylen f\u00f6r vad som f\u00e5r g\u00e5 fel.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Det sv\u00e5ra \u00e4r inte att h\u00f6ra vad jag s\u00e4ger<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Taligenk\u00e4nning \u00e4r l\u00f6st. En r\u00f6stdetektor klipper ut yttranden n\u00e4r det blir tyst i sjuhundra millisekunder, och en transkriberingsmodell g\u00f6r text av dem. Den delen fungerade f\u00f6rsta kv\u00e4llen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Det sv\u00e5ra \u00e4r n\u00e4sta fr\u00e5ga: <em>ska det h\u00e4r bli en slide?<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tal \u00e4r en str\u00f6m. Slides \u00e4r diskreta. Mellan dem sitter ett omd\u00f6me som ingen transkribering kan ge dig, och det mesta jag s\u00e4ger under en f\u00f6rel\u00e4sning ska absolut inte hamna p\u00e5 duken. Utvikningar, upprepningar, ett svar p\u00e5 en fr\u00e5ga fr\u00e5n publiken, en mening jag b\u00f6rjar om. En assistent som g\u00f6r en slide av varje yttrande \u00e4r inte hj\u00e4lpsam \u2014 den \u00e4r sabotage i realtid.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">S\u00e5 det finns en &#8221;regiss\u00f6r&#8221; i mitten som f\u00f6r varje yttrande fattar ett beslut: skapa ny slide, \u00e4ndra den befintliga, ta bort n\u00e5got, f\u00f6resl\u00e5 utan att g\u00f6ra, utf\u00f6ra ett kommando \u2014 eller, oftast, <strong>ignorera<\/strong>. Att ignorera \u00e4r det vanligaste och viktigaste utfallet.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Tv\u00e5 sp\u00e5r, f\u00f6r tidens skull<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En modell som funderar i fem sekunder \u00e4r oanv\u00e4ndbar p\u00e5 scen. Publiken hinner titta p\u00e5 dig, p\u00e5 duken, och sedan p\u00e5 dig igen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">D\u00e4rf\u00f6r g\u00e5r uppenbara r\u00f6stkommandon en genv\u00e4g: s\u00e4ger jag &#8221;ta bort den senaste sliden&#8221; eller &#8221;\u00e4ndra rubriken till \u2026&#8221; utf\u00f6rs det direkt, utan att n\u00e5gon modell blandas in. Deterministiskt, omedelbart, gratis.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Och d\u00e4r ligger detaljen jag \u00e4r gladast \u00f6ver. Genv\u00e4gen har ett <strong>negationsskydd<\/strong>. S\u00e4ger jag &#8221;vi ska <em>inte<\/em> ta bort den h\u00e4r sliden&#8221; matchar m\u00f6nstret fortfarande \u2014 men meningen \u00e4r den motsatta. S\u00e5dana fall skickas vidare till modellen, som f\u00f6rst\u00e5r skillnaden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Det \u00e4r i miniatyr hela po\u00e4ngen med att blanda regler och modeller: regler \u00e4r snabba och f\u00f6ruts\u00e4gbara \u00e4nda tills spr\u00e5ket blir spr\u00e5k. D\u00e5 beh\u00f6vs omd\u00f6me. Att v\u00e4lja det ena eller det andra fullt ut ger antingen ett system som \u00e4r dumt eller ett som \u00e4r l\u00e5ngsamt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Offline \u00e4r inte ett l\u00e4ge, det \u00e4r kravet<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Den som f\u00f6rel\u00e4st hos kund vet hur g\u00e4stn\u00e4tet fungerar: det finns, det \u00e4r l\u00e5ngsamt, och det blockerar s\u00e5dant du beh\u00f6ver. Att f\u00f6ruts\u00e4tta uppkoppling n\u00e4r man st\u00e5r i n\u00e5gon annans lokal \u00e4r att planera f\u00f6r att misslyckas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Allts\u00e5 faller modellkedjan ned\u00e5t i steg. F\u00f6rst en modell i molnet om den svarar. Annars en kraftigare maskin hemma \u00f6ver tunnel. Annars en modell som k\u00f6r lokalt p\u00e5 laptopen, p\u00e5 det integrerade grafikkortet. Kedjan h\u00e4lsokontrolleras l\u00f6pande, s\u00e5 bytet sker innan jag m\u00e4rker det \u2014 inte efter en timeout mitt i en mening.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Samma t\u00e4nk genom hela systemet. Bilder genereras vid sidan om: sliden visas <em>direkt<\/em> med sin text, och bilden tonar in n\u00e4r den \u00e4r klar \u2014 eller uteblir tyst om det inte g\u00e5r. Ingen slide v\u00e4ntar n\u00e5gonsin p\u00e5 en bild.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Och delning: s\u00e4ger jag att presentationen ska delas paketeras den som en sj\u00e4lvb\u00e4rande fil. G\u00e5r servern att n\u00e5 l\u00e4ggs den upp p\u00e5 en publik adress. G\u00e5r den inte att n\u00e5 serveras den fr\u00e5n laptopen \u00f6ver en egen hotspot i st\u00e4llet. I b\u00e5da fallen l\u00e4ggs en QR-kod som sista slide, och publiken m\u00e4rker aldrig vilken av v\u00e4garna som anv\u00e4ndes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ingenting f\u00e5r d\u00f6 p\u00e5 scen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Om jag skulle sammanfatta hela bygget i en princip \u00e4r det den. Varje fel har en degraderad v\u00e4g fram\u00e5t, och ingen av dem \u00e4r &#8221;stanna&#8221;.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Mikrofonen tappar kontakten \u2192 felmeddelande i styrvyn och nytt f\u00f6rs\u00f6k var femte sekund.<\/li>\n<li>Modellen svarar inte \u2192 n\u00e4sta i kedjan.<\/li>\n<li>Modellen svarar med n\u00e5got som inte g\u00e5r att tolka \u2192 ett omf\u00f6rs\u00f6k, sedan ignoreras yttrandet med en varningsrad.<\/li>\n<li>Bildgenereringen fallerar \u2192 sliden blir en textslide.<\/li>\n<li>Servern \u00e4r on\u00e5bar \u2192 hotspot.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">V\u00e4rsta t\u00e4nkbara utfall \u00e4r allts\u00e5 <em>en utebliven slide<\/em>. Det \u00e4r en niv\u00e5 av felhantering jag s\u00e4llan bygger annars, och sk\u00e4let \u00e4r enkelt: h\u00e4r finns ingen omstart att g\u00f6ra. Det g\u00e5r inte att be trettio personer v\u00e4nta.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Allt destruktivt \u00e4r dessutom \u00e5ngerbart. Varje \u00e4ndring skriver en historikrad, och &#8221;ta bort den d\u00e4r&#8221; har alltid en v\u00e4g tillbaka. Ett system som agerar p\u00e5 r\u00f6st <em>kommer<\/em> att missf\u00f6rst\u00e5 ibland \u2014 d\u00e5 m\u00e5ste \u00e5ngra vara ett tangenttryck, inte en fels\u00f6kning.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">T\u00e4nkpanelen: en bugg som blev en po\u00e4ng<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Under utvecklingen hade jag en panel som visade regiss\u00f6rens beslut i klartext \u2014 vad den h\u00f6rde, vad den valde, varf\u00f6r. Ren fels\u00f6kning.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Den ligger nu kvar som ett valbart inslag <em>p\u00e5 duken<\/em>, synlig f\u00f6r publiken.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00e4r jag pratar om AI \u00e4r det mest \u00f6vertygande jag kan g\u00f6ra att visa maskineriet i st\u00e4llet f\u00f6r att beskriva det. Publiken ser yttrandet komma in, ser beslutet fattas, ser sliden dyka upp \u2014 inklusive de g\u00e5nger den v\u00e4ljer att ignorera mig, vilket ofta \u00e4r det som g\u00f6r starkast intryck. Det \u00e4r ocks\u00e5 \u00e4rligare: en assistent vars resonemang \u00e4r dolt ber om f\u00f6rtroende, en vars resonemang syns f\u00f6rtj\u00e4nar det.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Vad jag tar med mig<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Omd\u00f6met \u00e4r produkten.<\/strong> Taligenk\u00e4nningen, modellen och gr\u00e4nssnittet \u00e4r komponenter som g\u00e5r att byta ut. Det som avg\u00f6r om verktyget \u00e4r anv\u00e4ndbart \u00e4r hur ofta det l\u00e5ter bli att g\u00f6ra n\u00e5got \u2014 och det \u00e4r inget som g\u00e5r att m\u00e4ta i ett test, bara i ett rum med m\u00e4nniskor i.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Skriv failure-v\u00e4garna f\u00f6rst.<\/strong> Jag brukar bygga funktionen och l\u00e4gga till felhanteringen efter\u00e5t. H\u00e4r gick det inte, f\u00f6r felhanteringen <em>var<\/em> designen. Det \u00e4r en ordning jag borde anv\u00e4nda oftare.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Och det obekv\u00e4ma:<\/strong> det b\u00e4sta l\u00e4get \u00e4r fortfarande att presentera utan den. Verktyget g\u00f6r en f\u00f6rel\u00e4sning mer levande, inte enklare \u2014 jag m\u00e5ste b\u00e5de prata och h\u00e5lla reda p\u00e5 vad maskinen g\u00f6r. Den som hoppas att AI ska ta bort f\u00f6rberedelsen kommer att bli besviken. Den tar bort efterarbetet, vilket \u00e4r n\u00e5got helt annat.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>Taligenk\u00e4nningen fungerade f\u00f6rsta kv\u00e4llen. Det sv\u00e5ra var n\u00e4sta fr\u00e5ga: ska det h\u00e4r bli en slide? Om omd\u00f6me som produkt, och om att bygga n\u00e5got som inte f\u00e5r d\u00f6 framf\u00f6r publik.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-31","post","type-post","status-publish","format-standard","hentry","category-ai-i-praktiken"],"_links":{"self":[{"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/posts\/31","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/comments?post=31"}],"version-history":[{"count":0,"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/posts\/31\/revisions"}],"wp:attachment":[{"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/media?parent=31"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/categories?post=31"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/tags?post=31"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}