hypomnemata
/sök

Medan jag sov

Om AI-medarbetare på nattskift, digitala läkarkonsilier och program som lagar sig själva.

Varje natt, medan jag sover, lagas eventuella fel i mina IT-system av sig själva.

Eller, det är kanske att ta i. Jag har några AI-medarbetare som jobbar nattskift. Fast egentligen arbetar de treskift. Dag som natt håller de utkik efter misstag som jag, eller någon annan, lyckats smuggla in i koden.

Ja, även solen har fläckar. Och till skillnad från solen har jag numera personal som städar upp efter mig.

Det fina är att de varken kräver OB-tillägg, semesterersättning eller kaffe. Det mindre fina är att de ibland behöver övervakas ungefär som en grupp mycket entusiastiska AT-läkare med obegränsad tillgång till receptblocket.

Därför har jag byggt något som jag kallar min buggrättningsloop.

När någon blir sjuk

Allt börjar med Bugsink, ett system som samlar in felrapporter från mina applikationer.

När något går snett skickas en rapport med information om vad som hände, var det hände och vilka omständigheter som föregick olyckan. Lite som en ambulansrapport, fast utan blåljus och med betydligt fler stack traces.

Det betyder däremot inte att rapporten talar sanning.

Informationen kan komma från vem som helst som använder systemet. En felrapport kan vara missvisande, ofullständig eller rent av innehålla instruktioner som försöker lura en AI att göra något dumt.

Därför gäller en enkel regel: Felrapporten får peka ut den misstänkta brottsplatsen. Koden avgör vad som faktiskt har hänt.

En skillnad som kanske borde tillämpas oftare även utanför programmeringens värld.

De flesta nätter händer för övrigt ingenting alls. Listan över fel är tom, vilket är precis som det ska vara. Då stannar loopen innan någon AI-modell ens har startats.

En frisk patient behöver ingen operation, och en tom lista kostar inte en enda token i AI-arbete.

Välkommen till konsiliet

När ett fel faktiskt dyker upp börjar det roliga.

Jag har nämligen försökt efterlikna den där välfungerande läkarmottagningen som främst existerar i amerikanska TV-serier.

Ni vet. En patient rullas in på en bår och inom trettio sekunder har två överläkare, fyra specialister och ett halvt dussin sjuksköterskor samlats kring patienten. Alla är oerhört kompetenta, alla har synpunkter och någon ropar regelbundet efter ytterligare prover.

I min version är patienten ett program som inte riktigt mår bra.

Först får en AI-agent undersöka felet och föreslå en behandling. Sedan granskas förslaget av ett konsilium.

Två huvudläkare måste vara överens om diagnosen och behandlingen. En triageexpert avgör om ytterligare specialister behöver kallas in.

Och jag har naturligtvis en hel specialistmottagning:

  • Behörighetsspecialisten undersöker autentisering, roller och rättigheter. Misstänksam av naturen.
  • Systemspecialisten kontrollerar om behandlingen av en patient riskerar att ta livet av en annan, kanske i ett helt annat repository.
  • Beteendespecialisten funderar över vad som händer när tusen användare gör något som utvecklaren bara provade med tre.
  • Faktagranskaren kontrollerar att diagnosen bygger på verkligheten och inte på något som en språkmodell tycker låter rimligt.

Dessutom finns nu mer två nyförvärv som jag stolt kan presentera. Dessa fanns inte med i första versionen av snurran när den först byggdes:

  • Säkerhetsspecialisten letar efter sådant som kan förvandla en liten bugg till en större katastrof.
  • Driftspecialisten undersöker om olyckan skedde på grund av patienten snubblade över ny kod som knycklat ihop sig som en trasmatta på ett nybonat golv och om vi tillfälligt borde ta bort eller spika fast trasmattan så att ingen annan går och snubblar på den.
AI modeller som exempel – varje snurra kan få olika modeller beroende på vilken roll de skall spela.

Alla specialister behöver förstås inte rycka ut varje gång någon har fått en sticka i fingret.

Men om konsiliet bedömer att deras sakkunskap behövs blir de inkallade.

Och precis som på ett riktigt sjukhus händer det att läkarna inte är överens.

Då skickas patienten tillbaka för ytterligare undersökning. Högst två gånger. Därefter får förslaget läggas åt sidan och hanteras av annan personal (jag).

Även AI-läkare behöver lära sig när det är dags att sluta operera.

Vem får hålla i skalpellen?

Här kommer vi till en ganska viktig fråga.

Bara för att en AI har hittat ett fel och föreslagit en lösning betyder det inte att den ska få ändra produktionskoden hur som helst.

Olika uppdrag kräver olika befogenheter.

En AI som skriver kompletterande tester kan mycket väl få lov att automatiskt slå samman sitt arbete med kodbasen, förutsatt att alla kontroller är gröna.

En AI som ändrar autentisering, behörigheter eller andra känsliga delar får däremot nöja sig med att lämna ett förslag.

Där kommer jag in i bilden (igen).

Det är fortfarande jag som bestämmer vem som får hålla i skalpellen.

Dessutom finns ett antal mekaniska nödbromsar. Utvecklingsmiljön måste vara frisk, arbetet ska kunna genomföras i en sandlåda och upprepade misslyckanden får inte leda till att systemet envist försöker samma sak i all evighet.

Om en automatisk ändring har behövt återställas kan den befogenheten också dras tillbaka.

Entusiasm är en förträfflig egenskap hos en medarbetare. Men den är ingen ersättning för omdöme.

Journalföring och väntelistor

Varje behandling dokumenteras.

Inte bara vad som gjordes, utan också vilka kontroller som genomfördes och vad de faktiskt visade.

Det är en viktig skillnad.

En språkmodell kan vara oerhört övertygande när den berättar vad den tror har hänt. Därför får nästa AI-agent inte en vacker berättelse om föregångarens framgångar, utan en journal över vad som faktiskt prövats.

Det finns också en projekt- och Kanbantavla där konsiliet kan placera frågor som behöver mänsklig uppmärksamhet.

En del upptäckter är inte buggar utan snarare förbättringsmöjligheter, oklarheter eller brister i dokumentationen. De hamnar i Backlog, där de får vänta tills någon har tid.

Andra fynd kan behöva akut uppmärksamhet. Då kan säkerhets- eller driftansvariga få ett meddelande.

Och ibland blir slutsatsen helt enkelt att ett föreslaget ingrepp inte ska utföras.

Även det är ett resultat värt att dokumentera.

En liten evighetsmaskin. Nästan.

Själva snurran är egentligen inte särskilt mystisk. Faktum är att jag har ett antal snurrande för olika uppdrag.

Snurran går igenom tidigare resultat, kontrollerar om det finns något nytt att göra, låter en AI utföra uppdraget, granskar resultatet och beslutar vad som ska hända härnäst.

Ett godkänt förslag blir en pull request, som antingen kan slås samman automatiskt eller invänta mitt godkännande. Ett osäkert förslag kan skickas tillbaka för omarbetning. Saknas information kan en fråga ställas. Ett förkastat förslag dokumenteras så att nästa körning inte behöver upprepa samma misstag.

Ett digitalt kretslopp – eller ”The circle of life”

Bara en snurra av varje sort åt gången får arbeta, jag har trots allt en token-budget att råda över, och antalet försök är begränsat.

Det är alltså inte en samling AI-agenter som springer omkring och ändrar kod efter eget huvud.

Det är snarare en liten organisation med arbetsbeskrivningar, befogenheter, kvalitetskontroller och en chef som emellanåt behöver fatta beslut.

Precis som på en vanlig arbetsplats.

Fast med färre möten.

Medan jag sov

I natt hände det för första gången.

När jag vaknade hade buggrättningsloopen faktiskt hittat ett fel, undersökt det, föreslagit en lösning och fått den godkänd av sitt konsilium.

En pull request låg och väntade på mig.

Felet?

Under vissa omständigheter tolkade programmet en hexadecimal färgkod felaktigt. Resultatet blev att ett element fick sin standardfärg i stället för den färg det egentligen skulle ha.

Inga servrar hade kraschat. Inga användardata hade gått förlorade. Ingen digital patient låg på intensivvårdsavdelningen.

En färg var fel.

Det hade alltså krävts ett helt digitalt läkarkonsilium, med specialister, journalföring, säkerhetskontroller och möjlighet till akutinsatser, för att komma fram till att något borde vara blått i stället för grått.

Men vet ni vad?

Det var en ganska fin känsla att sitta vid frukostbordet och veta att någon hade hittat och lagat ett fel i mina program medan jag sov.

Jag granskade förslaget och kunde godkänna det.

En liten bugg för mänskligheten.

Ett ganska stort steg för min arbetsdag.




Lämna en kommentar