Skip to main content

Jeg gav robotten et bureaukrati, og så blev den journalist

Submitted by Lennart on

Forleden skrev jeg om, hvorfor Folkets Avis producerede slop i et år, og hvad der skulle til for at komme videre. Den korte version: modellen var ikke problemet. Redaktionen fandtes ikke på skrift.

Her er den lange version. Altså den, hvor jeg åbner mappen og viser, hvad der faktisk ligger i den.

Det er værd at gøre, fordi der er en udbredt forestilling om, at et AI-system består af en prompt og en model. Når man så bygger et, viser det sig, at prompten og modellen er den mindste del. Resten er struktur: hvor tingene står, hvad der må stå hvor, hvem der har lov til at ændre hvad, og hvornår noget må komme ud.

Det er en mappe med tekstfiler

Ingen database. Ingen server. Ingen platform, nogen skal have login til.

Redaktionens hele hukommelse er markdown-filer i en git-mappe. Hvem vi er som publikation. Hvert dækningsområde. Hver kilde. Hver historie. En logbog over, hvad der skete hvornår.

Det er ikke nostalgi. Det er fordi en fil kan læses af et menneske i en editor, af en agent, af det næste værktøj om to år, og af grep. Den kan versionsstyres, så man kan se, hvem der ændrede hvad og hvornår, og rulle tilbage. Ingen af delene gælder for tekst, der ligger i en samtaletråd hos en leverandør.

Prøven er enkel: hvis systemet forsvinder i morgen, hvad har man så tilbage? Her har man en mappe, man stadig kan arbejde i i hånden. Det burde være minimumskravet for alt, man bygger.

Frontmatteret er formen, og maskinen håndhæver den

Øverst i hver fil står et lille felt-hoved. Hvilken type dokument det er. Hvor langt det er nået. Hvilket dækningsområde det hører til. Hvornår det blev skrevet, og af hvem.

Formen er ikke en aftale, folk skal huske. Den er skrevet ned som et skema, og iwe schema validate afviser dokumenter, der ikke overholder det. En historie uden gyldig type er ikke "lidt uordentlig", den bliver afvist.

Det er den vigtigste mekanik i hele systemet, og den er nem at underkende. En sprogmodel er suverænt god til at finde på et felt, der lyder rigtigt. Et skema er det eneste, der siger nej til den. Uden det driver formen langsomt, ét dokument ad gangen, indtil ingen af søgningerne virker, og ingen kan sige hvornår det gik galt.

Der er syv dokumenttyper. Ikke fjorten. Det var en beslutning, jeg skrev ned sammen med begrundelsen, så jeg ikke lige så stille kan tilføje en ottende uden at forholde mig til den.

Tilstand er et felt, ikke en mappe

En historie flytter sig gennem seks stadier: pitch, tildelt, research, kladde, gennemlæsning, udgivet.

Den flytter sig ikke fysisk. Den bliver i den samme fil, og feltet stage ændrer sig.

Det lyder som en detalje, og det er den mest brugbare i hele designet. Flytter man filer mellem mapper for at markere fremdrift, har man to kilder til sandheden: hvor filen ligger, og hvad der står i den. De to bliver uenige den dag, nogen kopierer i stedet for at flytte. Med ét felt er der ét sted at kigge, og man kan spørge systemet om alt, hvad der ligger i kladde lige nu, uden at vide hvor noget ligger.

Det samme gælder alle de andre steder, tilstand kan gemme sig. Hvis noget skal kunne stå på en liste, skal det være et felt. Prosa kan ikke tælles.

Skillelinjen mellem arbejdspapir og udgivet tekst

Et historiedokument indeholder to slags indhold. Vinkel, researchplan, risikovurdering, redaktionelle overvejelser, noter om hvad der ikke kunne bekræftes. Og så selve artiklen.

Artiklen står under en overskrift, der hedder ## Folkets. Kun det, der står under den, bliver sendt til sitet.

Standardindstillingen er altså, at intet slipper ud. Har dokumentet ikke det afsnit, nægter systemet at udgive, fordi der så ikke er skrevet nogen læsetekst endnu. Man kan skrive hvad som helst i resten af dokumentet uden at være nervøs for, at det havner hos læseren.

Det er den samme mekanik, jeg bruger i mine egne ansøgningsbreve, hvor kontakthistorik og noter ligger i den samme fil som brevet, og PDF'en bygges af navngivne afsnit i stedet for ved at klippe et sted i teksten. Forskellen på de to metoder mærkes først den dag, man tilføjer en ny sektion, og den uventet følger med ud.

Porten, og hvad den nægter

Kun historier, der står i stadiet gennemlæsning, kan udgives. Alt andet kræver et flag, man skal skrive i hånden. En kladde er per definition ikke gennemlæst, og et system, der kan udgive en kladde ved et uheld, kommer til det en dag.

Der er flere af den slags nægtelser, og de er alle sammen skrevet ind, efter at nogen påpegede en risiko:

Står fodnoterne uden for den tekst, der udgives, nægter systemet at sende. Ellers ville kildeangivelserne forsvinde lydløst, og en artikel uden kilder ser fuldstændig normal ud.

Bygger en historie på et andet medies arbejde, skal originalen krediteres ved navn og med link inde i den udgivne tekst. Systemet tjekker, at det står der, før det sender. Der er også et loft på to ordrette citater, håndhævet i skemaet.

Er originalen ikke på dansk, og er der løftet et citat, nægter den også, hvis teksten ikke skriver, at citatet er oversat.

Det interessante ved de regler er ikke, at de findes. Enhver redaktion har dem. Det interessante er, at de er flyttet fra at være noget, nogen skal huske, til at være noget, der aktivt stopper afsendelsen. En regel, der kun står i en manual, er en regel, der bliver overholdt indtil den dag, man har travlt.

Hvem skrev det, og hvem tjekkede det

To adskilte felter. generated siger, hvilken model eller hvilket menneske der skrev dokumentet og hvornår. verified siger, hvem der har kontrolleret det.

De to må ikke være det samme felt, fordi det bliver mere og mere almindeligt, at det ene er en maskine og det andet er et menneske. Et dokument med et tomt verified er ikke godkendt, uanset hvor færdigt det ser ud. Og man kan spørge systemet, hvad der er skrevet af en model og aldrig gennemlæst af nogen, hvilket er den liste, der skal være kort.

Det er den samme mærkning, jeg bruger på salgsmateriale i min egen videnbase, af nøjagtig samme grund: maskinskrevet tekst ligner menneskeskrevet tekst og ligger i den samme mappe.

Hvad I skal tage med

Stort set alt ovenstående handler om noget andet end sprogmodeller. Filplacering, felter, skemaer, en port og en håndfuld regler, der kan sige nej. Sprogmodellerne er sat ind i midten af det og laver præcis det, de er gode til, nemlig at skrive.

Det er også svaret på, hvorfor så mange AI-projekter i virksomheder går i stå efter den lovende demo. Demoen viser modellen. Det, der mangler, er resten: hvor tingene skal ligge, hvilken form de skal have, hvem der godkender, og hvad der skal være umuligt at gøre ved et uheld.

Den del kan man faktisk begynde på uden at vælge en model først. Det er ret befriende at opdage.