Skip to content

Commit 560904b

Browse files
authored
Merge pull request #24 from itk-dev/feature/add-ai-bibliotek
feat: add AI Bibliotek research project
2 parents aa5823f + 2653df5 commit 560904b

27 files changed

Lines changed: 4382 additions & 0 deletions

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
66

77
## [Unreleased]
88

9+
### Added — AI Bibliotek Project
10+
- Prototype for a shared library where Danish public authorities publish and "hjemtage" (take home) AI assistants — initially OpenWebUI-based — so local use cases can scale nationally
11+
- Single-page mock adapted from the Dansk Viden til Dansk AI SPA: self-signup, katalog with search and facets (kommune, sprogmodel, rammeværk, datafølsomhed), assistant detail with modelkort/readme/vidensopskrift and versioned JSON export, plus a "del assistent" flow — `localStorage` backend, teal primary color
12+
- Report (`index.md`), estimeringsnotat with phased estimate and a drift/driftsomkostninger note, and mocks listing
13+
914
### Added — Solceller i Universitetsparken hearing detail mock (deltag-aarhus)
1015
- Second interactive prototype for deltag.aarhus.dk under `docs/public/projects/deltag-aarhus/mocks/uniparken/` — Lokalplan nr. 1245 om et solcelleanlæg på Universitetsparkens fællesplæne, med samme funktionalitet som Vosnæs-prototypen (784 høringssvar, åben/afsluttet variant, alle modaler, kort, statistik)
1116
- Introduced a per-mock config layer (`mocks/js/config.js` + per-mock `window.DeltagMock.config` override) so plan number, deadlines, map center/clusters and active dataset are swappable without duplicating shared CSS/JS. The Vosnæs mock continues to use the file's defaults.

CLAUDE.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ Taskfile.yml # Task automation (dev, build, lint
5151
| `opkraevningsoverblik` | Opkrævningsoverblik | No |
5252
| `roboway` | Roboway | No |
5353
| `dansk-viden-til-dansk-ai` | Dansk Viden til Dansk AI | No |
54+
| `ai-bibliotek` | AI Bibliotek | No |
5455

5556
## Conventions
5657

docs/.vitepress/sidebar.mts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,17 @@ const danskVidenTilDanskAi: DefaultTheme.SidebarItem[] = [
108108
},
109109
]
110110

111+
const aiBibliotek: DefaultTheme.SidebarItem[] = [
112+
{
113+
text: 'AI Bibliotek',
114+
items: [
115+
{ text: 'Overview', link: '/projects/ai-bibliotek/' },
116+
{ text: 'Estimeringsnotat', link: '/projects/ai-bibliotek/estimeringsnotat' },
117+
{ text: 'Interactive Mocks', link: '/projects/ai-bibliotek/mocks' },
118+
],
119+
},
120+
]
121+
111122
const designSystem: DefaultTheme.SidebarItem[] = [
112123
{
113124
text: 'Design System',
@@ -134,6 +145,7 @@ export function sidebar(): DefaultTheme.Sidebar {
134145
'/projects/opkraevningsoverblik/': opkraevningsoverblik,
135146
'/projects/roboway/': roboway,
136147
'/projects/dansk-viden-til-dansk-ai/': danskVidenTilDanskAi,
148+
'/projects/ai-bibliotek/': aiBibliotek,
137149
'/projects/design-system/': designSystem,
138150
}
139151
}

docs/index.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,8 @@ features:
4646
details: Fælles offentlig service til indsamling og deling af danske publikationer som grundlag for dansk AI — med AI-katalogisering, syv rettighedsniveauer og delbare samlinger.
4747
link: /projects/dansk-viden-til-dansk-ai/
4848
linkText: View project
49+
- title: AI Bibliotek
50+
details: Fælles bibliotek hvor danske myndigheder kan dele og hjemtage AI-assistenter — med katalog, søgning, modelkort, vidensopskrift og versioneret JSON-eksport, så lokale use cases kan skaleres nationalt.
51+
link: /projects/ai-bibliotek/
52+
linkText: View project
4953
---
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
<small>**Project:** AI Bibliotek · **Status:** Estimat (pitch)</small>
2+
3+
# AI Bibliotek — Estimeringsnotat
4+
5+
**Dato:** maj 2026
6+
**Projekt:** AI Bibliotek — deling af AI-assistenter på tværs af offentlige myndigheder
7+
**Fase:** Pitch / oplæg (uge 23)
8+
9+
::: info Bemærkning
10+
Notatet er bevidst holdt på et overordnet niveau. Det er et oplæg, ikke et tilbud — formålet er at give en størrelsesorden og efterlade manøvrerum i den videre proces. Estimaterne er grove og afhænger af de afklaringer, der er beskrevet i [hovednotatet](./).
11+
:::
12+
13+
---
14+
15+
## Overordnet estimat
16+
17+
Estimatet er delt i faser, så projektet kan startes småt og udvides, efterhånden som koncept og behov afklares.
18+
19+
| Fase | Indhold | Estimat | Tidshorisont |
20+
|---|---|---|---|
21+
| **Fase 0 — Afklaring** | Standard for assistent-format, governance, hvad er åbent vs. bag login, rettigheder til delt JSON | 60–120 t. | 3–5 uger |
22+
| **Fase 1 — MVP (v0.1)** | Webapp, simpel brugerstyring, katalog med søgning/filtre, assistent-side, JSON-eksport, del/upload-flow, OpenWebUI-tag | 350–550 t. | 2–3 mdr. |
23+
| **Fase 2 — Udvidelser** | Flere versioner i drift, AI-genererede tags, forbedret datagrundlags-opskrift, flere rammeværk | 250–450 t. | 2–3 mdr. |
24+
| **Fase 3 — Økosystem (på sigt)** | Tools & skills, ratings, API, abonnement/advisering, testcases | 400–800 t. | Løbende |
25+
| **Sum (fase 0–2)** | | **660–1.120 t.** | **ca. 5–8 mdr.** |
26+
27+
Fase 3 er medtaget for fuldstændighedens skyld og er ikke en del af det anbefalede første skridt.
28+
29+
### Anbefalet første skridt
30+
31+
Fase 0 + Fase 1 leverer en brugbar MVP, der kan opfylde succeskriteriet: to AarhusAI-assistenter delt i biblioteket og inviterede OS2ai-testkommuner. Estimat **410–670 t.**, tidshorisont **ca. 3–4 måneder**.
32+
33+
---
34+
35+
## Opmærksomhedspunkt: drift og driftsomkostninger
36+
37+
Et bibliotek af denne type er ikke et "byg og glem"-projekt. Den væsentligste langsigtede omkostning er **drift**, ikke selve udviklingen. Følgende skal afklares tidligt:
38+
39+
- **Hosting og ejerskab.** Hvem driver og betaler for platformen? OS2/OS2ai-fællesskab, en værtskommune, eller en central aktør? Driften skal have en fast ejer, ellers forfalder biblioteket.
40+
- **Løbende vedligehold.** Sikkerhedsopdateringer, afhængigheder, brugerstyring og support koster typisk **15–25 % af udviklingsestimatet pr. år**. For fase 0–2 svarer det groft til **100–280 t./år**.
41+
- **Indholdsmoderering og kvalitet.** Delte assistenter skal kunne reviewes — er JSON'en trygt at dele, er metadata korrekt, er datafølsomheden vurderet rigtigt? Det kræver en governance-proces og dermed tid, ikke kun teknik.
42+
- **Versionering over tid.** Når en kommune opdaterer en delt assistent, skal abonnenter adviseres og gamle versioner håndteres. Det vokser med antallet af assistenter og kommuner.
43+
- **Compute.** Selve assistenterne kører lokalt i den enkelte kommune — biblioteket hoster ikke modeller. Driftsomkostningen til AI-inferens ligger derfor hos den hjemtagende kommune, ikke hos biblioteket. Det holder bibliotekets egne driftsomkostninger lave og forudsigelige.
44+
45+
**Konklusion:** udviklingsomkostningen er en engangsinvestering; driften er en løbende forpligtelse, der skal have et budget og en ejer fra dag ét.
46+
47+
---
48+
49+
## Forudsætninger og forbehold
50+
51+
- Estimaterne forudsætter genbrug af eksisterende ITKdev-fundament (auth, design, hosting-mønstre).
52+
- De forudsætter, at OpenWebUIs eksportformat kan bruges som udgangspunkt for assistent-JSON.
53+
- Større usikkerheder: standardisering på tværs af rammeværk, juridisk afklaring af deling af systemprompter/datagrundlag, og governance-modellen.
54+
- Tallene er grove pitch-estimater og skal kvalificeres i fase 0.
Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
<small>**Project:** AI Bibliotek · **Status:** Prototype · **Date:** May 2026</small>
2+
3+
# AI Bibliotek
4+
5+
**Et fælles bibliotek hvor danske myndigheder kan dele og hjemtage AI-assistenter — så lokale use cases kan skaleres op på nationalt niveau.**
6+
7+
---
8+
9+
## Baggrund
10+
11+
I Storskalaprojektet udvikles AI-assistenter til konkrete kommunale opgaver — borgerservice, sagsbehandling, journalisering, mødereferater og meget mere. Assistenterne bygges i dag typisk lokalt i den enkelte kommune, ofte oven på OpenWebUI, og bliver sjældent delt på tværs. Det betyder, at den samme assistent reelt udvikles flere gange parallelt i forskellige kommuner.
12+
13+
Samtidig efterspørger OS2ai-kommunerne en måde at genbruge hinandens arbejde på: hvis Aarhus har bygget en velfungerende FAQ-assistent til borgerservice, bør Odense kunne hjemtage den, tilpasse den lokalt og tage den i brug — uden at starte forfra.
14+
15+
Et AI-bibliotek kan udstille assistenterne ét sted, så de kan fremsøges, vurderes og hjemtages. På sigt kan det samme bibliotek rumme tools, skills og hele økosystemet omkring assistenterne — og måske brede sig ud over kommunegrænserne til hele det offentlige Danmark.
16+
17+
## Formål
18+
19+
Prototypen undersøger spørgsmålet: **Hvordan kan et fælles bibliotek for delte AI-assistenter se ud i praksis — så en assistent udviklet i én kommune kan hjemtages og anvendes i en anden?**
20+
21+
Biblioteket skal understøtte to bevægelser:
22+
23+
- **Dele** — en kommune udstiller en assistent, den har udviklet lokalt, sammen med dens datagrundlag (i opskriftsform), modelkort og readme
24+
- **Hjemtage** — en anden kommune fremsøger, vurderer og henter assistenten (eksporterer dens JSON) og bygger sit eget lokale datagrundlag efter opskriften
25+
26+
## Hvad prototypen viser
27+
28+
Prototypen er en single-page application, der bruger `localStorage` som backend og simulerer AI-understøttet metadata med en kort spinner. Den er et **visuelt og funktionelt diskussionsgrundlag** — teksten er illustrativ (lorem-agtig, men realistisk), netop fordi det er en visualisering af et koncept og ikke en færdig løsning.
29+
30+
### Forsiden
31+
32+
Hero med søgefelt, kort introduktion og statistik (antal assistenter, deltagende kommuner, antal sprogmodeller). En rail med "Senest opdateret" og en sektion der **teaser fremtidige muligheder** (tools, skills, ratings, API, abonnement, testcases) som "kommer snart".
33+
34+
### Registrering og login
35+
36+
Simpel brugerflade hvor en medarbejder kan oprette en konto (i første omgang opret sig selv) eller logge ind. Brugere gemmes i `localStorage`. Ingen reel auth — kun til demoformål.
37+
38+
### Katalog og søgning
39+
40+
Fritekstsøgning kombineret med facetter: **oprindelseskommune, sprogmodel, rammeværk** (i dag OpenWebUI) og **datafølsomhed** (almindelige personoplysninger / fortrolige / personfølsomme). Resultater vises som kort med badges.
41+
42+
### Assistent-side
43+
44+
Detaljevisning af en enkelt assistent med adskilte visninger:
45+
46+
- **Beskrivelse** — assistentens formål
47+
- **Modelkort** — hvilken sprogmodel, kontekstvindue, parametre og hvilke hensyn der er til assistenten
48+
- **Readme** — praktisk dokumentation
49+
- **Viden***i opskriftsform*: hvad den enkelte kommune selv skal levere af datagrundlag lokalt (de faktiske vidensfiler kan sjældent deles på tværs af kommuner)
50+
- **JSON** — vælg blandt **flere versioner** af assistenten og **eksportér** den valgte version som en JSON-fil (datagrundlag svarende til OpenWebUIs eksportformat)
51+
52+
Metadata i sidepanelet: oprindelseskommune, sprogmodel, rammeværk, datafølsomhed, dato for oprettelse og opdatering samt antal versioner. En **OpenWebUI-tag** markerer rammeværket, så biblioteket med tiden kan rumme assistenter til flere typer rammeværk.
53+
54+
### Del assistent
55+
56+
Et flow hvor en kommune udstiller en assistent: indsæt eller upload assistentens OWUI-JSON → systemet foreslår metadata (navn, beskrivelse, tags, sprogmodel) → kommunen gennemgår, vælger datafølsomhed og udgiver. Kvittering med permalink.
57+
58+
### Mine assistenter & favoritter
59+
60+
Personligt overblik over egne delte assistenter samt en favoritliste, begge gemt i `localStorage`.
61+
62+
---
63+
64+
## Krav (v0.1)
65+
66+
- Webapplikation med simpel brugerstyring (opret sig selv)
67+
- En assistent består af — og skal kunne udvides uendeligt med — mindst: eksporterbar **JSON** (datagrundlag svarende til OpenWebUI), **viden/filer i opskriftsform**, **modelkort**, **readme** og en **beskrivelse**
68+
- Metadata: sprogmodel, viden, dato for oprettelse/opdatering, oprindelseskommune samt om assistenten er beregnet til personfølsomme / fortrolige / almindelige personoplysninger
69+
- Flere versioner af JSON på samme assistent
70+
- Det skal være muligt at tilføje nye entiteter (fx tools og skills) på sigt
71+
- En assistent skal kunne tagges med sit rammeværk (OpenWebUI i dag), så biblioteket senere kan rumme flere rammeværk
72+
- AI-genererede tags (evt.)
73+
- Forskellige filtrerings- og søgemuligheder
74+
75+
---
76+
77+
## Afklarende spørgsmål
78+
79+
Prototypen er et diskussionsgrundlag, ikke en implementeringsklar løsning. En række forhold skal afklares inden et reelt system bygges.
80+
81+
### Hvad må udstilles åbent — og hvad skal bag login?
82+
83+
I prototypen er **kataloget offentligt at browse**, mens det at **dele og eksportere** kræver login. Det er en antagelse, ikke en beslutning. Skal selve eksistensen af en assistent (navn, formål, kommune) være åben, mens JSON og modelkort er bag login? Eller skal hele biblioteket være lukket for ikke-myndigheder?
84+
85+
### Hvad er der i JSON-filerne?
86+
87+
Kan vi ukritisk dele indholdet af en OWUI-assistents JSON? Systemprompter kan indeholde interne formuleringer, henvisninger til konkrete sager eller forudsætninger, der ikke bør deles bredt. Der skal tages stilling til, hvad der reviewes inden deling.
88+
89+
### Hvordan fungerer download og upload på tværs af forskellige løsninger?
90+
91+
Biblioteket forudsætter, at en assistent eksporteret ét sted kan importeres et andet sted. Hvor ens skal afsender- og modtagermiljøet være? Hvad sker der, når en kommune kører en anden version af OpenWebUI — eller et helt andet rammeværk?
92+
93+
### Er der en standard for assistenter?
94+
95+
Findes der en standard (JSON, XML eller andet) for, hvordan en assistent beskrives og overdrages? OpenWebUIs eksportformat er udgangspunktet, men en bibliotek-standard på tværs af rammeværk vil kræve en aftalt struktur.
96+
97+
### Datagrundlaget
98+
99+
De faktiske vidensfiler kan sjældent deles på tværs af kommuner (interne data, persondata, rettigheder). Prototypen løser det ved at beskrive datagrundlaget **i opskriftsform**, så den enkelte kommune selv kan opbygge sit lokale grundlag. Er opskriftsformen tilstrækkelig, eller skal der mere standardisering til?
100+
101+
---
102+
103+
## På sigt
104+
105+
Følgende er ikke en del af v0.1, men biblioteket skal kunne rumme det. I prototypen er mulighederne teaset som "kommer snart":
106+
107+
- Deling af **tools** og **skills**
108+
- Mulighed for at **rate** assistenter, tools og skills
109+
- **API** så man kan oprette og vedligeholde assistenter fra egen løsning
110+
- Mulighed for at **abonnere** på en assistent og få besked ved ændringer (og dermed hente ny version)
111+
- Deling af **testcases og resultater** på en assistent
112+
113+
---
114+
115+
## Succeskriterie
116+
117+
At der er delt **to AI-assistenter fra AarhusAI** i AI-biblioteket. Derudover inviteres andre OS2ai-kommuner til at være testkommuner — både til at dele lokalt udviklede assistenter og til at tage delte assistenter i anvendelse lokalt.
118+
119+
---
120+
121+
## Drift og økonomi
122+
123+
Se [Estimeringsnotat](./estimeringsnotat) for økonomisk estimat, tidshorisont og opmærksomhedspunkter om drift og driftsomkostninger.
124+
125+
---
126+
127+
## Interaktiv prototype
128+
129+
<a href="/research-projects/projects/ai-bibliotek/mocks/index.html" class="mock-button" target="_blank">Åbn prototypen ↗</a>
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<small>**Project:** AI Bibliotek</small>
2+
3+
# Interaktive Mocks
4+
5+
---
6+
7+
**<a href="/research-projects/projects/ai-bibliotek/mocks/index.html" target="_blank">AI Bibliotek — prototype ↗</a>**
8+
Single-page prototype hvor danske myndigheder kan dele og hjemtage AI-assistenter. Katalog med søgning og facetter (kommune, sprogmodel, rammeværk, datafølsomhed), assistent-side med modelkort, readme, vidensopskrift og versioneret JSON-eksport, samt et flow til at dele en assistent. Bruger `localStorage` som backend.

0 commit comments

Comments
 (0)