ms-ai-architect/skills/ms-ai-security/references/ai-security-engineering/output-validation-grounding-verification.md
Kjell Tore Guttormsen ddce43d8b2 feat(ms-ai-architect): Spor 1 — Port-1-substrat migrert på 4 ikke-advisor-skills (243 Source + 327 Type + 325 TOC + stale-verified poison fjernet) [skip-docs]
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.
2026-07-04 10:19:11 +02:00

696 lines
23 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Output Validation, Grounding Verification, and Fact-Checking
**Last updated:** 2026-06-24 | Verified: MCP 2026-06-24
**Status:** GA
**Category:** AI Security Engineering
**Type:** reference
**Source:** https://learn.microsoft.com/azure/ai-services/content-safety/overview
---
## Innhold
- [Introduksjon](#introduksjon)
- [Kjernekomponenter](#kjernekomponenter)
- [Arkitekturmønstre](#arkitekturmønstre)
- [Beslutningsveiledning](#beslutningsveiledning)
- [Integrasjon med Microsoft-stakken](#integrasjon-med-microsoft-stakken)
- [Offentlig sektor (Norge)](#offentlig-sektor-norge)
- [Kostnad og lisensiering](#kostnad-og-lisensiering)
- [For arkitekten (Cosmo)](#for-arkitekten-cosmo)
- [Kilder og verifisering](#kilder-og-verifisering)
## Introduksjon
Output validation, grounding verification og fact-checking er fundamentale sikkerhetsteknikker for å sikre at LLM-genererte svar er faktisk korrekte, basert på kildemateriale, og ikke inneholder hallusinasjoner eller fabricerte fakta. Disse teknikkene er spesielt kritiske i RAG-systemer (Retrieval Augmented Generation) der modellen skal basere sine svar på hentet dokumentasjon.
**Groundedness** refererer til i hvilken grad en modells output er basert på faktisk tilgjengelig informasjon fra pålitelige kilder. Et "grounded" svar holder seg tett til gitt informasjon og unngår spekulasjon eller fabrikasjon. **Ungroundedness** er det motsatte når LLM-er produserer informasjon som er ikke-faktisk eller unøyaktig sammenlignet med kildematerialet.
Azure AI Content Safety tilbyr dedikert **Groundedness Detection API** som automatisk detekterer og kan korrigere tekst som avviker fra kildematerialet, noe som sikrer at generert innhold er i tråd med faktiske eller intenderte referanser.
## Kjernekomponenter
### 1. Groundedness Detection API (Azure AI Content Safety)
Azure AI Content Safety tilbyr et dedikert API for groundedness-deteksjon med følgende kapabiliteter:
**Deteksjonsmoduser:**
- **Non-reasoning mode:** Rask deteksjon, optimalisert for online-applikasjoner
- **Reasoning mode:** Detaljerte forklaringer på detekterte ugrunnede segmenter (krever Azure OpenAI GPT-4o)
**Domenestøtte:**
- `MEDICAL` Medisinsk domene med spesialisert deteksjon
- `GENERIC` Generisk domene for de fleste use cases
**Oppgavetyper:**
- `QnA` Question & Answer-oppgaver
- `Summarization` Sammendragsoppgaver
**API-respons:**
```json
{
"ungroundedDetected": true,
"ungroundedPercentage": 1.0,
"ungroundedDetails": [
{
"text": "12/hour.",
"offset": { "utf8": 0, "utf16": 0, "codePoint": 0 },
"length": { "utf8": 8, "utf16": 8, "codePoint": 8 },
"reason": "None. The premise mentions '10/hour' but not '12/hour'."
}
]
}
```
### 2. Grounding Correction Feature
API-et kan automatisk korrigere detektert ungroundedness:
**Request:**
```json
{
"domain": "Medical",
"task": "Summarization",
"text": "The patient name is Kevin.",
"groundingSources": ["The patient name is Jane."],
"mitigating": true,
"llmResource": {
"resourceType": "AzureOpenAI",
"azureOpenAIEndpoint": "<endpoint>",
"azureOpenAIDeploymentName": "<deployment>"
}
}
```
**Response:**
```json
{
"correctionText": "The patient name is Jane."
}
```
### 3. Citation Verification
I RAG-systemer med Azure AI Search eller Microsoft Foundry Agents:
**Citation format:**
- `[message_idx:search_idx†source]` Standard citation-format
- `url_citation` annotations URL-baserte referanser i streaming-responser
**Verifiseringsprosess:**
1. Spør spørsmål som du vet besvares i et spesifikt indeksert dokument
2. Bekreft at responsen inkluderer citations i korrekt format
3. Ved streaming, bekreft `url_citation` annotations med gyldige URLer
4. Verifiser at sitert innhold matcher kildedokumenter i søkeindeksen
### 4. Source Attribution i Agents
Microsoft Foundry Agents og Bing Grounding-tools følger en firetrinns prosess:
1. **Query formulation:** Agenten identifiserer informasjonsgap og konstruerer søkespørringer
2. **Search execution:** Grounding-tool sender spørringer til søkemotorer og henter resultater
3. **Information synthesis:** Agenten prosesserer søkeresultater og integrerer funn i svar
4. **Source attribution:** Agenten gir transparens ved å sitere søkekilder med URLer
### 5. Evaluation Frameworks
**Azure AI Evaluation SDK:**
```python
from azure.ai.evaluation import GroundednessEvaluator
groundedness_eval = GroundednessEvaluator(
azure_ai_project=azure_ai_project,
credential=credential, # gitleaks:allow
threshold=3.0 # 1-5 skala
)
result = groundedness_eval(
query="What shape has 4 equilateral sides?",
response="Rhombus",
context="Rhombus is a shape with 4 equilateral sides."
)
```
**MLflow GenAI Scorers (Databricks):**
```python
from mlflow.genai.scorers import retrieval_groundedness
import mlflow
trace = mlflow.get_trace("<trace-id>")
feedback = retrieval_groundedness(trace=trace)
```
**Evaluator-output:**
```json
{
"groundedness": 5.0,
"gpt_groundedness": 5.0,
"groundedness_threshold": 3.0,
"groundedness_reason": "The response accurately answers the query...",
"groundedness_result": "pass"
}
```
## Arkitekturmønstre
### Mønster 1: Inline Groundedness Validation (Real-time)
**Bruk når:** Du trenger sanntidsvalidering i produksjonsapplikasjoner.
**Arkitektur:**
```
User Query → LLM Generation → Groundedness API → [Pass/Fail + Correction] → User
Grounding Sources (Azure AI Search, Database)
```
**Fordeler:**
- Umiddelbar deteksjon av hallusinasjoner
- Automatisk korreksjon av ungrounded innhold
- Høy brukertillit gjennom verifisert output
**Ulemper:**
- Latency overhead (spesielt med reasoning mode)
- Ekstra Azure OpenAI-kostnader ved reasoning/correction
- Krever rate limiting-håndtering
**Implementering:**
```python
from azure.ai.contentsafety import ContentSafetyClient
from azure.core.credentials import AzureKeyCredential
client = ContentSafetyClient(endpoint, AzureKeyCredential(key))
response = client.text_detect_groundedness(
domain="GENERIC",
task="QnA",
qna={"query": user_query},
text=llm_response,
grounding_sources=retrieved_docs,
reasoning=True,
mitigating=True,
llm_resource={
"resourceType": "AzureOpenAI",
"azureOpenAIEndpoint": aoai_endpoint,
"azureOpenAIDeploymentName": deployment
}
)
if response.ungrounded_detected:
final_response = response.correction_text
else:
final_response = llm_response
```
### Mønster 2: Post-Generation Evaluation Pipeline
**Bruk når:** Du evaluerer kvalitet i utvikling/testing eller batch-prosessering.
**Arkitektur:**
```
Dataset → LLM → Response Log → Evaluation Pipeline → Metrics Dashboard
[Groundedness Evaluator]
[Factuality Evaluator]
[Citation Validator]
```
**Fordeler:**
- Ingen produksjonslatency
- Mulighet for A/B-testing av grounding-strategier
- Omfattende metrikker for kvalitetssporing
**Ulemper:**
- Ikke sanntids feil oppdages etter utlevering (i dev/test)
- Krever separat pipeline-infrastruktur
**Implementering:**
```python
from azure.ai.evaluation import evaluate, GroundednessEvaluator
groundedness = GroundednessEvaluator(evaluator_model)
result = evaluate(
data="evaluation_dataset.jsonl",
target=chat_application,
evaluators={"groundedness": groundedness},
evaluator_config={
"default": {
"column_mapping": {
"query": "${data.queries}",
"context": "${outputs.context}",
"response": "${outputs.response}"
}
}
}
)
# Resultat inkluderer per-turn groundedness scores
print(result.metrics["groundedness"]) # Aggregert score
print(result.evaluation_per_turn["groundedness"]) # Per-spørsmål
```
### Mønster 3: Agentic Retrieval med Built-in Verification
**Bruk når:** Du bygger agenter med Microsoft Foundry eller Semantic Kernel.
**Arkitektur:**
```
User → Agent (with Azure AI Search tool) → Query Planning → Retrieval → Synthesis
Citation Generation
Verified Response
```
**Fordeler:**
- Built-in citation tracking
- Transparent kildeattribusjon
- Automatisk grounding gjennom tool-design
**Ulemper:**
- Avhengig av agent-framework
- Begrenset kontroll over grounding-logikk
**Implementering:**
```python
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import AzureAISearchTool
with AIProjectClient.from_connection_string(conn_str) as project:
# Azure AI Search tool gir automatisk grounding
search_tool = AzureAISearchTool(
index_name="knowledge-base",
index_connection_id=search_connection.id
)
agent = project.agents.create_agent(
model=model_deployment,
name="grounded-agent",
instructions="Answer using only indexed documents. Cite sources.",
tools=[search_tool]
)
# Responses inkluderer automatisk citations
response = project.openai.responses.create(
input=user_query,
extra_body={"agent": {"name": agent.name}}
)
# Verifiser citations
for annotation in response.annotations:
if annotation.type == "url_citation":
print(f"Source: {annotation.url}")
```
## Beslutningsveiledning
### Når bruke hvilken teknikk?
| Use Case | Groundedness API | Citation Verification | Evaluation Pipeline | Agentic Retrieval |
|----------|------------------|----------------------|---------------------|-------------------|
| **Medisinsk rådgivning** | ✅ Obligatorisk (Medical domain) | ✅ Recommended | ✅ Pre-prod | ⚠️ Vurder custom |
| **Kundesupport chatbot** | ✅ Real-time validation | ✅ Yes | ✅ Kontinuerlig | ✅ Preferred |
| **Oppsummeringer** | ✅ With correction | ⚠️ Hvis RAG | ✅ A/B testing | 🚫 Mindre relevant |
| **Offentlig sektor FAQ** | ✅ Generic domain | ✅ Mandatory | ✅ Compliance audit | ✅ Preferred |
| **Forskningsassistent** | ⚠️ Latency-cost tradeoff | ✅ Critical | ✅ Quality metrics | ✅ With Academic Search |
### Beslutningstabell: Non-reasoning vs Reasoning Mode
| Faktor | Non-reasoning | Reasoning |
|--------|---------------|-----------|
| **Latency** | ~200-500ms | ~1-3s |
| **Kostnad** | Kun Content Safety | Content Safety + Azure OpenAI |
| **Output** | Boolean + percentage | Boolean + percentage + explanation |
| **Use case** | Prod filtering | Debugging/audit trail |
### Vanlige feil
| Problem | Symptom | Løsning |
|---------|---------|---------|
| **Manglende grounding sources** | API error eller lav accuracy | Sørg for å sende relevante `groundingSources` array |
| **Feil domain-valg** | Lav precision | Bruk `MEDICAL` for helsedata, `GENERIC` for resten |
| **For generisk query** | Mange false positives | Vær spesifikk i QnA-task `query`-felt |
| **Citations ikke validert** | Brudd på compliance | Implementer citation validation i test-suite |
| **Ingen correction-handling** | Brukere ser ungrounded svar | Bruk `correction: true` eller fallback til "I don't know" |
### Røde flagg (stopp og revurder)
- ❌ Du har ikke implementert groundedness-sjekk i medisinske/juridiske applikasjoner
- ❌ Du stoler på LLM citations uten å verifisere mot faktiske kilder
- ❌ Du har ikke rate limiting for Groundedness API-kall
- ❌ Du bruker ikke reasoning mode i dev/test før prod-deploy
- ❌ Du har ingen metrikker for groundedness i produksjon
## Integrasjon med Microsoft-stakken
### Azure AI Content Safety
**Endpoint:**
```
POST https://<resource>.cognitiveservices.azure.com/contentsafety/text:detectGroundedness?api-version=2024-09-15-preview
```
**Headers:**
```http
Ocp-Apim-Subscription-Key: <key>
Content-Type: application/json
```
**Body:**
```json
{
"domain": "Generic",
"task": "QnA",
"qna": { "query": "..." },
"text": "<LLM output>",
"groundingSources": ["<doc1>", "<doc2>"],
"reasoning": false,
"mitigating": false
}
```
**Begrensninger:**
- Kun engelsk språk (garantert kvalitet)
- Tekst: maks 7500 tegn
- Grounding sources: se input requirements
- Regional availability: Sjekk [dokumentasjon](https://learn.microsoft.com/en-us/azure/ai-services/content-safety/overview#region-availability)
### Microsoft Foundry
**Groundedness som del av Content Filters:**
I Microsoft Foundry kan groundedness detection kjøres som del av content filtering pipeline:
```python
# I AI Foundry portal: Guardrails + controls → Try it out → Groundedness detection
# Via SDK:
from azure.ai.evaluation import GroundednessEvaluator
evaluator = GroundednessEvaluator(
azure_ai_project={"subscription_id": "...", "project_name": "..."},
credential=DefaultAzureCredential(),
threshold=2 # 1-5 skala (lavere = strengere)
)
```
### Azure OpenAI (RAG med On Your Data)
**Konfigurasjon for groundedness:**
Når du bruker Azure OpenAI "On Your Data"-feature:
1. **Strictness-parameter:** Juster hvor strengt retrieval matcher query (1-5)
2. **Limit responses to data content:** Tvinger modellen til kun å svare basert på hentet data
3. **Number of retrieved documents:** Balansér mellom kontekst og presisjon
**Anbefaling for offentlig sektor:**
- Strictness: 4-5 (høy)
- Limit to data: ✅ Enabled
- Retrieved docs: 3-5
### Copilot Studio
**Generative Answers med grounding:**
Copilot Studio har innebygd grounding via:
- **Dataverse-integrasjon:** Automatisk grounding mot organisasjonsdata
- **SharePoint/Web search:** Konfigurerbare kildefiltre
- **Citation tracking:** Synlige kilder i chatbot-svar
**Best practice:**
- Aktiver "Show sources" i Generative Answers-node
- Konfigurer "Grounding" setting til "High" for offentlig sektor
- Bruk "Content moderation" sammen med groundedness
### Power Platform AI Builder
**Ingen native groundedness API**, men kan integreres via:
- Custom connector til Azure AI Content Safety
- Power Automate flow som kaller Groundedness API post-generation
## Offentlig sektor (Norge)
### Forvaltningsloven og veiledningsplikt
**§ 11. Veiledningsplikt:**
> Forvaltningsorganet skal på en hensynsfull måte påse at saken er så godt opplyst som mulig før vedtak treffes.
**Groundedness-krav:**
- Offentlige AI-systemer som gir veiledning **må** kunne dokumentere faktabaserte svar
- Hallusinasjoner i veiledningskontekst kan være lovstridig mangelfull saksbehandling
- **Anbefaling:** Groundedness detection med `reasoning: true` for audit trail
### Dokumentasjonsplikt (Arkivlova)
AI-genererte svar som er del av saksbehandling må dokumenteres:
- Lagre groundedness-score per respons
- Lagre grounding sources som ble brukt
- Lagre correction events hvis detektert ungroundedness
**Teknisk løsning:**
```python
# Log til Azure Monitor eller Application Insights
logger.info("AI Response", extra={
"query": user_query,
"response": final_response,
"grounding_sources": [doc.id for doc in sources],
"groundedness_score": result.groundedness,
"ungrounded_detected": result.ungrounded_detected,
"correction_applied": correction_applied
})
```
### DPIA-krav (GDPR Art. 35)
Groundedness-validering er relevant for DPIA hvis:
- AI-system fatter eller foreslår automatiserte beslutninger
- System gir råd som påvirker rettigheter (NAV, Skatteetaten, etc.)
**DPIA-punkt:**
- Beskriv groundedness validation som risikoreduserende tiltak
- Dokumenter threshold-valg og reasoning for false positive/negative-balanse
- Inkluder cost-benefit av correction-feature
### EIF (European Interoperability Framework)
**Semantic interoperability:**
- Groundedness sikrer at AI-svar er semantisk konsistente med authoritative sources
- Viktig for cross-border AI-tjenester i offentlig sektor
## Kostnad og lisensiering
### Azure AI Content Safety Groundedness API
**Prismodell (per 1000 text records):**
- **Non-reasoning mode:** ~0.75 USD per 1K requests
- **Reasoning mode:** Content Safety fee + Azure OpenAI GPT-4o inference
- **Correction mode:** Content Safety fee + Azure OpenAI GPT-4o generation
**Estimat for chatbot med 10K queries/dag:**
- Non-reasoning: ~225 USD/måned
- Reasoning (10% av queries for audit): ~300-400 USD/måned
### Azure OpenAI (for correction/reasoning)
**GPT-4o pricing (når brukt med Groundedness API):**
- Input tokens: ~0.0025 USD per 1K tokens
- Output tokens: ~0.010 USD per 1K tokens
**Grounding sources overhead:**
- Gjennomsnittlig grounding source: 500-2000 tokens
- Med 3 sources: ~1500-6000 tokens input per request
**Cost optimization:**
- Bruk non-reasoning i prod, reasoning i dev/test
- Implementer caching av groundedness-sjekker for identiske query+source-kombinasjoner
- Rate limit API-kall per bruker
### Lisensiering
**Inkludert i:**
- Azure AI Services commitment (Foundry-lisenser)
- Consumption-based (pay-as-you-go)
**Ikke inkludert i:**
- Microsoft 365 Copilot-lisenser (de har egne groundedness-mekanismer)
**Grounding with Bing Search:**
- Eget prisnivå (se [Bing Grounding pricing](https://www.microsoft.com/bing/apis/grounding-pricing))
- Ikke dekket av Azure Data Protection Addendum (dataflyt utenfor Azure compliance boundary)
## For arkitekten (Cosmo)
### Spørsmål å stille kunden
1. **Domene og kritikalitet:**
- Er dette medisinsk, juridisk eller annen høy-risiko domene?
- Hva er konsekvensen av en hallusinasjon i produksjon?
- Trenger dere audit trail av groundedness-sjekker?
2. **RAG-arkitektur:**
- Hvilke grounding sources skal brukes? (Azure AI Search, SharePoint, Dataverse?)
- Hvor mange dokumenter er typisk relevante per query?
- Har dere allerede embeddings og vector search?
3. **Latency-toleranse:**
- Kan dere akseptere 1-3s ekstra latency for reasoning mode?
- Er dette en real-time chatbot eller batch-prosessering?
4. **Budsjettering:**
- Hva er query-volumet per dag/måned?
- Hvor stor andel trenger reasoning/correction? (100% er kostbart)
5. **Compliance:**
- Er dette offentlig sektor med dokumentasjonsplikt?
- Trenger dere DPIA-dokumentasjon av groundedness-validering?
6. **Eksisterende arkitektur:**
- Bruker dere allerede Azure AI Content Safety for andre filters?
- Er Microsoft Foundry evaluation SDK i bruk?
### Fallgruver å unngå
1. **Over-reliance på groundedness API som eneste sikkerhet:**
- Groundedness != faktualitet mot eksterne sannheter
- API sjekker kun consistency mot oppgitte sources
- **Løsning:** Kombiner med faktasjekk mot autoritative databaser
2. **Glemme rate limiting:**
- Groundedness API har query rate limits
- **Løsning:** Implementer exponential backoff og queueing
3. **Feil expectation om language support:**
- Kun engelsk er garantert kvalitet
- **Løsning:** For norsk: vurder oversettelse til engelsk før API-kall (overhead)
4. **Ikke teste reasoning mode før prod:**
- Reasoning gir forklaringer som kan avsløre svakheter
- **Løsning:** Alltid kjør reasoning i dev/test-fase
5. **Undervurdere grounding source quality:**
- "Garbage in, garbage out" gjelder også for groundedness
- **Løsning:** Valider at grounding sources faktisk er authoritative
6. **Manglende citation validation:**
- Agents kan generere citations som ikke finnes
- **Løsning:** Valider at citerte URLer/document IDs faktisk eksisterer
### Arkitekturanbefalinger
**For høy-risiko domener (medisinsk, juridisk, offentlig saksbehandling):**
```
1. Groundedness API med reasoning=true (audit trail)
2. Citation verification (valider at kilder eksisterer)
3. Human-in-the-loop for final approval
4. Logging til Azure Monitor med retention
```
**For medium-risiko (kundesupport, intern FAQ):**
```
1. Groundedness API med non-reasoning (real-time)
2. Correction feature enabled
3. Evaluation pipeline i dev/test
4. Basic citation tracking
```
**For lav-risiko (generell informasjon, ikke-kritisk):**
```
1. Agentic retrieval med built-in citations
2. Post-generation evaluation (sampling)
3. User feedback loop
```
### Tekniske tips
**Optimalisering av grounding sources:**
```python
# Prioriter de mest relevante kildene
ranked_sources = rerank_documents(query, retrieved_docs)
top_sources = ranked_sources[:3] # Begrens til topp 3 for cost
# Send kun nødvendig context
grounding_texts = [extract_relevant_passage(doc, query) for doc in top_sources]
```
**Retry-logikk:**
```python
from tenacity import retry, stop_after_attempt, wait_exponential
@retry(
stop=stop_after_attempt(3),
wait=wait_exponential(multiplier=1, min=2, max=10)
)
def check_groundedness(text, sources):
return client.text_detect_groundedness(
domain="GENERIC",
task="QnA",
text=text,
grounding_sources=sources
)
```
**Caching strategy:**
```python
import hashlib
from functools import lru_cache
def cache_key(text, sources):
content = text + "".join(sources)
return hashlib.sha256(content.encode()).hexdigest()
@lru_cache(maxsize=1000)
def cached_groundedness_check(key):
# Implementer actual API call
pass
```
*(Verified MCP 2026-04)* — Groundedness API: `correction`-parameteren er omdøpt til `mitigating`; respons-feltet `correctedText` er omdøpt til `correctionText`.
## Kilder og verifisering
### Microsoft Learn-ressurser (Verified via MCP)
1. **Groundedness Detection Concept:**
https://learn.microsoft.com/en-us/azure/ai-services/content-safety/concepts/groundedness
[Verified: 2026-02]
2. **Groundedness Detection Quickstart:**
https://learn.microsoft.com/en-us/azure/ai-services/content-safety/quickstart-groundedness
[Verified: 2026-02]
3. **Content Filter Groundedness (Azure OpenAI):**
https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/content-filter-groundedness
[Verified: 2026-02]
4. **Azure AI Evaluation SDK (Groundedness Evaluator):**
https://learn.microsoft.com/en-us/azure/foundry-classic/how-to/develop/evaluate-sdk
[Verified: 2026-02]
5. **Azure AI Search Grounding (Transparency Note):**
https://learn.microsoft.com/en-us/azure/foundry/responsible-ai/search/transparency-note
[Verified: 2026-02]
6. **Bing Grounding Tools for Agents:**
https://learn.microsoft.com/en-us/azure/foundry/agents/how-to/tools/bing-tools
[Verified: 2026-02]
7. **Security Planning for LLM Applications (Output Validation):**
https://learn.microsoft.com/en-us/ai/playbook/technology-guidance/generative-ai/mlops-in-openai/security/security-plan-llm-application
[Verified: 2026-02]
### Konfidensnivå
| Seksjon | Kilde | Konfidens |
|---------|-------|-----------|
| Groundedness Detection API | Microsoft Learn (MCP-verified) | ✅ Documented |
| Citation Verification | Microsoft Learn (MCP-verified) | ✅ Documented |
| Evaluation Frameworks | Microsoft Learn (MCP-verified) | ✅ Documented |
| Arkitekturmønstre | Baseline (modellkunnskap) + MCP-grunnlag | 🟡 Baseline |
| Offentlig sektor Norge | Baseline (modellkunnskap) + kjent lovverk | 🟡 Baseline |
| Kostnadsestimater | Baseline (modellkunnskap av prismodeller) | 🟡 Baseline |
**MCP-kall utført:** 4 (2x docs_search, 1x code_sample_search, 2x docs_fetch)
**Kilder hentet:** 7 Microsoft Learn-artikler
**Sist oppdatert:** 2026-04