Sånn lar TV 2 KI moderere kommentarer
– Vi måtte utvikle vår egen løsning, skriver Artur Gosan, og forklarer hvordan.
Det er alltid fascinerende å bruke teknologi til å skape tjenester som gir bedre opplevelser for brukere, bygger engasjement og fremmer interaksjon.
Når vi i TV 2 startet arbeidet med et inline-kommentarsystem for TV2.no, var dette en utmerket mulighet til å eksperimentere og oppleve dette igjen – denne gangen med et fullautomatisert AI-agentisk system for kommentarmoderering som ikke bare håndterer volumet, men også forstår kontekst og norske kulturelle normer.
Prolog: Fra NRK til TV 2 – hvordan AI endret utviklingen
Før jeg begynte å jobbe med TV 2s kommentarsystem, hadde jeg allerede erfaring med å integrere kommentarsystemer i ulike kontekster.
I min forrige jobb i NRK var jeg delen av teamet som var ansvarlig for å koble sammen slike løsninger i tre forskjellige bruksområder: hoved CMS for NRK.no-artikler, P3.no/meninger, og TV-grafiske kommentar-elementer som ble sendt på lufta under valgnatten.
Alle tre var klassiske systemintegrasjoner: koble sammen API-er, håndtere dataflyt, og sikre at alt fungerte sammen. Modereringen var fortsatt manuell.
Men utviklingen har endret seg drastisk siden den gang. Med introduksjonen av AI-teknologier har vi fått helt nye muligheter – ikke bare for å koble sammen eksisterende tjenester, men for å utvikle og teste intelligente løsninger som kan forstå, lære, og ta beslutninger på egen hånd.
Noe som tar over administrative oppgaver og frigjør tid, slik at journalister og redaktører kan fokusere på de gjør best – å skrive artikler – i stedet for å overvåke kommentarfelt.
Akt 1: Et innovativt kommentarsystem for TV 2 – og en ny bruk av AI
For kommentarsystemet for TV2.no ønsket vi å prøve noe annet.
Løsningen vi startet å designe og utvikle var et inline-kommentarsystem, hvor lesere kan kommentere spesifikke steder i artikkelen, ikke bare nederst på siden.
Dette gir leserne mulighet til å engasjere seg mer direkte med innholdet. I stedet for å ha alle kommentarene samlet i én seksjon, kan lesere nå kommentere på spesifikke kapitler eller avsnitt, noe som skaper en mer kontekstuell og meningsfull diskusjon.
Akt 2: Bygge eller kjøpe? Valget av løsning
Når vi startet arbeidet med modereringsløsningen, sto vi overfor spørsmålet: skal vi utvikle vår egen løsning, eller skal vi kjøpe en ferdig hyllevære?
Sammen med teamet vurderte vi flere eksisterende produkter og tjenester. Vi så til og med på Perspective API fra Google, som er en populær tjeneste for automatisk innholdsmoderering.
Men etter grundig evaluering, kom vi til konklusjonen at vi måtte utvikle vår egen løsning.
Hvorfor? For det første trengte vi et system som var spesifikt tilpasset norsk kultur og språk. Eksisterende tjenester er ofte utviklet for engelsk språk og internasjonale kontekster, og de forstår ikke nødvendigvis norske kulturelle normer, dialekter eller medielov.
Og for det andre trengte vi full kontroll over modereringsprosessen. Vi måtte kunne justere kriteriene, tilpasse dem til ulike seksjoner (nyheter, sport, underholdning, osv), og kontinuerlig forbedre løsningen basert på feedback og resultater.
Akt 3: Arkitektur – utvikle et robust system
Etter noen runder med eksperimenter, endte vi opp med en ren arkitektur for modereringsløsningen, som består av flere tjenestegrupper, hver med sitt spesifikke ansvar.
Vårt første forsøk på å automatisere kommentarmodereringen dreide seg om å utvikle en løsning som kunne løse følgende utfordringer:
- Konsumere modereringskøen: Automatisk henting og prosessering av uprosesserte kommentarer
- Skape artikkelkontekst: Ekstraksjon av nøkkelinformasjon fra artikler for bedre moderering
- Prosessere i batches: Effektiv behandling av flere kommentarer samtidig
- Koble til AI: Kommunikasjon med språkmodeller for intelligent moderering
Køkonsumering:
Først har vi tjenesten som er ansvarlig for å konsumere modereringskøen. Denne kjører periodisk, henter uprosesserte kommentarer fra kommentarsystemet, og starter prosesseringsflyten.
Modereringsprosessering:
Deretter har vi hjertet i løsningen – tjenesten som tar seg av selve modereringsprosessen. Den grupperer kommentarer etter artikkel (siden kommentarer fra samme artikkel deler kontekst), skaper artikkelkontekst, og prosesserer kommentarene i batches.
AI-kommunikasjon:
Tjenesten som kommuniserer med AI-modellen håndterer både skapelse av artikkelkontekst og selve kommentarmodereringen. Den støtter også seksjonsspesifikk moderering med ulike prompts for nyheter, sport og underholdning.
Statusoppdateringer og varsler:
Til slutt har vi tjenester for å oppdatere kommentarstatus og sende varsler. Løsningen oppdaterer kommentarstatus basert på AI-beslutningen, og sender metrikker til overvåkingssystemer.
Denne arkitekturen gir oss flere fordeler:
- Separasjon av bekymringer: Hver tjeneste har et klart ansvar
- Skalerbarhet: Løsningen kan håndtere økende volum uten å måtte endre arkitekturen
- Feilhåndtering: Hvis en del av løsningen feiler, påvirker det ikke resten
- Testbarhet: Hver tjeneste kan testes uavhengig
Men arkitekturen var bare begynnelsen. Den virkelige utfordringen lå i å finjustere AI-promptene – å lære løsningen å forstå kontekst, tone og norske kulturelle normer.
Akt 4: Promptjustering – hjertet i systemet
Dette er kanskje den mest interessante delen av arbeidet med modereringsløsningen, og det er her vi brukte mest tid.
Å justere promptene var en kompleks prosess med mange dimensjoner – og det viste seg å være en lærepenge.
Artikkelkontekst – å gi AI-en øynene den trenger
Dette var en annen type utvikling enn det vi hadde gjort før. En av de første innsiktene vi fikk, var at AI-en trengte mye mer informasjon enn bare kommentaren selv. En kommentar som sier "Dette er feil" kan være alt fra konstruktiv kritikk til hatytring, avhengig av konteksten.
Vi skapte en mekanisme som først analyserer artikkelen og ekstraherer nøkkelinformasjon. Dette gjøres ved hjelp av en egen AI-funksjon som tar inn artikkelens detaljer, og returnerer en strukturert kontekst som inkluderer nøkkelpersoner som nevnes, forventet tone, og andre parametere som styrer hvordan modereringen skal utføres.
Denne konteksten lagres slik at den kan gjenbrukes for alle kommentarer på samme artikkel. Dette er ikke bare effektivt – det sikrer også konsistens.
Seksjonsspesifikke prompts – å forstå forskjellen mellom nyheter og sport
En annen viktig innsikt var at ulike seksjoner har ulike standarder.
En kommentar som er akseptabel i en sportartikkel (for eksempel lidenskapelig støtte til et lag) kan være uakseptabel i en nyhetsartikkel.
Derfor skapte vi separate prompts for ulike seksjoner som tilpasser modereringsstandardene til innholdet. Systemet detekterer hvilken seksjon en artikkel tilhører, og velger riktig prompt automatisk.
Prompt caching – å forstå hvordan AI-en husker
Prompt caching er en teknikk som lar oss cache (lagre) deler av prompten som ikke endrer seg mellom forespørsler. Dette er spesielt nyttig når vi har mange kommentarer på samme artikkel, fordi artikkelkonteksten (som er den største delen av prompten) er den samme for alle kommentarer.
Ved å markere den første delen av prompten (fellesinstruksjoner og artikkelkonteksten) med cache-kontroll, forteller vi modellen at denne delen kan caches og gjenbrukes.
Når neste kommentar på samme artikkel skal modereres, trenger modellen ikke å prosessere artikkelkonteksten på nytt – den kan gjenbruke den cachede versjonen.
Dette gir enorme besparelser. Uten caching bruker vi typisk 2000-3000 input-tokens per kommentar (artikkelkontekst + kommentar + instruksjoner). Med caching reduseres dette til 300-500 tokens (kun kommentar, siden artikkelkonteksten og instruksjoner er cached).
Vi overvåker cache-effektiviteten ved å analysere token-bruken. Dette lar oss sikre at vi får mest mulig ut av caching og identifisere muligheter for ytterligere optimalisering.
Metrikker og overvåking – å se hva som skjer
For å forstå hvordan systemet presterer, og for å kunne optimalisere det kontinuerlig, definerte vi et metrikk-system som gir hele teamet innsikt i ytelsen.
Vi samler inn metrikker på flere områder:
- Token-bruk: Input, output, og totale tokens per seksjon
- Ytelse: AI-kallvarighet og full prosesseringsvarighet
- Gjennomstrømming: Antall kommentarer prosessert, godkjent, og avvist
- Kvalitet: Konfidensscore og risikonivå-fordeling
- Operasjonelt: Køstørrelse, batch-størrelser, feilrater
Alle disse metrikkene gir oss en komplett oversikt over systemets helse og ytelse, og lar oss identifisere mønstre og optimalisere kontinuerlig.
Dette er ikke bare nyttig for overvåking – det er også essensielt for kontinuerlig forbedring. Ved å analysere dataene kan vi identifisere mønstre, oppdage problemer tidlig, og justere systemet for bedre ytelse.
Akt 5: Testing og automatisering – å utvikle det rette verktøyet
Å utvikle et AI-drevet modereringssystem er ikke bare om å skrive gode prompts – det handler også om å kunne teste og forbedre dem kontinuerlig. For dette utviklet vi to viktige verktøy som støtter arbeidet med modereringsløsningen.
Prompt-lab – å forstå hva som fungerer
Prompt-lab er et verktøy vi utviklet spesifikt for å automatisere promptjustering.
Det fungerer ved å kjøre test-sett med kommentarer gjennom ulike versjoner av prompts, og sammenligne resultatene. Dette gir oss innsikt i:
- Hvilke kommentarer som blir godkjent/avvist av ulike prompt-versjoner
- Konfidensscore-fordelingen for ulike prompts
- Token-bruk og ytelse for ulike prompts
- Forslag til forbedringer basert på analyse av resultatene
Verktøyet lar oss også teste og justere modellparametere som temperature og Top P, som styrer hvordan modellen genererer svar.
Temperature kontrollerer hvor deterministisk eller kreativ modellens output er – lavere verdier gir mer konsistente og forutsigbare resultater, mens høyere verdier gir mer variasjon.
Top P styrer diversiteten ved å begrense valget til de mest sannsynlige tokenene opp til en gitt sannsynlighetssum – lavere verdier gir mer fokuserte svar, mens høyere verdier tillater mer variasjon.
For kommentarmoderering er konsistens viktig, så vi tester typisk med lavere verdier for disse parameterne. Verktøyet analyserer resultatene og gir forslag til optimal justering av både prompt-innhold og modellparametere.
Verktøyet presenterer analyser og forslag på en oversiktlig måte. Det viser ikke bare tall, men også kontekst – hvilke kommentarer som ble påvirket, hvorfor, og hva som kan forbedres.
Comments overflow – å teste i skala
Et annet viktig verktøy er "comments overflow"-funksjonen. Dette er en funksjon som lar oss generere batches av kommentarer for en gitt artikkel med forventede modereringsresultater, og publisere dem automatisk for moderering.
Dette er svært nyttig for ytelses- og kvalitetstesting. Vi kan generere hundrevis av kommentarer med kjente forventede resultater, sende dem gjennom modereringsløsningen, og sammenligne resultatene med forventningene. Dette gir oss en objektiv måte å måle løsningens nøyaktighet på.
Kanskje viktigst av alt: det lar oss teste prompt-endringer raskt og systematisk. I stedet for å vente på at ekte kommentarer skal komme inn, kan vi generere testdata og se umiddelbart hvordan endringene påvirker resultatene.
Epilog: Fra manuell til AI-drevet – refleksjoner fra modereringsprosjektet
Arbeidet med å automatisere kommentarmoderering i TV 2 har gitt oss verdifull innsikt i hvordan AI kan transformere arbeidsprosesser. Fra de første utfordringene med å finne riktig tilnærming til dagens avanserte arkitektur med prompt caching og seksjonsspesifikk moderering, har vi utviklet en robust løsning som sikrer konsistens, effektivitet og skalerbarhet.
Utfordringer og lærdommer
Prosjektet ga oss mange verdifulle innsikter gjennom uforutsette utfordringer vi møtte underveis. Her er noen av de viktigste lærdommene:
- Kontekst er alt: En kommentar uten kontekst er som en setning uten sammenheng. Ved å gi AI-en riktig kontekst, kan den ta mye bedre beslutninger.
- Én størrelse passer ikke alle: Ulike seksjoner har ulike standarder, og systemet må tilpasses dette. En prompt som fungerer for nyheter fungerer ikke nødvendigvis for sport.
- Optimalisering er kontinuerlig: Prompt caching, batchprosessering, og andre optimaliseringer er ikke engangsprosjekter – de er kontinuerlige forbedringer som krever overvåking og justering.
- Metrikker er essensielle: Uten gode metrikker kan vi ikke forstå hvordan løsningen presterer, og vi kan ikke forbedre den. Metrikkene er ikke bare for overvåking – de er for læring.
- Testing må være systematisk: Å teste prompts manuelt er ikke bærekraftig. Vi trenger verktøy som lar oss teste raskt, systematisk, og objektivt.
Det er utrolig spennende å se hvordan AI-drevet moderering fungerer nå. Denne erfaringen viser at med riktig tilnærming og verktøy kan vi skape løsninger hvor teknologisk intelligens og menneskelig innsikt styrker hverandre – slik at konstruktive kommentarer kan blomstre, mens skadelig innhold filtreres bort automatisk og effektivt.
Jeg ser fram til neste spennende prosjekter som vi kommer til å utvikle sammen i TV 2.