Gå til hovedindhold

AI - citathistorier, irammesætning og tillid

Indsendt af Lennart den

Der findes en artikelform i dansk journalistik, som alle kender og ingen skilter med: citathistorien. Man bygger på et andet medies arbejde, et bureau eller en pressemeddelelse, skriver historien om i sin egen stil og løfter et par citater ordret fra originalen. Formen er helt legitim, og den er også præcis dér, hvor det går galt, hvis ingen holder øje.

Reglerne er lette at sige højt. Kreditér mediet ved navn, og gør det tidligt. Løft højst to citater ordret. Skriv vinklen selv i stedet for at genfortælle originalens disposition. Læg mindst én ting til, som ikke stod der. Vær eksplicit om, hvad du ikke selv har bekræftet.

Fem sætninger. Enhver redaktør kan nikke til dem. Og enhver redaktør ved også, at de bliver brudt, ikke af ond vilje, men af travlhed på en onsdag klokken 16.

Jeg har brugt de sidste par aftener på at gøre den form tilgængelig for en sprogmodel, der skriver i en lille redaktions vidensbase. Det viste sig at handle om noget helt andet end at skrive gode instrukser.

Regler i prosa er ikke regler

Den normale fremgangsmåde er at skrive retningslinjerne ned i det dokument, modellen læser ved starten af hver session, og bede den følge dem. Det virker, indtil det ikke gør. En instruks i prosa er noget, modellen tager med i sin afvejning sammen med alt muligt andet: opgaven, tonen, det brugeren lige har sagt. Den bliver fulgt de fleste gange.

»De fleste gange« er en fin standard for et forslag og en elendig standard for en forpligtelse over for et andet medie.

Der var også en anden slags problem. Redaktionens egen skrevne standard lyder: vi bringer ikke noget, vi ikke har kunnet bekræfte hos mindst en navngiven kilde. Læst bogstaveligt forbyder den citathistorien fuldstændig. Den regel var ikke forkert — den var bare skrevet, før formen fandtes, og ingen havde opdaget kollisionen, fordi ingen af delene stod et sted, hvor de kunne støde sammen. Løsningen blev at skrive attributionen eksplicit ind: den navngivne original er attributionen, og det, vi ikke selv har bekræftet, skriver vi at avisen skriver.

Så flyttede vi reglerne. Ikke ud af prosaen, men ned i noget, der kan afvise.

Tre felter, en grænse og en dør

Formatet er nu en type i redaktionens skema. En historie kan være nyhed, analyse, kommentar, interview, reportage, feature, faktatjek eller citat. Vælger man den sidste, kræver skemaet to felter mere:

format: citat
lifted_quotes: 1
origin:
  outlet: Politiken
  resource: https://politiken.dk/samfund/art9999999
  title: Ministeriet holdt rapporten tilbage i fire måneder
  kind: medie

origin er originalen, vi krediterer, med mediet og adressen som påkrævede. lifted_quotes er antallet af ordret løftede citater, og loftet på to står i skemaet som maximum: 2. Skriver nogen 3, går valideringen ikke igennem:

frontmatter › lifted_quotes: 3 is greater than the maximum of 2
  hint: hvor mange citater der er løftet ordret fra originalen — loftet er to

Det er den vigtigste pointe i hele indlægget, så jeg skriver den igen på en anden måde: loftet på to citater er ikke længere en hensigt, en model skal huske. Det er et tal, en validator afviser. Forskellen på de to er forskellen på en politik og en spærring.

Læg mærke til hint-linjen. Den kommer fra skemaets egen beskrivelse, hvilket vil sige, at fejlmeldingen er skrevet af den, der skrev reglen. En redaktør, der rammer den, får en redaktionel forklaring frem for en teknisk. Det er et lille træk, og det er dét, der afgør, om folk lærer af en kontrol eller lærer at hade den.

Dernæst er der døren ud. Modulet, der sender historien til sitet, nægter at publicere en citathistorie, hvis mediets navn ikke står i den færdige tekst, og hvis linket til originalen ikke er i den:

… er en citathistorie, og originalen krediteres ikke i den udgivne tekst.
'Politiken' skal nævnes ved navn og linkes inde i '## Folkets'.

Ikke i arbejdspapiret, hvor researchen ligger. I dét, læseren får. Krediteringen skal stå der, hvor den kan læses, og ikke der, hvor vi selv kan se den.

Der er et --force-flag. Det skal der være, for der findes altid det tilfælde, ingen forudså. Men at gå udenom kræver, at man skriver det, og det er hele pointen: undtagelsen bliver synlig, hvor den ellers ville have været usynlig.

Det, maskinen ikke må lade som om, den ved

Kommandoen, der viser historien igennem før afsendelse, tæller også citatlignende passager i den færdige tekst og holder tallet op mod det, der er erklæret:

Original:     Politiken — https://politiken.dk/samfund/art9999999
Kreditering:  ja, navn og link står i teksten
Citater:      3 citatlignende passager i teksten, 1 deklareret løftet (loft: 2)

Den tælling er ikke en spærring, og det var en bevidst beslutning, som jeg synes er den mest overførbare i hele historien.

En maskine kan se anførselstegn. Den kan ikke se, om et citat er løftet fra Politiken eller kommer fra en kilde, redaktionen selv har ringet til. De to ting ser fuldstændig ens ud i teksten, og forskellen mellem dem er hele det spørgsmål, reglen handler om.

Havde vi bygget en spærring på tællingen, ville den have blokeret et legitimt stykke arbejde med jævne mellemrum. Og en spærring, der tager fejl med jævne mellemrum, bliver enten slået fra eller rutinemæssigt omgået inden for en måned. Så er den værre end ingenting, fordi alle nu tror, der er en kontrol.

Reglen, jeg vil have med videre til enhver, der bygger AI ind i en arbejdsgang: spær kun for det, maskinen faktisk kan afgøre. Alt det andet skal den vise frem. Uoverensstemmelsen mellem tre og én er ikke en fejl. Det er et sted at kigge, når mennesket læser igennem. Mennesket erklærer, maskinen tæller, uenighed bliver synlig.

Rammen om teksten

Historien lever som ét dokument, og det dokument indeholder langt mere end artiklen. Der ligger vinkel, researchplan, kildeliste, risici, næste træk og et afsnit med de ordrette citater, man overvejer at bruge.

Kun ét afsnit sendes ud. Modulet klipper det ud, løfter overskrifterne ét niveau og nægter at publicere, hvis afsnittet slet ikke findes. Standarden er altså, at intet slipper ud, før nogen aktivt har markeret en tekst som færdig.

Det er en simpel mekanisme, og det er netop derfor, den holder: grænsen mellem udkast og udgivelse er en overskrift, som både et menneske og en maskine kan se. Når arbejdspapiret og det udgivne har en fast grænse imellem sig, kan modellen skrive frit i det ene, uden at nogen skal være nervøs for det andet.

Jeg bruger det samme princip i jobsporet her i huset: ansøgningsbrevet, der bygges til PDF, samles af navngivne afsnit frem for ved at klippe ved en overskrift, så en ny sektion ikke kan havne hos arbejdsgiveren ved et uheld.

Fejlen, en gennemlæsning ikke ville have fanget

Aftenen før ændrede jeg et par felter i redaktionens hukommelsesdokument med et lille script og tabte ét linjeskift før den afsluttende streg. Filen sluttede med sort: created:1--- i stedet for på to linjer.

I en editor ser det ud, som om intet er galt. Men den blok, der skulle være struktureret information, blev nu læst som almindelig brødtekst, og dokumentet holdt op med at være dét, det påstod at være. Valideringen fangede det med det samme og rapporterede elleve problemer, hvoraf det første var, at et afsnit optrådte to gange, hvor der højst måtte være ét.

Fejlmeldingerne pegede i øvrigt det forkerte sted hen — de klagede over manglende afsnit, som var der hele tiden — så jeg brugte et kvarter på at lede efter årsagen ved at rulle mine ændringer tilbage én ad gangen. Det er værd at nævne, fordi det er den realistiske oplevelse: en validering, der fanger noget, er ikke det samme som en validering, der forklarer det. Den første er stadig langt mere værd end ingen.

Pointen er, at et menneske aldrig havde set det. Filen så rigtig ud.

Hvor mennesket står

Fire steder, og de er valgt med omhu.

Ingen historie publiceres, medmindre den står som gennemlæst. Der er seks trin fra idé til udgivet, og kun ét af dem åbner døren. Et udkast kræver igen --force, af den banale grund at et udkast per definition ikke er læst igennem.

Første publicering er en ukendt kladde. Uden et ekstra flag lander historien som en upubliceret side på sitet, hvor den kan ses i sin rigtige form, før nogen beslutter, at den skal ud. To skridt frem for ét, fordi det er billigt at tage to og dyrt at fortryde ét.

Alt, modellen skriver, bliver stemplet. Hvert dokument bærer, hvem der skrev det og hvornår, og der er et felt ved siden af til, hvem der har set det efter. Det er den samme mekanik, jeg har skrevet om før: en maskinskrevet fejl ligner en menneskeskrevet sandhed, og den ligger i samme mappe. Modellen må gerne skrive. Den skal bare skrive under.

Og så er der dét, ingen validator fanger. Jeg fangede et mønster i modellens egne udkast: den brugte de samme fire manerer igen og igen — tankestreg som åndedrag, konstruktionen »ikke X, men Y«, tre led i enhver opremsning uanset hvor mange der var, og fed skrift i starten af hvert punkt på en liste. Det er ikke en fejl, noget skema kan se. Hver enkelt sætning er korrekt. Det er summen, der lyder maskinel, og det kan kun opdages af nogen, der læser en uges tekster efter hinanden. De fire står nu på en bandlyst-liste i husstilen, men den liste kunne ikke være opstået af sig selv.

Hullet, jeg ikke har lukket

Der er én regel, ingen maskine i opsætningen håndhæver: at et løftet citat står ordret, som det stod i originalen. Det kræver, at originalens tekst gemmes i vidensbasen, og det er en selvstændig beslutning om ophavsret og lagring, jeg ikke har taget endnu.

Jeg skriver det her, fordi det er den ærlige tilstand, og fordi det er den slags, der forsvinder, når man præsenterer en opsætning. En kontrol, der ikke findes, skal man vide, at man ikke har.

Hvad en virksomhed skal tage med

Det her er en nyhedsredaktion, men mekanikken er ikke journalistisk. Den gælder ethvert sted, hvor en model producerer noget, som går videre til nogen udenfor: tilbud, svar til kunder, rapporter, indstillinger til et udvalg.

  • Skriv reglen ned dér, hvor den kan afvise. En regel i en instruksfil bliver fulgt de fleste gange. En regel i et skema bliver fulgt hver gang eller siger fra.
  • Læg kontrollen ved udgangen, ikke kun ved indgangen. Det afgørende tjek er ikke, om modellen fik den rigtige instruks, men om det, der faktisk sendes af sted, holder.
  • Byg kun spærringer på det, der kan afgøres. Resten skal vises frem for et menneske. En kontrol, der lyser forkert, bliver slået fra.
  • Gør undtagelsen mulig og synlig. Uden en dør bliver hele systemet omgået. Med en dør, der skal åbnes med vilje, kan man se, hvor ofte det sker.
  • Adskil arbejdspapiret fra det udgivne med noget hårdt. Ikke en overskrift, man er enig om at respektere.
  • Lad fejlmeldingen være skrevet af den, der skrev reglen. Den bliver læst af en, der har travlt.

Ingen af de seks handler om modellen. Det er rammen og ikke indholdet, og det er derfor, arbejdet kunne laves på et par aftener og gælder for alt, hvad redaktionen skriver bagefter.

Til sidst

En sprogmodel kan ikke være ansvarshavende redaktør. Den rolle betyder noget bestemt i dansk presseret: én navngiven person står til ansvar for det udgivne over for læsere, kilder og Pressenævnet. Konsekvensen af en fejl rammer det menneske, ikke modellen — og modellen glemmer sessionen, mens mennesket bliver siddende med den.

Det er den egentlige grund til, at det sidste flag skal skrives i hånden. Ikke fordi modellen skriver dårligt. Den skriver godt. Den kan bare ikke bære et ansvar, og derfor skal den heller ikke have lov at afgøre, hvornår noget er sendt.

Se Validering for princippet om lukkede kontrolloops, Compound AI systems for den deterministiske skal om en model, der ikke selv har nogen, og OKF for det format, herkomstfelterne kommer fra.