Gå til indhold
UNI4C
Alle indlæg

Assistenten skriver forespørgslen, ikke tallet

En sprogmodel, der har jeres tal i hænderne, kan ændre dem. En opbygning, der holder modellen væk fra værdierne og sætter platformen mellem dem og læseren.

Tjekket Opdateret 4 min læsning

En sprogmodel, der har jeres tal i hænderne, kan ændre dem. Den gør det ikke tit, og det er netop problemet. Et system, der tager fejl én gang ud af halvtreds, er sværere at opdage end et system, der tager fejl hver gang.

Svaret er ikke en bedre model. Svaret er at holde modellen væk fra værdierne. Denne side beskriver, hvordan det virker.

Hvordan kan en assistent svare med data, den ikke kan se?

Assistenten skriver forespørgslen. Den skriver ikke resultatet.

  1. I stiller et spørgsmål i almindeligt sprog.
  2. Assistenten skriver en forespørgsel: en tabel, et sæt filtre, et nøgletal.
  3. Platformen kører forespørgslen mod jeres system gennem jeres egen forbindelse.
  4. Platformen viser de rækker, den fik, som en blok: en tabel, et tal, et diagram eller et sæt nøgletal.
  5. Platformen fortæller assistenten, hvad der kom tilbage: felterne, antallet af rækker og en lille stikprøve af de første rækker. Stikprøven viser formen; et stort resultat når aldrig modellen i sin helhed. Skal spørgsmålet bruge en difference eller en total, beder assistenten om den i forespørgslen, platformen regner den ud på rækkerne, og det resultat kommer tilbage.
  6. Assistenten skriver sætningen omkring blokken.

De tal, I læser, kom ud af jeres database og passerede intet, der kunne ændre dem undervejs. Assistenten valgte, hvad der skulle spørges om, og hvordan det skulle beskrives. Den havde aldrig hele svaret i hænderne.

Det har en anden fordel, der betyder mere over et år end over en uge. Forespørgslen er et varigt objekt. Den samme forespørgsel, der svarede på et spørgsmål i en samtale, bliver den rapport, I åbner hver måned, og den definition, jeres virksomhed er enig om. Rapporten kører den som standard igen, og intet bliver skrevet ind igen undervejs.

Hvad med sætningen omkring blokken?

Assistenten skriver stadig tekst. Den fortæller, hvad den filtrerede på, hvad den lagde mærke til, og hvad den vil undersøge næste gang. Den tekst er det ene sted, hvor et tal kan dukke op uden at komme fra en forespørgsel.

Så med en Controller-licens, hvor analysen kører, bliver teksten også kontrolleret. Før teksten bliver til en besked, holdes hvert tal i den op mod det, runden kan bevise. Et tal overlever, hvis det består en af disse prøver:

  • Det er en talværdi i et værktøjsresultat fra denne runde.
  • Det er et tal, assistenten sendte som input til et værktøj, for eksempel en filterværdi eller antallet af dage i en varighed som P7D.
  • Det er et tal i jeres spørgsmål.
  • Det gentager præcis et tal, som tidligere tekst i samtalen viste.

Alt andet bliver erstattet af et udeladelsestegn, og erstatningen bliver talt. Sætningen overlever. Det opfundne tal gør ikke.

Hvad er ikke et tal?

En kontrol, der behandler hvert tal som en påstand, gør teksten ulæselig. Datoer er tal. Det samme er kvartaler, ugenumre og #3 i en sagsreference.

Disse bliver aldrig behandlet som tal:

  • Datoer, i tal og i skrift, på dansk, engelsk, tysk og spansk
  • Årstal, klokkeslæt, ugenumre og kvartaler
  • Punkttegn på lister, også inde i fed skrift eller en overskrift
  • Id'er som #3 eller PR0017

Et system, der udelader datoen i »3. september 2026«, er ikke en kontrol. Det er en fejl.

Hvorfor kontrollere på serveren?

Fordi der er mere end én læser.

Teksten når en webklient, en desktop-app, en mobilapp og en browserudvidelse. Den bliver gemt i en database. Den bliver sendt tilbage til modellen som historik i næste runde. Kører kontrollen i klienten, er hver af kopierne forskellig, og modellens egen historik indeholder tal, læseren aldrig så.

Kontrollen kører derfor på serveren, én gang, før teksten bliver streamet og før den bliver gemt. Én kontrolleret tekst når hvert sted.

Hvad koster det?

To ting, og det er rimeligt at nævne dem.

I ser af og til et udeladelsestegn. Runder assistenten et tal af, består det afrundede tal ikke kontrollen og bliver fjernet. »Omkring 800.000 DKK fordelt på 4 brugere« bliver til »Omkring … DKK fordelt på … brugere«, når rækkerne sagde 812.400 fordelt på 3 brugere. Den første udgave er lettere at læse. Den anden er ærlig.

Et forbehold kan miste sine tal. »Kun 500 af 3.901 rækker er med i denne fil« beholder sin advarsel og mister sine tal, hvis de tal ikke kom retur. Det er den rigtige afvejning. En advarsel med opfundne tal er to fejl, ikke én.

Hvad det ikke løser

Kontrollen sikrer, at et tal kom fra en række. Den sikrer ikke, at rækken svarer på jeres spørgsmål.

Et perfekt dækket tal kan stadig være det forkerte tal, fordi forespørgslen filtrerede på det forkerte datofelt, eller fordi »omsætning« i forespørgslen ikke er »omsætning« i jeres virksomhed. Det problem kræver en anden mekanisme: en fælles definition af hvert forretningsbegreb og en assistent, der spørger, når en læsning ikke er afklaret.

De to er to andre dele af den samme konstruktion. Kontrollen er gulvet, ikke loftet. Den fjerner én type fejl fuldstændigt, og det er værd at gøre, og den lader resten af arbejdet stå synligt i stedet for skjult.

Spørgsmål og svar

Hvordan kan en AI svare med data, den ikke kan se?
Modellen skriver forespørgslen. Platformen kører den, viser rækkerne som en blok og fortæller modellen felterne, antallet af rækker og en lille stikprøve af de første rækker, og hvad en total, modellen bad forespørgslen om, lyder på. Læseren ser rækker fra databasen.
Hvad er et tal med dækning?
Et tal med dækning er en værdi, der står i de rækker, en forespørgsel gav i den samme runde, en værdi modellen sendte som input til et værktøj, et tal i brugerens spørgsmål eller et tal, som tidligere tekst allerede viste. Med en Controller-licens bliver et tal, der ikke består nogen af de prøver, erstattet af et udeladelsestegn.
Bliver datoer behandlet som tal?
Nej. Datoer, årstal, klokkeslæt, ugenumre, kvartaler, punkttegn og id'er er ikke taloplysninger. De er undtaget fra kontrollen på dansk, engelsk, tysk og spansk.

Kilder

Vi tjekker enhver ekstern påstand på den viste dato. Microsoft flytter funktioner mellem udgivelsesbølger, så tjek siden igen, før I læner jer op ad den.

  1. 01FinGround: Detecting and Grounding Financial Hallucinations via Atomic Claim VerificationarXiv · Kilder tjekket
  2. 02FAITH: A Framework for Assessing Intrinsic Tabular Hallucinations in FinancearXiv · Kilder tjekket

Se det på jeres eget regnskab

Start en prøveperiode i portalen, og prøv den på jeres egne data, eller book en halv time med os, og se den på en tenant, der er sat op som jeres.

Eller skriv til os på hello@uni4c.ai