refactor(examples): replace sector-specific example material with generic, fictitious examples

Reference files, test fixtures, the playground demo project and one design
document now use generic, fictitious examples (buildings, energy, water,
grants, municipal services). The playground demo (17 fixtures plus the
embedded demo state) tells one consistent story: a municipal customer
chatbot that pre-screens housing-benefit applications, classified under
Annex III point 5(a). The embedded demo copies were edited in place rather
than regenerated, because they already carry newer AI Act dates than the
fixture files.

Legal text is unchanged. Test semantics are unchanged. Four dark-theme
onboarding screenshots with outdated placeholder text are removed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-09-23 14:03:53 +02:00
commit 544934dc57
Signed by: ktg
SSH key fingerprint: SHA256:JakMjO6FTBBzN0Bhfj9saOoEjaFxlSdYuZQQpM/lF9Q
77 changed files with 363 additions and 368 deletions

View file

@ -57,7 +57,7 @@ Azure AI Language grupperer PII i tre feature-typer (etter input-format og prose
| Adresse | `Address` | Storgata 1, 0123 Oslo | ML-basert |
| Organisasjon | `Organization` | NAV, Skatteetaten | ML-basert |
| EU Passport | `EUPassportNumber` | Norsk pass | Format-validering |
| EU Drivers License | `EUDriversLicenseNumber` | Norsk saksbehandling | Format-validering |
| EU Drivers License | `EUDriversLicenseNumber` | Dokumentnummer i EU-format | Format-validering |
| Bank Account | `InternationalBankingAccountNumber` | IBAN | Format-validering |
**Viktig:** Azure detekterer norske fødselsnummer under kategorien `NOIdentityNumber`. Du må spesifisere `language: "no"` for optimal deteksjon.

View file

@ -286,7 +286,7 @@ Azure Cost Management aggregerer kostnader per dag, men fakturering skjer måned
| Arkitekturmønstre | **Baseline + Domain Expertise** | FinOps Framework + Azure Well-Architected |
| Beslutningsveiledning | **Verified** | Cost optimization best practices (Well-Architected) |
| Integrasjon med Microsoft-stakken | **Verified** | Official docs (tags, Power BI, Azure Monitor) |
| Offentlig sektor (Norge) | **Domain Expertise** | KTG/DDT-kontekst, ikke Microsoft-spesifikk |
| Offentlig sektor (Norge) | **Domain Expertise** | Norsk offentlig sektor-kontekst, ikke Microsoft-spesifikk |
| For arkitekten | **Baseline + Best Practices** | Syntetisert fra research + field experience |
---

View file

@ -62,9 +62,9 @@ Denne referansen dekker hele arbeidsflyten for Batch API, fra filsammensetning o
Batch API bruker JSON Lines-format (`.jsonl`), der hver linje er en selvstendig JSON-objekt:
```jsonl
{"custom_id": "req-001", "method": "POST", "url": "/v1/chat/completions", "body": {"model": "gpt-4o-batch", "messages": [{"role": "system", "content": "Klassifiser henvendelsen som KLAGE, SPORSMAL, eller TILBAKEMELDING."}, {"role": "user", "content": "Jeg er svart misfornoyd med ventetiden pa fornyelse av forerkort."}], "max_tokens": 50}}
{"custom_id": "req-002", "method": "POST", "url": "/v1/chat/completions", "body": {"model": "gpt-4o-batch", "messages": [{"role": "system", "content": "Klassifiser henvendelsen som KLAGE, SPORSMAL, eller TILBAKEMELDING."}, {"role": "user", "content": "Hvordan soker jeg om nytt forerkort?"}], "max_tokens": 50}}
{"custom_id": "req-003", "method": "POST", "url": "/v1/chat/completions", "body": {"model": "gpt-4o-batch", "messages": [{"role": "system", "content": "Klassifiser henvendelsen som KLAGE, SPORSMAL, eller TILBAKEMELDING."}, {"role": "user", "content": "Fint arbeid med den nye tunnelen i Rogaland!"}], "max_tokens": 50}}
{"custom_id": "req-001", "method": "POST", "url": "/v1/chat/completions", "body": {"model": "gpt-4o-batch", "messages": [{"role": "system", "content": "Klassifiser henvendelsen som KLAGE, SPORSMAL, eller TILBAKEMELDING."}, {"role": "user", "content": "Jeg er svart misfornoyd med ventetiden pa behandling av byggesoknaden min."}], "max_tokens": 50}}
{"custom_id": "req-002", "method": "POST", "url": "/v1/chat/completions", "body": {"model": "gpt-4o-batch", "messages": [{"role": "system", "content": "Klassifiser henvendelsen som KLAGE, SPORSMAL, eller TILBAKEMELDING."}, {"role": "user", "content": "Hvordan soker jeg om skjenkebevilling?"}], "max_tokens": 50}}
{"custom_id": "req-003", "method": "POST", "url": "/v1/chat/completions", "body": {"model": "gpt-4o-batch", "messages": [{"role": "system", "content": "Klassifiser henvendelsen som KLAGE, SPORSMAL, eller TILBAKEMELDING."}, {"role": "user", "content": "Fint arbeid med det nye biblioteket i kommunen!"}], "max_tokens": 50}}
```
**Viktige regler:**
@ -517,7 +517,7 @@ def retry_failed_requests(
system_prompt = """Klassifiser henvendelsen. Svar med JSON:
{"kategori": "KLAGE|SPORSMAL|TILBAKEMELDING|SOKNAD",
"prioritet": "HOY|NORMAL|LAV",
"etat": "FORERKORT|KJORETOYREG|VEIPROSJEKT|ANNET"}"""
"tjenesteomraade": "BYGGESAK|SKJENKEBEVILLING|TILSKUDD|ANNET"}"""
batch_file = generate_batch_file(
items=henvendelser,

View file

@ -316,7 +316,7 @@ Azure OpenAI prompt caching reduserer latens og kostnad for requests med identis
# System prompt som gjenbrukes pa tvers av requests
SYSTEM_PROMPT = """Du er en saksbehandlingsassistent for Direktoratet for digital tjenesteutvikling.
Du hjelper med a analysere og klassifisere innkommende henvendelser
relatert til forerkort, kjoretoysregistrering og veiprosjekter.
relatert til byggesaker, skjenkebevillinger og tilskudd.
Folg disse retningslinjene:
1. Klassifiser henvendelsen i riktig kategori

View file

@ -172,11 +172,11 @@ def design_cacheable_prompt(
messages, stats = design_cacheable_prompt(
system_instructions="""Du er en AI-assistent for saksbehandlere i
Direktoratet for digital tjenesteutvikling. Du hjelper med å analysere klager på vedtak om
saksbehandling, vurdere om klagen har grunnlag, og foreslå svar.
tilskudd, vurdere om klagen har grunnlag, og foreslå svar.
Regelverk du skal referere til:
- Vegtrafikkloven § 24-34
- fagforskriften
- Tilskuddsordningens forskrift
- Reglement for økonomistyring i staten
- Forvaltningsloven § 28-36 (klagebehandling)
Format: Alltid bruk overskrifter, vurder hvert punkt separat,
@ -184,11 +184,11 @@ messages, stats = design_cacheable_prompt(
few_shot_examples=[
{
"input": "Klage: Jeg fikk avslag på fornyelse...",
"input": "Klage: Jeg fikk avslag på søknad om driftstilskudd...",
"output": "## Vurdering\n### Regelverksvurdering..."
},
{
"input": "Klage: Mitt saksbehandling ble inndratt...",
"input": "Klage: Tilskuddet mitt ble krevd tilbakebetalt...",
"output": "## Vurdering\n### Regelverksvurdering..."
}
],