Steg 9 (R4): unified migrate-corpus.mjs --write over engineering/governance/ infrastructure/security. 327 filer mutert, verified=null, prosa byte-identisk (fra første ## seksjon), advisor urørt (0 endringer). To applier-fixes oppdaget under kjøring (TDD, RED→GREEN): - insertHeaderFields: anker faller nå tilbake når en meta-linje selv passerer 500B (2 filer pakket et avsnitt i **Status:** → Type/Source landet utenfor scan-vinduet, applierens post-write-assertion fanget + restaurerte). - normalizeStaleVerified: fjerner nå ALLE stale non-date **Verified:** i 500B-vinduet, inkl. stray body-dup rett under --- (9 mlops-genaiops-filer var ellers falskt "verified"/fresh, droppet fra worklist). Operatør-godkjent utvidelse av carve-out; kun stray metadata-linjer, aldri prosa. test-transform-criterion: precondition oppdatert til post-migrasjons-sannhet (fila bærer nå Source). Suite 728/728 grønn.
538 lines
28 KiB
Markdown
538 lines
28 KiB
Markdown
# Norwegian Content Safety — Azure AI Content Safety for norsk innhold
|
|
|
|
**Last updated:** 2026-06-19
|
|
**Status:** GA (text moderation, Prompt Shields) / Preview (Groundedness, Custom Categories)
|
|
**Category:** AI Security Engineering
|
|
**Type:** reference
|
|
**Source:** https://learn.microsoft.com/azure/ai-services/content-safety/overview
|
|
|
|
---
|
|
|
|
## Innhold
|
|
|
|
- [Introduksjon](#introduksjon)
|
|
- [Språkstøtte for norsk](#språkstøtte-for-norsk)
|
|
- [Oppsummeringstabell — norsk støtte per feature](#oppsummeringstabell--norsk-støtte-per-feature)
|
|
- [Workarounds for manglende norsk støtte](#workarounds-for-manglende-norsk-støtte)
|
|
- [Implementeringsmønstre](#implementeringsmønstre)
|
|
- [Testing av Content Safety for norsk](#testing-av-content-safety-for-norsk)
|
|
- [Kostnader og ytelse](#kostnader-og-ytelse)
|
|
- [Rate limits](#rate-limits)
|
|
- [Anbefalinger for norsk offentlig sektor](#anbefalinger-for-norsk-offentlig-sektor)
|
|
- [For Cosmo](#for-cosmo)
|
|
- [Kilder og verifisering](#kilder-og-verifisering)
|
|
|
|
## Introduksjon
|
|
|
|
Azure AI Content Safety er Microsofts tjeneste for automatisert innholdsmoderering i AI-applikasjoner. Tjenesten detekterer og klassifiserer potensielt skadelig innhold i tekst og bilder, med fire skadekategorier (hate, sexual, violence, self-harm) og fire alvorlighetsgrader (safe, low, medium, high). For norsk offentlig sektor er norsk språkstøtte kritisk — dette dokumentet kartlegger nøyaktig hvilke Content Safety-features som støtter norsk nativt, hvilke som kun fungerer på engelsk, og hvilke workarounds som finnes.
|
|
|
|
Azure AI Content Safety erstatter det utdaterte Azure Content Moderator (deprecated mars 2024) og gir flerspråklig moderering med mer granulær severity-scoring. Tjenesten brukes enten standalone via REST API / SDK, eller integrert i Azure OpenAI-deployments og Microsoft Foundry som content filter.
|
|
|
|
## Språkstøtte for norsk
|
|
|
|
### Tekstanalyse / Text Moderation
|
|
|
|
Norsk (`no`) er **støttet** for tekstmoderering, men er **ikke blant de spesialtrente språkene**. Modellen er spesialtrent og testet på: kinesisk, engelsk, fransk, tysk, spansk, italiensk, japansk og portugisisk. Norsk fungerer via generell flerspråklig støtte, men kvaliteten kan variere.
|
|
|
|
[Verifisert] Microsoft Learn: Language support for Azure AI Content Safety
|
|
|
|
| Feature | Norsk støtte | Merknad |
|
|
|---------|-------------|---------|
|
|
| **Hate-kategori** | ✅ Støttet | Ikke spesialtrent — test nøye med norske eksempler |
|
|
| **Violence-kategori** | ✅ Støttet | Sammensatte norske ord kan gi lavere deteksjon |
|
|
| **Sexual-kategori** | ✅ Støttet | Norske termer kan ha annen severity enn engelske |
|
|
| **Self-harm-kategori** | ✅ Støttet | Spesielt viktig å teste for norsk ungdomssjargong |
|
|
| **Severity levels (0-6)** | ✅ Støttet | Skalaen er konsistent på tvers av språk |
|
|
| **Auto-deteksjon av språk** | ✅ Støttet | Ingen language code påkrevd i API-kall |
|
|
|
|
**Viktig:** Selv om norsk er støttet, er den ikke spesialtrent. Microsoft anbefaler at alle kunder gjør egen testing for å sikre at tjenesten fungerer for sitt spesifikke bruksområde.
|
|
|
|
[Verifisert] Microsoft Learn: "You don't need to specify a language code for text moderation. The service automatically detects your input language."
|
|
|
|
### Prompt Shields
|
|
|
|
Prompt Shields detekterer adversarial input-angrep: **User Prompt Attacks** (jailbreak-forsøk) og **Document Attacks** (skadelig innhold innebygd i dokumenter).
|
|
|
|
| Feature | Norsk støtte | Merknad |
|
|
|---------|-------------|---------|
|
|
| **User Prompt Attack detection** | ⚠️ Begrenset | Trent på zh, en, fr, de, es, it, ja, pt — norsk kan fungere med varierende kvalitet |
|
|
| **Document Attack detection** | ⚠️ Begrenset | Samme språkbegrensning som User Prompt |
|
|
| **Språk-autodeteksjon** | ✅ Støttet | Prompt Shields bruker automatisk språkdeteksjon |
|
|
|
|
[Verifisert] Microsoft Learn: Prompt Shields — "Models are trained and tested on Chinese, English, French, German, Spanish, Italian, Japanese, Portuguese. Other languages might work but with varying quality."
|
|
|
|
**Risiko for norsk:** Prompt injection-angrep formulert på norsk kan ha lavere deteksjonsrate enn tilsvarende engelske angrep. Encoding-angrep som blander norsk og engelsk (code-switching) kan utnytte svakheter i flerspråklig forståelse.
|
|
|
|
### Groundedness Detection
|
|
|
|
Groundedness Detection sjekker om LLM-output er basert på kildemateriell (grounding sources). Detekterer hallusinasjoner og feilinformasjon.
|
|
|
|
| Feature | Norsk støtte | Merknad |
|
|
|---------|-------------|---------|
|
|
| **Groundedness detection** | ❌ Kun engelsk | Eksplisitt dokumentert som English-only |
|
|
| **Groundedness correction** | ❌ Kun engelsk | Krever Azure OpenAI GPT-4o (0513/0806) |
|
|
| **Reasoning mode** | ❌ Kun engelsk | Gir forklaringer for ungrounded segmenter |
|
|
| **Non-reasoning mode** | ❌ Kun engelsk | Raskere, uten forklaringer |
|
|
| **Domain selection (MEDICAL/GENERIC)** | ❌ Kun engelsk | Medisinsk domene særlig kritisk for norsk helsevesen |
|
|
|
|
[Verifisert] Microsoft Learn: "The Azure AI Content Safety models for protected material, groundedness detection, and custom categories (standard) work with English only."
|
|
|
|
**Konsekvens for norsk offentlig sektor:** Groundedness detection kan IKKE brukes direkte på norskspråklige RAG-systemer. Se workaround-seksjonen for translation pipeline.
|
|
|
|
### Protected Material Detection
|
|
|
|
Protected Material Detection identifiserer kjent opphavsrettsbeskyttet innhold i LLM-output (tekst og kode).
|
|
|
|
| Feature | Norsk støtte | Merknad |
|
|
|---------|-------------|---------|
|
|
| **Protected Material for Text** | ❌ Kun engelsk | Sanger, artikler, oppskrifter, nettinnhold |
|
|
| **Protected Material for Code** | ❌ Kun engelsk | GitHub-repositories (indeksert t.o.m. april 2023) |
|
|
|
|
[Verifisert] Microsoft Learn: Protected material detection — "English content only"
|
|
|
|
**Konsekvens:** Norskspråklig opphavsrettsbeskyttet innhold (norske sangtekster, norske artikler) vil IKKE detekteres. For norsk offentlig sektor er dette lav risiko da det meste av beskyttet materiale i AI-outputs er engelskspråklig.
|
|
|
|
### Custom Categories
|
|
|
|
Custom Categories lar deg definere egne innholdskategorier for moderering.
|
|
|
|
| Variant | Norsk støtte | Merknad |
|
|
|---------|-------------|---------|
|
|
| **Custom Categories (standard)** | ❌ Kun engelsk | Krever 50+ treningseksempler, maks 3 kategorier |
|
|
| **Custom Categories (rapid)** | ✅ Støttet | Støtter alle språk som text moderation |
|
|
|
|
[Verifisert] Microsoft Learn: Custom categories — "Custom categories (standard) API: Supported languages: English only" og "Custom categories (rapid) API: supports all languages that Content Safety text moderation supports"
|
|
|
|
**Anbefaling:** Bruk Custom Categories (rapid) for norskspråklige tilpasninger. Standard-varianten er kun engelsk.
|
|
|
|
### Custom Blocklists
|
|
|
|
Custom blocklists er termbasert filtrering som fungerer på alle språk.
|
|
|
|
| Feature | Norsk støtte | Merknad |
|
|
|---------|-------------|---------|
|
|
| **Custom blocklists** | ✅ Full støtte | Tekstbasert matching — språkuavhengig |
|
|
| **Regex-støtte** | ✅ Full støtte | Kan bruke regex for norske mønstre |
|
|
| **Microsoft Profanity blocklist** | ❌ Kun engelsk | Forhåndsdefinert profanity-liste er engelskspråklig |
|
|
|
|
[Verifisert] Microsoft Learn: Blocklist quickstart — "Enter the term that should be filtered. You can also use a regex."
|
|
|
|
**Anbefaling:** Custom blocklists er det mest effektive verktøyet for norskspesifikk innholdsfiltrering.
|
|
|
|
## Oppsummeringstabell — norsk støtte per feature
|
|
|
|
| Feature | Norsk | Merknad | Kilde |
|
|
|---------|-------|---------|-------|
|
|
| Text Moderation (4 kategorier) | ✅ Støttet (ikke spesialtrent) | Test nøye | [Verifisert] |
|
|
| Prompt Shields | ⚠️ Begrenset | Ikke spesialtrent for norsk | [Verifisert] |
|
|
| Groundedness Detection | ❌ Kun engelsk | Krever workaround | [Verifisert] |
|
|
| Protected Material (Text) | ❌ Kun engelsk | Lav risiko for norsk | [Verifisert] |
|
|
| Protected Material (Code) | ❌ Kun engelsk | Språkuavhengig for kode | [Verifisert] |
|
|
| Custom Categories (standard) | ❌ Kun engelsk | Bruk rapid-variant | [Verifisert] |
|
|
| Custom Categories (rapid) | ✅ Støttet | God norsk-kompatibilitet | [Verifisert] |
|
|
| Custom Blocklists | ✅ Full støtte | Primærverktøy for norsk | [Verifisert] |
|
|
| Image Moderation | ✅ Støttet | Språkuavhengig (visuelt) | [Verifisert] |
|
|
| Multimodal (bilde+tekst) | ✅ Støttet | Tekstdelen har norsk-begrensninger | [Antatt] |
|
|
|
|
## Workarounds for manglende norsk støtte
|
|
|
|
### 1. Translation Pipeline (for Groundedness Detection)
|
|
|
|
For English-only features (Groundedness Detection, Protected Material, Custom Categories standard) kan en translation pipeline brukes:
|
|
|
|
```
|
|
Norsk input → Azure Translator (no → en) → Content Safety API → Resultat-mapping → Norsk output
|
|
```
|
|
|
|
**Arkitektur:**
|
|
```typescript
|
|
async function analyzeGroundednessNorwegian(
|
|
norwegianText: string,
|
|
norwegianSources: string[]
|
|
): Promise<GroundednessResult> {
|
|
// 1. Oversett til engelsk
|
|
const englishText = await translator.translate(norwegianText, 'no', 'en');
|
|
const englishSources = await Promise.all(
|
|
norwegianSources.map(s => translator.translate(s, 'no', 'en'))
|
|
);
|
|
|
|
// 2. Kjor Groundedness Detection pa engelsk
|
|
const result = await contentSafety.detectGroundedness({
|
|
text: englishText,
|
|
groundingSources: englishSources,
|
|
domain: 'GENERIC',
|
|
task: 'Summarization'
|
|
});
|
|
|
|
// 3. Map resultater tilbake til norsk tekst
|
|
return mapResultsToOriginal(result, norwegianText);
|
|
}
|
|
```
|
|
|
|
**Kostnader:**
|
|
- Azure Translator: ~0.10 NOK per 1000 tegn (S1-tier)
|
|
- Ekstra latency: 50-200ms per oversettelse
|
|
- Risiko: Oversettelseskvalitet kan påvirke groundedness-nøyaktighet
|
|
|
|
[Antatt] — Pattern er ikke dokumentert av Microsoft, men er logisk basert på API-begrensninger.
|
|
|
|
### 2. Custom Blocklists for norsk
|
|
|
|
Primærverktøy for norskspesifikk filtrering. Krever manuell kurasjon, men gir full kontroll.
|
|
|
|
**Eksempler på norskspesifikke blocklists:**
|
|
|
|
| Domene | Eksempeltermer | Regex |
|
|
|--------|---------------|-------|
|
|
| **Hatefulle ytringer** | Rasistiske skjellsord, etniske slur | Termliste fra HL-senteret |
|
|
| **Selvskading** | Norsk ungdomssjargong for selvskading | `(?i)(kutter?|riste[rn]?)` |
|
|
| **Offentlig sektor** | Ulovlig rådgivning om vedtak | "omgå vedtak", "unngå innsyn" |
|
|
| **Samisk innhold** | Hatefulle termer mot samer | Kurasjon med Sametinget |
|
|
|
|
**Implementering via REST API:**
|
|
```bash
|
|
# Opprett blocklist
|
|
curl -X PUT "<endpoint>/contentsafety/text/blocklists/norsk-hatefulle-ytringer?api-version=2024-09-01" \
|
|
-H "Ocp-Apim-Subscription-Key: <key>" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"description": "Norskspesifikke hatefulle ytringer"}'
|
|
|
|
# Legg til termer
|
|
curl -X POST "<endpoint>/contentsafety/text/blocklists/norsk-hatefulle-ytringer:addOrUpdateBlocklistItems?api-version=2024-09-01" \
|
|
-H "Ocp-Apim-Subscription-Key: <key>" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"blocklistItems": [{"description": "Hatefullt", "text": "termeksempel"}]}'
|
|
```
|
|
|
|
[Verifisert] Microsoft Learn: Blocklist quickstart — API-format og flyt.
|
|
|
|
### 3. Hybrid-tilnærming (anbefalt)
|
|
|
|
Kombinerer native norsk støtte med workarounds for English-only features.
|
|
|
|
**Strategi:**
|
|
|
|
```
|
|
┌─────────────────────────────┐
|
|
│ Bruker-input (norsk) │
|
|
└─────────────┬───────────────┘
|
|
│
|
|
┌─────────────▼───────────────┐
|
|
│ Lag 1: Custom Blocklist │ ← Norske termer, regex
|
|
│ (umiddelbar, ingen API) │
|
|
└─────────────┬───────────────┘
|
|
│ (passerer)
|
|
┌─────────────▼───────────────┐
|
|
│ Lag 2: Text Moderation │ ← Native norsk-støtte
|
|
│ (hate/sexual/violence/harm) │
|
|
└─────────────┬───────────────┘
|
|
│ (passerer)
|
|
┌─────────────▼───────────────┐
|
|
│ Lag 3: Prompt Shields │ ← Begrenset norsk
|
|
│ (jailbreak + doc attacks) │
|
|
└─────────────┬───────────────┘
|
|
│ (passerer)
|
|
┌─────────────▼───────────────┐
|
|
│ Lag 4: Custom Category │ ← Rapid-variant
|
|
│ (domene-spesifikk) │ (støtter norsk)
|
|
└─────────────┬───────────────┘
|
|
│ (passerer til LLM)
|
|
┌─────────────▼───────────────┐
|
|
│ LLM output │
|
|
└─────────────┬───────────────┘
|
|
│
|
|
┌─────────────▼───────────────┐
|
|
│ Lag 5: Output Moderation │ ← Text Moderation + Blocklist
|
|
└─────────────┬───────────────┘
|
|
│
|
|
┌─────────────▼───────────────┐
|
|
│ Lag 6: Groundedness (opt.) │ ← Translation pipeline
|
|
│ (kun for RAG-systemer) │ (no→en→API→mapping)
|
|
└─────────────┬───────────────┘
|
|
│
|
|
┌─────────────▼───────────────┐
|
|
│ Svar til bruker │
|
|
└─────────────────────────────┘
|
|
```
|
|
|
|
**Fordeler:**
|
|
- Blocklist fanger norsk-spesifikke termer umiddelbart (ingen API-latency)
|
|
- Text Moderation gir native norsk dekning for de fire skadekategoriene
|
|
- Translation pipeline håndterer English-only features ved behov
|
|
- Defense-in-depth: 6 lag reduserer risiko for false negatives
|
|
|
|
**Ulemper:**
|
|
- Kompleksitet i drift og feilsøking
|
|
- Translation pipeline legger til 100-300ms latency
|
|
- Høyere kostnad (multiple API-kall per request)
|
|
|
|
## Implementeringsmønstre
|
|
|
|
### Mønster 1: Direct Integration (norskstøttede features)
|
|
|
|
For applikasjoner som kun trenger text moderation og blocklists.
|
|
|
|
**Bruksområde:** Chatbot for innbyggertjenester, skjemavalidering, saksbehandling.
|
|
|
|
```python
|
|
from azure.ai.contentsafety import ContentSafetyClient
|
|
from azure.ai.contentsafety.models import AnalyzeTextOptions
|
|
from azure.core.credentials import AzureKeyCredential
|
|
|
|
client = ContentSafetyClient(
|
|
endpoint="https://<resource>.cognitiveservices.azure.com",
|
|
credential=AzureKeyCredential("<key>")
|
|
)
|
|
|
|
# Analyser norsk tekst - ingen oversettelse nodvendig
|
|
request = AnalyzeTextOptions(
|
|
text="Norsk brukerinput her",
|
|
blocklist_names=["norsk-hatefulle-ytringer", "norsk-selvskading"],
|
|
halt_on_blocklist_hit=True
|
|
)
|
|
|
|
response = client.analyze_text(request)
|
|
|
|
# Sjekk blocklist-treff forst (umiddelbart)
|
|
if response.blocklists_match:
|
|
for match in response.blocklists_match:
|
|
print(f"Blocklist-treff: {match.blocklist_name} - {match.blocklist_item_text}")
|
|
|
|
# Sjekk severity per kategori
|
|
for category in response.categories_analysis:
|
|
if category.severity >= 4: # Medium eller hoyere
|
|
print(f"Blokkert: {category.category} (severity: {category.severity})")
|
|
```
|
|
|
|
**Latency:** ~50-100ms per request.
|
|
**Kostnad:** ~0.10 NOK per 1000 tegn (S0-tier).
|
|
|
|
[Verifisert] Microsoft Learn: Python SDK quickstart.
|
|
|
|
### Mønster 2: Translation-Augmented Safety
|
|
|
|
For applikasjoner som trenger Groundedness Detection eller Protected Material Detection.
|
|
|
|
**Bruksområde:** RAG-basert innbyggerportal, AI-genererte sammendrag av offentlige dokumenter.
|
|
|
|
```python
|
|
from azure.ai.translation.text import TextTranslationClient
|
|
from azure.ai.contentsafety import ContentSafetyClient
|
|
|
|
async def full_safety_check_norwegian(text: str, grounding_sources: list[str]):
|
|
"""Komplett safety-sjekk med translation pipeline for norsk."""
|
|
|
|
# Steg 1: Direkte norsk text moderation
|
|
text_result = content_safety.analyze_text(
|
|
AnalyzeTextOptions(text=text, blocklist_names=["norsk-blocklist"])
|
|
)
|
|
if any(c.severity >= 4 for c in text_result.categories_analysis):
|
|
return {"blocked": True, "reason": "content_moderation"}
|
|
|
|
# Steg 2: Prompt Shields (fungerer pa norsk med begrenset kvalitet)
|
|
shield_result = content_safety.shield_prompt(
|
|
user_prompt=text,
|
|
documents=grounding_sources
|
|
)
|
|
if shield_result.user_prompt_analysis.attack_detected:
|
|
return {"blocked": True, "reason": "prompt_attack"}
|
|
|
|
# Steg 3: Groundedness (krever oversettelse)
|
|
english_text = await translator.translate(text, source="no", target="en")
|
|
english_sources = [
|
|
await translator.translate(s, source="no", target="en")
|
|
for s in grounding_sources
|
|
]
|
|
groundedness_result = content_safety.detect_groundedness(
|
|
text=english_text,
|
|
grounding_sources=english_sources,
|
|
domain="GENERIC",
|
|
task="QnA"
|
|
)
|
|
|
|
return {
|
|
"blocked": False,
|
|
"groundedness": {
|
|
"ungrounded_detected": groundedness_result.ungrounded_detected,
|
|
"ungrounded_percentage": groundedness_result.ungrounded_percentage
|
|
}
|
|
}
|
|
```
|
|
|
|
**Latency:** ~200-500ms (inkl. oversettelse).
|
|
**Kostnad:** ~0.30 NOK per request (moderation + translation + groundedness).
|
|
|
|
[Antatt] — Sammensatt pattern basert på verifiserte API-spesifikasjoner.
|
|
|
|
### Mønster 3: Custom Safety Layer
|
|
|
|
For applikasjoner med spesielle norske krav som ikke dekkes av standard features.
|
|
|
|
**Bruksområde:** Samiskspråklig innhold, spesialisert offentlig forvaltning, domener med egne regler.
|
|
|
|
Bruker Azure OpenAI med norsk system prompt som custom safety-lag:
|
|
|
|
```
|
|
System: Du er en innholdssikkerhetsmodell for norsk offentlig sektor.
|
|
Evaluer folgende tekst og returner JSON med:
|
|
- hate_score (0-6)
|
|
- violence_score (0-6)
|
|
- sexual_score (0-6)
|
|
- self_harm_score (0-6)
|
|
- domain_violations: [liste over domene-spesifikke brudd]
|
|
|
|
Norske kontekstregler:
|
|
- Samiske termer og uttrykk er IKKE hatefulle med mindre konteksten er negativ
|
|
- Juridiske termer (dom, straff, forbrytelse) er benigne i forvaltningskontekst
|
|
- Medisinske termer (selvmord, overdose) er benigne i helsefaglig kontekst
|
|
```
|
|
|
|
**Fordeler:** Full kontroll over norsk kontekst, samisk støtte, domene-tilpasning.
|
|
**Ulemper:** Høyere kostnad (Azure OpenAI), lavere throughput, krever egenevaluering.
|
|
|
|
[Antatt] — Custom pattern, ikke dokumentert av Microsoft.
|
|
|
|
## Testing av Content Safety for norsk
|
|
|
|
### Testkategorier
|
|
|
|
| Kategori | Antall testcaser | Formål |
|
|
|----------|-----------------|--------|
|
|
| Norsk hatefulle ytringer | 50+ | Deteksjon av norske rasistiske/diskriminerende uttrykk |
|
|
| Norsk-spesifikke kulturelle kontekster | 30+ | Unngå false positives for norske idiomer |
|
|
| Samisk innhold | 20+ | Verifiser at samisk ikke feiltolkes |
|
|
| Code-switching (norsk/engelsk) | 20+ | Deteksjon i blandet språk |
|
|
| Forvaltningssjargong | 20+ | Benigne juridiske termer gir ikke false positives |
|
|
| Norsk ungdomssjargong | 30+ | Deteksjon av skjult skadelig innhold |
|
|
| Nynorsk vs. bokmal | 20+ | Konsistent severity på tvers av målformer |
|
|
| Dialektvarianter | 15+ | Deteksjon uavhengig av dialektform |
|
|
|
|
### Testmetodikk
|
|
|
|
1. **Baseline:** Kjor engelske ekvivalenter forst for a etablere referanse-score
|
|
2. **Norsk oversettelse:** Kjor tilsvarende norske prompts, sammenlign severity
|
|
3. **Gap-analyse:** Dokumenter avvik mellom engelsk og norsk scoring
|
|
4. **False positive-analyse:** Manuell gjennomgang av feilaktig blokkert norsk innhold
|
|
5. **False negative-analyse:** Red team med norske jailbreak-forsøk
|
|
6. **Kulturell sensitivitetsreview:** Ekspert-review av norsk kontekst-scoring
|
|
7. **Regression-testing:** Kjor testsuiten pa nytt ved API-oppdateringer
|
|
|
|
### Forventet resultat
|
|
|
|
Basert på at norsk ikke er spesialtrent:
|
|
|
|
| Metrikk | Forventet (norsk) | Baseline (engelsk) |
|
|
|---------|-------------------|--------------------|
|
|
| Precision (text moderation) | 80-90% | 95%+ |
|
|
| Recall (text moderation) | 75-85% | 90%+ |
|
|
| Prompt Shields deteksjon | 70-80% | 90%+ |
|
|
| False positive rate | 10-20% | 5-10% |
|
|
|
|
[Antatt] — Estimater basert på Microsofts generelle utsagn om at "quality might vary" for ikke-spesialtrente språk.
|
|
|
|
## Kostnader og ytelse
|
|
|
|
### Prismodell (S0-tier, estimat i NOK)
|
|
|
|
| API | Pris per enhet | Enhet | Free tier |
|
|
|-----|---------------|-------|-----------|
|
|
| Text Moderation | ~0.10 NOK | Per 1000 tegn | 5000 transaksjoner/mnd |
|
|
| Image Moderation | ~0.80 NOK | Per bilde | 5000 transaksjoner/mnd |
|
|
| Prompt Shields | ~0.10 NOK | Per request | 5000 transaksjoner/mnd |
|
|
| Groundedness Detection | ~0.20 NOK | Per request | Ikke tilgjengelig |
|
|
| Protected Material | ~0.10 NOK | Per request | 5000 transaksjoner/mnd |
|
|
| Custom Categories (rapid) | ~0.10 NOK | Per request | 5000 transaksjoner/mnd |
|
|
| Azure Translator (workaround) | ~0.10 NOK | Per 1000 tegn | 2M tegn/mnd |
|
|
|
|
**Merk:** Priser er estimat basert pa 1 USD = ~10 NOK. Sjekk [Azure Pricing Calculator](https://azure.microsoft.com/pricing/calculator/) for eksakt pris.
|
|
|
|
[Verifisert] Microsoft Learn: "We generally charge by volume" + F0/S0 tier-struktur.
|
|
|
|
### Latency-impact av translation pipeline
|
|
|
|
| Konfigurasjon | Forventet latency | API-kall |
|
|
|---------------|-------------------|----------|
|
|
| Direkte text moderation (norsk) | 50-100ms | 1 |
|
|
| Text moderation + Prompt Shields | 80-150ms | 2 |
|
|
| Full pipeline med translation | 200-500ms | 3-4 |
|
|
| Full pipeline + Groundedness | 300-700ms | 5-6 |
|
|
|
|
[Antatt] — Basert pa typisk Azure API-latency, ikke benchmarked.
|
|
|
|
### Kostnadseksempel: 100 000 requests/maned
|
|
|
|
| Konfigurasjon | Mndlig kostnad (NOK) |
|
|
|---------------|---------------------|
|
|
| Kun text moderation | ~10 000 |
|
|
| Text moderation + Prompt Shields | ~20 000 |
|
|
| Full hybrid-pipeline | ~40 000 |
|
|
| Full pipeline + Groundedness + translation | ~60 000 |
|
|
|
|
[Antatt] — Grovt estimat. Avhenger av gjennomsnittlig tekststorrelse.
|
|
|
|
## Rate limits
|
|
|
|
| Pricing tier | Text/Image Moderation | Prompt Shields | Groundedness | Custom Categories (rapid) |
|
|
|-------------|----------------------|----------------|--------------|--------------------------|
|
|
| **F0 (Free)** | 5 RPS | 5 RPS | N/A | 5 RPS |
|
|
| **S0 (Standard)** | 1000 RP10S | 1000 RP10S | 50 RPS | 1000 RP10S |
|
|
|
|
[Verifisert] Microsoft Learn: Content Safety overview — Query rates.
|
|
|
|
## Anbefalinger for norsk offentlig sektor
|
|
|
|
1. **Bruk hybrid-tilnærmingen som standard.** Kombiner custom blocklists (for norskspesifikke termer) med native text moderation og Prompt Shields. Legg til translation pipeline kun for RAG-systemer som trenger Groundedness Detection.
|
|
|
|
2. **Opprett norske blocklists fra dag 1.** Inkluder hatefulle ytringer, selvskadingstermer og domene-spesifikke termer. Samarbeid med fagmiljøer (HL-senteret, Sametinget) for kurasjon.
|
|
|
|
3. **Test grundig med norsk testdata.** Minimum 200 norske test-prompts (100 benigne, 100 skadelige) for akseptable coverage. Inkluder nynorsk, bokmal og code-switching.
|
|
|
|
4. **Dokumenter språkbegrensninger i DPIA.** Groundedness Detection og Protected Material fungerer kun pa engelsk — dette er en kjent begrensning som ma dokumenteres i personvernkonsekvensvurderingen.
|
|
|
|
5. **Bruk Custom Categories (rapid) — ikke standard.** Standard-varianten er English-only. Rapid-varianten støtter norsk og gir domene-spesifikk filtrering.
|
|
|
|
6. **Vurder custom safety layer for kritiske domener.** For helsebot, kriselinjer eller barnerettede tjenester — suppler med Azure OpenAI-basert norsk safety-evaluering.
|
|
|
|
7. **Deploy i Norway East eller West Europe.** Sikrer data residency i EU/EOS for Schrems II compliance.
|
|
|
|
8. **Monitor og juster kvartalsvis.** Norsk sprakstutte er et aktivt utviklingsomrade hos Microsoft. Nye sprak kan bli spesialtrente, og Groundedness Detection kan utvides til flere sprak. Verifiser status regelmessig via MCP.
|
|
|
|
## For Cosmo
|
|
|
|
Nar du radgir om Content Safety for norske losninger:
|
|
|
|
- **Sjekk alltid gjeldende sprakstutte via MCP** (dette endres ofte). Bruk `microsoft_docs_search` med "Azure AI Content Safety language support" for oppdatert status.
|
|
- **Anbefal hybrid-tilnærming som standard** — aldri kun text moderation alene for norsk.
|
|
- **Vurder custom blocklists for sektorspesifikke termer** — dette er det mest palitelige verktøyet for norsk.
|
|
- **Husk at translation-pipeline legger til latens og kostnad** — estimer 200-500ms og ~0.20 NOK ekstra per request.
|
|
- **Norsk Content Safety er et aktivt utviklingsomrade** — verifiser alltid for du gir endelige anbefalinger.
|
|
- **For Groundedness Detection pa norsk: vær ærlig om begrensningen.** Oversettelse introduserer usikkerhet. Anbefal kunden a evaluere om oversettelseskvaliteten er tilstrekkelig for deres use case.
|
|
- **Samisk innhold krever spesialhandtering.** Ingen av Content Safety-modellene er trent pa samisk. Custom blocklists + custom safety layer er eneste palitelige losning.
|
|
- **Bruk severity-tabellen fra content-safety-filter-calibration.md** for threshold-anbefalinger per use case.
|
|
|
|
## Kilder og verifisering
|
|
|
|
### Primærkilder (Verifisert)
|
|
|
|
1. [Language support for Azure AI Content Safety](https://learn.microsoft.com/azure/ai-services/content-safety/language-support) — Sprakstutte-tabell, auto-deteksjon, spesialtrente sprak
|
|
2. [Prompt Shields](https://learn.microsoft.com/azure/ai-services/content-safety/concepts/jailbreak-detection) — User Prompt/Document Attack deteksjon, sprakbegrensninger
|
|
3. [Groundedness detection](https://learn.microsoft.com/azure/ai-services/content-safety/concepts/groundedness) — English-only, domain/task-konfigurasjon, correction-feature
|
|
4. [Protected material detection](https://learn.microsoft.com/azure/ai-services/content-safety/concepts/protected-material) — English-only, tekst og kode
|
|
5. [Custom categories](https://learn.microsoft.com/azure/ai-services/content-safety/concepts/custom-categories) — Standard (English-only) vs Rapid (multilingual)
|
|
6. [Azure AI Content Safety overview](https://learn.microsoft.com/azure/ai-services/content-safety/overview) — Pricing tiers, rate limits, region availability
|
|
7. [Azure AI Content Safety FAQ](https://learn.microsoft.com/azure/ai-services/content-safety/faq) — Prismodell, moderering-typer
|
|
8. [Blocklist quickstart](https://learn.microsoft.com/azure/ai-services/content-safety/quickstart-blocklist) — Custom blocklist API
|
|
|
|
### Konfidensgradering
|
|
|
|
- **Sprakstutte-status per feature:** Verifisert (direkte fra Microsoft Learn language support docs)
|
|
- **Prompt Shields norsk-støtte:** Verifisert (spesialtrente sprak eksplisitt listet, norsk ikke blant dem)
|
|
- **Groundedness/Protected Material English-only:** Verifisert (eksplisitt dokumentert)
|
|
- **Custom Categories rapid vs standard:** Verifisert (dokumentert i custom categories docs)
|
|
- **Translation pipeline pattern:** Antatt (logisk workaround, ikke Microsoft-dokumentert)
|
|
- **Norsk precision/recall estimater:** Antatt (basert pa "quality might vary"-utsagn)
|
|
- **Kostnad i NOK:** Antatt (basert pa USD-priser med valutakonvertering)
|
|
- **Samisk sprakstutte:** Antatt (ikke nevnt i Microsoft docs — sannsynlig ikke trent)
|
|
|
|
**MCP-kall:** 6 (microsoft_docs_search x6)
|
|
**Unike kilder:** 8 Microsoft Learn-artikler
|