Teknisk Vist · Hvordan AI-en leser tid
En full gjennomgang av 3-pass ekstraksjonsrørledningen, gjenkjenning av norsk datoformat, hendelsesklassifiseringsskjema, live SSE-strømming og nedlasting som Word-dokument.
Arkitektur
Rørledningen er bevisst sekvensiell — Pass 1 er regelbasert og nesten umiddelbar; Pass 2 er LLM-ekstraksjonen; Pass 3 etterbehandler og vurderer utdataene.
Et deterministisk mønster-matching pass kjører før noen LLM-anrop. Det skanner hele inngangen for datoer som matcher 12+ norske formater og normaliserer dem til ISO 8601:
dd.mm.yyyy → YYYY-MM-DDNormaliserte anker injiseres i LLM-prompten for å redusere hallusinerte eller feiltolket datoer.
LLM leser hele dokumentet sammen med pre-pass anker. For hver tidsreferanse returnerer den et strukturert JSON-hendelsesobjekt:
date — resolved ISO date, or verbatim string if unresolvabledate_type — absolute | relative | recurring | conditional | periodconfidence — high | medium | lowactor — attributed entity (from source text, not inferred)description — one-sentence event summarysource_excerpt — verbatim text fragment (max 200 chars)Prompten instruerer eksplisitt modellen om ikke å finne på datoer eller aktører som ikke er til stede i kilden. Temperaturen er satt til 0,1 for deterministisk utdata.
PHP anvender alle aktive filtre før resultatet returneres:
Post-prosessoren setter deretter sammen what_remains_uncertain listen og next_practical_step anbefalingen.
Dato gjenkjenning
Norske juridiske dokumenter bruker et bredt spekter av datonotasjoner. Pass 1 pre-pass gjenkjenner alle disse deterministisk; LLM håndterer resten i Pass 2.
| Format | Eksempel | Notater |
|---|---|---|
dd.mm.yyyy |
30.07.2015 | Standard norsk numerisk |
dd.mm.yy |
09.04.25 | To-sifret år → alltid 20YY |
d. månedsnavn yyyy |
3. mars 2024 | Skriftlig måned på bokmål/nynorsk |
d. månedsnavn |
15. januar | År utledet ved nærhetsskanning |
yyyy-mm-dd |
2024-03-12 | ISO 8601 |
månedsnavn yyyy |
mars 2024 | Måned + år kun |
yyyy |
2024 | År-referanse |
| Season + year | høsten 2023 | Sesongreferanse → Q3/Q4 |
| Diary-format line | 18.09.2025: Møte avholdt | Dato + kolon → automatisk merket som hendelse |
| Relative reference | tre uker etter vedtaket | Forankret til nærmeste løste hendelse |
| Recurring pattern | hver mandag | Klassifisert som gjentakende |
| Period / range | fra mars til juni 2024 | Gir start_dato + slutt_dato |
Klassifiseringsskjema
| date_type | Definisjon | Eksempel |
|---|---|---|
absolute |
En spesifikk, løselig kalenderdato | 30.07.2015 → 2015-07-30 |
relative |
En dato uttrykt relativt til en annen hendelse | tre uker etter vedtaket |
recurring |
Et mønster som gjentar seg etter en timeplan | each Monday, every 6 months |
conditional |
En dato avhengig av at en betingelse er oppfylt | if no response within 14 days |
period |
Et datointervall eller varighet med start og slutt | fra mars til juni 2024 |
| konfidens | Betydning | Visuell i tidslinje |
|---|---|---|
high |
Datoen er eksplisitt og entydig angitt i kildeteksten | Grønn merkelapp |
medium |
Datoen er utledet, omtrentlig, eller angitt med liten tvetydighet | Amber merkelapp |
low |
Datoen er implisert, uten dato, eller hentet fra et forringet/tvetydig avsnitt | Grå merkelapp |
| Regel | Eksempel |
|---|---|
| Navngitt enhet i samme setning | “Trude [saksbehandler] ringte 14. mars” → actor: Trude |
| Rollemerkelapp uten navn | “Barnevernet fattet vedtak” → actor: Barnevernet |
| Ingen klar attribusjon i setningen | actor: [unattributed] |
| Standard på dokumentnivå | Hvis ingen aktør per hendelse, standardiseres til dokumentets avsender/utstedende organ |
Motorer
Begge motorer returnerer det samme JSON-skjemaet — etterbehandleren håndterer dem identisk. Valg av motor påvirker hastighet, kvalitet og kreditt-kostnad.
| Engine | Modell | Forsinkelse | Best for |
|---|---|---|---|
| Azure gpt-4o-mini ★ | gpt-4o-mini (Azure West Europe) |
~15 s | Standard. Rask, kostnadseffektiv, håndterer de fleste juridiske dokumenter godt. |
| Azure gpt-4o | gpt-4o (Azure West Europe) |
~45 s | Komplekse dokumenter, overlappende hendelser, dårlig kvalitet eller tett kilde tekst. |
Live oppdateringer og eksport
Tidslinje bruker Server-Sent Events (SSE) for å strømme live statusmeldinger til nettleseren mens ekstraksjon kjører. I stedet for å stirre på en spinner i 30–60 sekunder, ser du «Forbereder dokument…», «Kaller gpt-4o-mini…», «Analyserer hendelser…» i sanntid.
Når ekstraksjon er fullført, klikk Eksporter til Word for å laste ned en formatert .docx med hver hendelse som et merket avsnitt, kildesitater og en skillelinje mellom hendelsene.
Personvern & sikkerhet
Personvern ved design
gpt-4o, gpt-4o-mini) er konfigurert på Vest-Europa regionen. Data behandlet via Azure OpenAI brukes ikke til modelltrening under den standard bedriftsavtalen.Gratis for Do Better Norge medlemmer. Alle motorer tilgjengelig for hvert medlem.