Mailagenten och skyddsnäten som inte litar på modellen

Fem domäner har supportadresser. Bakom var och en sitter en språkmodell som läser inkommande mejl och fattar ett av tre beslut: svara, skicka vidare till en människa eller arkivera.

Den har gjort det i månader, på riktiga kunder. Det intressanta med den är inte modellen — det är de två skyddsnäten runt den, som är byggda för att fungera även när modellen har fel.

Vad som är farligt med ett automatiskt svar

Det uppenbara felet är att svara dumt. Det är obehagligt men överlevbart — en kund som får ett konstigt svar skriver oftast igen.

Det verkligt farliga felet är det tysta: att ett riktigt mejl klassas som skräp och arkiveras. Ingen får veta. Kunden tror att du läst det. Du vet inte ens att det kommit. Felet upptäcks veckor senare, när någon frågar varför de aldrig fick svar — om ens då.

All design utgår från det. Ett dåligt svar är ett problem. Ett borttappat mejl är ett haveri.

Skyddsnät ett: modellen får inte kasta något som redan bedömts

Innan agenten ser mejlet har det redan passerat ett vanligt spamfilter. Det filtret är statistiskt, väl beprövat och gör en bedömning: skräp eller inte.

Regeln är enkel: har spamfiltret släppt igenom mejlet får agenten inte arkivera det. Vill modellen ändå göra det blir beslutet i stället ”skicka vidare till människa”.

Det är en avsiktlig försämring. Det ger fler mejl i inkorgen än nödvändigt. Men det gör den enda oåterkalleliga åtgärden — tystnad — omöjlig att nå genom ett modellfel. Två oberoende system måste vara överens innan något försvinner.

Skyddsnät två: allt som går fel blir en människas problem

Modeller är opålitliga på ett sätt som skiljer sig från vanlig mjukvara. De kan svara långsamt. De kan svara med något som ser ut som svaret men inte går att tolka maskinellt. De kan vara nere.

Varje sådant utfall — timeout, trasigt svarsformat, modellen svarar inte — ger samma resultat: mejlet vidarebefordras till en människa. Aldrig ett standardsvar, aldrig ett nytt försök i all oändlighet, aldrig tyst arkivering.

Det viktiga är att ingen del av skyddsnätet är beroende av att modellen fungerar. Det är vanlig kod med vanliga villkor. Man kan inte skydda sig mot en opålitlig komponent med hjälp av samma komponent — och det är precis vad man gör när man ber modellen bedöma sin egen säkerhet.

Modellbytet, och varför det gjordes

Agenterna gick länge på en modell som var bra på resonemang och märkbart sämre på svenska. Det upptäcktes inte i något test. Det upptäcktes när jag läste ett utgående svar och hittade ord som inte finns: beframstalar. Gärviska gärna. Detaljjerna.

Beslutet var rätt: svara vidarebefordra eller arkivera — logiken fungerade. Språket var pinsamt. Och det är en helt egen kategori av fel, som ingen automatisk kontroll fångar, eftersom texten är välformad, grammatiskt trolig och fullständigt obegriplig.

Alla fem domäner byttes till en annan modell. Läxan är att utvärdering av en modell måste ske på det språk och i den ton den faktiskt ska användas i. En modell som resonerar utmärkt på engelska kan producera nonsens på svenska utan att någon mätsiffra reagerar.

Kunskapen ligger utanför modellen

Varje domän har en egen textfil med fakta om just den verksamheten — vad tjänsten gör, vanliga frågor, vad som gäller kring priser och villkor. Den matas in i systemprompten.

Det betyder att den som ska uppdatera vad agenten kan inte behöver röra kod, prompt eller modell. Det är en textfil. Den kan skrivas av den som kan verksamheten i stället för den som kan tekniken, och det är hela poängen — annars blir varje faktaändring ett utvecklingsärende.

Så vet du att det funkar

Läs utgående mejl med egna ögon, regelbundet. Inte statistiken över hur många som besvarats — själva texten. Språkfelen ovan hade kunnat pågå i månader bakom en grön mätare.

Räkna arkiveringarna. Det är den enda kategorin ingen klagar på, och därför den enda som kan gå fel utan att någon märker det. Går siffran upp ska man bli misstänksam, inte nöjd.

Provocera fram ett modellfel. Stäng av modellen och skicka ett mejl. Hamnar det hos en människa fungerar skyddsnätet. Får du ett standardsvar, eller ingenting alls, är det inte ett skyddsnät utan en förhoppning.

Vad jag tar med mig

Frågan ”kan man lita på modellen?” är fel fråga. Svaret är nej, och det spelar mindre roll än man tror. Den rätta frågan är: vad händer när den har fel, och vem märker det?

Ett system där modellens värsta utfall är ”en människa får titta på det” tål en dålig dag. Ett system där modellens värsta utfall är tystnad gör det inte — oavsett hur bra modellen är i genomsnitt.

Det är också därför jag vågar ha det här i drift mot riktiga kunder. Inte för att jag litar på modellen, utan för att jag vet vad som händer när den inte förtjänar det.

Skrivet av Daniel Azzarri · Om · Alla inlägg