ms-ai-architect/skills/ms-ai-advisor/references/prompt-engineering/domain-specific-prompt-optimization.md

23 KiB
Raw Blame History

Domain-Specific Prompt Optimization

Last updated: 2026-06-24 Status: GA Category: Prompt Engineering & LLM Optimization


Introduksjon

Domain-specific prompt optimization handler om å tilpasse prompts for spesialiserte fagområder som medisin, juss, finans, teknisk support eller offentlig sektor. Generelle promptingteknikker fungerer ofte dårlig når domenet krever presisjon, terminologi, compliance-krav eller kontekstforståelse som LLM-en ikke har i sin generelle treningsdata.

Ved å optimalisere prompts for et spesifikt domene kan man:

  • Øke presisjonen — Få svar som respekterer fagterminologi og kontekst
  • Redusere hallusinasjoner — Hindre modellen i å fabricere "fakta" fra generell kunnskap
  • Sikre compliance — Følge regulatoriske krav (GDPR, helsepersonelloven, arkivloven)
  • Forbedre brukeropplevelse — Gi svar som matcher brukerens forventninger til faglig nivå

Viktighet for offentlig sektor: Norske offentlige virksomheter opererer med strenge krav til presisjon, etterrettelighet og personvern. Domain-specific prompting er ikke valgfritt — det er en forutsetning for ansvarlig bruk av AI.


Kjernekomponenter

1. Domain Context Declaration

Definer domenet eksplisitt i system message for å "prime" modellen:

Domene Eksempel system message
Medisin "You are an AI assistant designed to help users extract information from retrieved medical documents. Please scrutinize the documents carefully before formulating a response. Always include medical disclaimers and never provide diagnostic advice."
Juss "You are a legal document assistant. Answer using legal terminology accurately. Always cite sources. If legal interpretation is required, state 'consult a qualified attorney'."
Offentlig sektor (Norge) "Du er en AI-assistent for offentlig sektor i Norge. Følg arkivloven, offentlighetsloven og GDPR. Svar på norsk med presise referanser til regelverk."
Teknisk support "You are an expert incident support assistant that helps users solve technical issues. Base answers on similar incidents in the retrieved documents. Provide step-by-step troubleshooting."

(Confidence: HIGH — basert på Microsoft Learn dokumentasjon om system messages)

2. Output Structure Specification

Struktur i output reduserer feil og øker grunnlag for verifisering:

{
  "CLAIM": "Påstand fra modellen",
  "CITATION": "Kildehenvisning",
  "CONFIDENCE": "HIGH/MEDIUM/LOW",
  "DISCLAIMER": "Relevant advarsel eller forbehold"
}

Hvorfor dette virker: Ved å kreve strukturert output må modellen:

  1. Gjøre påstanden (første feil hvis feil)
  2. Finne sitatet (andre feil hvis feil)
  3. Gradere tillit (tredje feil hvis feil)

Dette gjør at hallusinasjoner krever flere feil i sekvens, noe som reduserer sannsynligheten for dem.

(Confidence: HIGH — prompt engineering best practice fra Azure OpenAI dokumentasjon)

3. Domain-Specific Few-Shot Examples

Few-shot learning er særlig effektivt for domener med:

  • Spesialisert terminologi
  • Standardiserte svarmønstre
  • Compliance-krav

Eksempel — Medisinsk assistent:

System: "You are a medical information assistant. Always include safety disclaimers."

User: "What is the recommended dosage for aspirin?"
Assistant: "According to medical guidelines, adult aspirin dosage for pain relief is typically 325-650mg every 4-6 hours, not exceeding 4g/24h. **Disclaimer:** This is general information only. Consult your doctor or pharmacist for personalized medical advice."

User: "Can I take aspirin with ibuprofen?"
Assistant: "Concurrent use of aspirin and ibuprofen may reduce aspirin's cardioprotective effects and increase gastrointestinal bleeding risk. **Disclaimer:** This is not medical advice. Consult your healthcare provider before combining medications."

(Confidence: MEDIUM — basert på prompt engineering best practices, men krever domenespesifikk validering)

4. Retrieval Augmented Generation (RAG) med domenfiltrering

For domener med store dokumentmengder (f.eks. lovverk, helsedokumentasjon, teknisk support):

RAG-konfigurasjon Anbefaling for domene
Chunk size Juss: 1536 tokens (kontekst viktig), Medisin: 512 tokens (presisjon viktig)
Strictness Høy (4-5) for compliance-domener, moderat (3) for general knowledge
Search type Hybrid (vector + keyword) + semantic for flerspråklige domener
Field mapping Map content, title, citation, legal_tag eller classification

Eksempel — Norwegian public sector:

{
  "data_sources": [{
    "type": "AzureCognitiveSearch",
    "parameters": {
      "indexName": "offentlig-regelverk-index",
      "fieldsMapping": {
        "contentFields": ["paragraph_text", "section_title"],
        "titleField": "law_name",
        "urlField": "lovdata_url",
        "filepathField": "document_id"
      },
      "inScope": true,
      "strictness": 4,
      "topNDocuments": 5
    }
  }]
}

(Confidence: HIGH — Azure OpenAI On Your Data dokumentasjon)

5. Multi-Lingual Domain Handling

For domener som opererer på flere språk (f.eks. norsk lovverk vs. EU-direktiver):

Best practice:

  • Separat indeks per språk hvis mulig
  • Eksplisitt språkinstruksjon i system message
  • Semantic search for cross-lingual retrieval
System: "You are an AI assistant designed to help users extract information from retrieved Norwegian legal documents. Please scrutinize the Norwegian documents carefully before formulating a response. The user's query will be in Norwegian, and you must respond in Norwegian with references to Norwegian law."

(Confidence: HIGH — Microsoft Learn anbefaler dette for multi-lingual scenarios)


Arkitekturmønstre

Pattern 1: Chain-of-Thought for Domain Reasoning

For komplekse domener (medisin, juss, ingeniørfag) hvor resonnering er kritisk:

System: "You are a legal assistant. For each query, think step-by-step:
1. Identify the legal question
2. Find relevant statutes in retrieved documents
3. Apply legal reasoning
4. State conclusion with citations
Format: QUESTION → RELEVANT LAW → REASONING → CONCLUSION"

User: "Can an employer terminate without notice?"
Assistant:
"QUESTION: Employment termination without notice legality
RELEVANT LAW: Arbeidsmiljøloven § 15-14 states that termination without notice requires 'særlig grunner' (special grounds)
REASONING: Special grounds typically include serious breach of duty or criminal activity by employee
CONCLUSION: No, employer cannot terminate without notice unless special grounds exist per AML § 15-14. [Citation: Arbeidsmiljøloven § 15-14]"

(Confidence: MEDIUM-HIGH — Chain-of-thought er dokumentert effektivt, men krever testing per domene)

Pattern 2: Role-Based Prompting with Domain Expertise

System: "You are a senior incident response analyst with 10 years experience in Microsoft Azure infrastructure. You:
- Prioritize security over convenience
- Always check for related incidents in the knowledge base
- Escalate if unsure rather than guess
- Document all troubleshooting steps"

Dette mønsteret virker ved å:

  1. Definere en "persona" med domeneekspertise
  2. Liste opp atferdsprinsipper som er kritiske for domenet
  3. Gi modellen en "mental model" for hvordan eksperter tenker

(Confidence: MEDIUM — Ikke direkte dokumentert i Microsoft sources, men widely recognized pattern)

Pattern 3: Conditional Domain Routing

For systemer som håndterer flere domener:

# Pseudo-code for domain routing
user_query = "What are the symptoms of diabetes?"

if classify_domain(user_query) == "medical":
    system_message = MEDICAL_SYSTEM_PROMPT
    add_disclaimer = True
    strictness = 5
elif classify_domain(user_query) == "technical":
    system_message = TECHNICAL_SYSTEM_PROMPT
    add_disclaimer = False
    strictness = 3

response = openai.chat.completions.create(
    model="gpt-4",
    messages=[
        {"role": "system", "content": system_message},
        {"role": "user", "content": user_query}
    ]
)

(Confidence: MEDIUM — Pattern basert på generell arkitekturpraksis)

Pattern 4: Grounding with Domain-Specific Metadata

For Azure AI Search indexer med domeneinformasjon:

Metadata-felt Eksempel verdi Formål
classification "Helsepersonelloven", "GDPR-relevant" Compliance-filtrering
confidence_level "peer_reviewed", "draft", "official" Kildevurdering
effective_date "2024-01-01" Tidsrelevans (viktig for juss, regelverk)
domain_tags ["diabetes", "type2", "symptoms"] Presisjonssøk
{
  "fieldsMapping": {
    "contentFields": ["content"],
    "titleField": "title",
    "urlField": "url",
    "vectorFields": ["content_vector"],
    "metadataFields": ["classification", "effective_date", "confidence_level"]
  }
}

(Confidence: HIGH — Azure AI Search field mapping er GA-funksjonalitet)


Beslutningsveiledning

Når velge domain-specific prompting?

Kriterium Vurdering
Høy presisjonskrav JA → Domain prompting kritisk
Regulatoriske krav JA → Må ha (compliance, personvern)
Spesialisert terminologi JA → Few-shot examples nødvendig
Lav toleranse for feil JA → Strictness = 5, grounding required
Generisk FAQ NEI → Standard prompting holder

Decision Tree: Hvilken prompting-strategi?

START
├─ Har du eksisterende dokumentasjon (RAG)?
│  ├─ JA → Bruk Azure OpenAI On Your Data
│  │      ├─ Compliance-kritisk? → Strictness 4-5, inScope=true
│  │      └─ General knowledge? → Strictness 3, hybrid search
│  └─ NEI → Fine-tuning eller GPT-4 med few-shot
│         ├─ <50 eksempler? → Few-shot learning
│         └─ >500 eksempler? → Vurder fine-tuning
│
└─ Krever domenet multi-turn reasoning?
   ├─ JA → Chain-of-thought + conversation history
   └─ NEI → Single-turn med strukturert output

(Confidence: MEDIUM — Basert på Azure OpenAI best practices og prompt engineering guidance)


Integrasjon med Microsoft-stakken

Azure OpenAI On Your Data

Best practice for domain-specific prompting:

# Python SDK example
from openai import AzureOpenAI

client = AzureOpenAI(
    api_key=os.getenv("AZURE_OPENAI_API_KEY"),
    api_version="2024-02-01",
    azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT")
)

# Domain-specific configuration
response = client.chat.completions.create(
    model="gpt-4",
    messages=[
        {
            "role": "system",
            "content": """You are a medical information assistant for healthcare professionals in Norway.
            Rules:
            - Answer in Norwegian
            - Always cite sources from Helsedirektoratet or approved medical literature
            - Include medical disclaimers
            - Never provide diagnostic advice"""
        },
        {
            "role": "user",
            "content": "Hva er anbefalte screeningintervaller for diabetes type 2?"
        }
    ],
    extra_body={
        "data_sources": [{
            "type": "azure_search",
            "parameters": {
                "endpoint": os.getenv("AZURE_SEARCH_ENDPOINT"),
                "index_name": "helsedirektoratet-index",
                "authentication": {
                    "type": "api_key",
                    "key": os.getenv("AZURE_SEARCH_KEY")
                },
                "in_scope": True,  # Limit to grounding data only
                "strictness": 4,   # High strictness for medical domain
                "top_n_documents": 5
            }
        }]
    }
)

print(response.choices[0].message.content)

(Confidence: HIGH — basert på Azure OpenAI SDK dokumentasjon)

Copilot Studio med domain grounding

For public sector:

  1. Custom topics — Definer topic triggers basert på domene-keywords
  2. Generative answers — Koble til Azure OpenAI On Your Data med domain-specific index
  3. Conversation boosting — Bruk SharePoint/Dataverse som knowledge source
  4. Compliance guardrails — Bruk content filters + custom system message
Konfigurasjon Anbefaling for offentlig sektor
Data source SharePoint med klassifiserte dokumenter
System message Inkluder referanser til offentlighetsloven § 3
Content moderation Høy (block PII, sensitive topics)
Citation style Inline citations med dokumentklassifisering

(Confidence: MEDIUM-HIGH — Copilot Studio best practices)

Microsoft Foundry

Domain-specific deployment pattern:

# AI Foundry project configuration
project:
  name: "medisinsk-assistent-pilot"
  region: "norwayeast"

deployments:
  - name: "gpt-4-medical"
    model: "gpt-4"
    sku: "Standard"
    capacity: 10
    system_message: |
      You are a medical information assistant...
      [domain-specific system message]

  - name: "embedding-medical"
    model: "text-embedding-ada-002"
    sku: "Standard"

data_connections:
  - type: "azure_ai_search"
    name: "medical-knowledge-base"
    index_name: "helsedirektoratet-retningslinjer"

safety:
  content_filters:
    - category: "medical_advice"
      severity: "high"
      action: "block"

(Confidence: MEDIUM — Microsoft Foundry er relativt nytt, pattern basert på generell guidance)


Offentlig sektor (Norge)

Juridiske og etiske rammeverk

Regelverk Implikasjon for prompting
Offentlighetsloven § 3 System message må inkludere: "If document classification is 'UNNTATT', do not include in response"
Arkivloven § 6 Alle AI-genererte svar må logges med metadata (timestamp, user, query, sources)
GDPR Art. 22 Hvis AI gjør "automated decision", må bruker informeres — legg til disclaimer
Personopplysningsloven § 11 PII må filtreres ut av prompts — bruk Azure OpenAI content filters

(Confidence: HIGH — Norsk lovverk er kjent, men krever juridisk validering for spesifikke use cases)

Use case: NAV selvbetjeningsbot

Scenario: NAV ønsker en chatbot som hjelper brukere med spørsmål om dagpenger.

Domain-specific prompt design:

System: |
  Du er NAV Assistent, en AI-assistent som hjelper brukere med spørsmål om NAVs tjenester.

  REGLER:
  - Svar alltid på norsk (bokmål)
  - Referer til offisielle NAV-sider (nav.no)
  - Hvis spørsmålet gjelder personlig situasjon, svar: "For å vurdere din konkrete situasjon, ta kontakt med NAV på telefon 55 55 33 33 eller book time via nav.no"
  - Aldri gi juridisk rådgivning — referer til Folketrygdloven med paragraf
  - Hvis usikker, svar: "Jeg er usikker på dette. Ta kontakt med NAV for sikker informasjon."

  STRUKTUR:
  - Start med direkte svar
  - Gi lenke til relevant NAV-side
  - Avslutt med "Trenger du mer hjelp? Ring 55 55 33 33"

User: "Hvor mye kan jeg tjene ved siden av dagpenger?"
Assistant: |
  Du kan tjene inntil 60% av dagpengegrunnlaget ditt uten at dagpengene reduseres. Overstiger du dette, reduseres dagpengene krone for krone.

  Les mer: https://www.nav.no/dagpenger#hvor-mye
  (Ref: Folketrygdloven § 4-18)

  Trenger du mer hjelp? Ring 55 55 33 33 eller book time via nav.no.

RAG-konfigurasjon:

Parameter Verdi Begrunnelse
inScope true Kun bruk NAV.no som kilde
strictness 4 Høy — feil kan ha store konsekvenser
topNDocuments 3 Fokusert svar, ikke overload
roleInformation System message over Domain-specific instruksjoner

(Confidence: HIGH — Basert på Azure OpenAI On Your Data og offentlig sektor best practices)

Personvernhensyn

PII-filtrering:

{
  "content_filter_config": {
    "pii_detection": {
      "enabled": true,
      "categories": ["phone_number", "email", "ssn", "address"],
      "action": "redact"
    }
  }
}

Logging for etterrettelighet:

# Pseudo-code
import logging

logger = logging.getLogger("nav-assistent")

def log_conversation(user_id, query, response, sources):
    logger.info({
        "timestamp": datetime.utcnow().isoformat(),
        "user_id_hash": hash(user_id),  # Anonymized
        "query_length": len(query),
        "response_length": len(response),
        "sources_used": [s["title"] for s in sources],
        "model": "gpt-4",
        "deployment": "nav-assistent-prod"
    })

(Confidence: MEDIUM-HIGH — Best practice, men krever organisasjonsspesifikk vurdering)


Kostnad og lisensiering

Token-estimat per domene

Basert på testing (Azure OpenAI dokumentasjon):

Konfigurasjon Generation prompt tokens Intent prompt tokens Response tokens Total avg
Default (chunk 1024, top 5) 4297 1366 111 ~5774
Medical (chunk 512, top 5, strictness 5) ~3800 ~1200 ~120 ~5120
Legal (chunk 1536, top 10, strictness 4) ~7200 ~1500 ~150 ~8850

Kostnad (gpt-4, ca. priser):

  • Medical domain: ~5120 tokens × $0.00003/token (input) = $0.15 per query
  • Legal domain: ~8850 tokens × $0.00003/token = $0.27 per query

Optimaliseringstips:

  1. Bruk GPT-3.5-turbo for enklere queries (10x billigere)
  2. Cache intent prompt hvis samme bruker stiller flere spørsmål
  3. Bruk semantic search for å redusere antall irrelevante chunks
  4. Chunk size 512 for presisjon vs. 1024 for kontekst

(Confidence: HIGH — basert på Azure OpenAI pricing og token usage documentation)

Lisenskrav

Microsoft-produkt Relevant for Lisens
Azure OpenAI Alle domener Azure subscription + Azure OpenAI access (application required)
Azure AI Search RAG-baserte løsninger Standard tier ($250/month+) for semantic search
Copilot Studio Public-facing bots Per-user ($200/month) eller per-session ($100/1000 sessions)
M365 Copilot Internal assistants Microsoft 365 E3/E5 + Copilot ($30/user/month)

(Confidence: MEDIUM — Priser endres, sjekk offisiell Microsoft pricing)


For arkitekten (Cosmo)

Når anbefale domain-specific prompting?

JA hvis:

  1. Klient opererer i regulert domene (helse, finans, juss, offentlig)
  2. Feil kan ha store konsekvenser (økonomi, helse, personvern)
  3. Klient har eksisterende dokumentasjon (RAG mulig)
  4. Terminologi er spesialisert og konsistent

NEI hvis:

  1. Generisk FAQ uten compliance-krav
  2. Klient har ikke dokumentasjon (fine-tuning eller GPT-4 generell kunnskap)
  3. Budsjettet er svært begrenset (domain prompting øker token-bruk)

Typiske feil å unngå

Feil Konsekvens Fix
For generisk system message Modellen gir generiske svar uten domenetilpasning Legg til eksplisitt rolleinformasjon og compliance-krav
Manglende disclaimers Juridisk/etisk risiko Inkluder disclaimers i system message + output structure
For stor chunk size Modellen drukner i informasjon Reduser chunk size til 512 for presisjonsdomener
inScope=false Modellen hallusinerer ved siden av grounding data Sett inScope=true for compliance-domener
Manglende citation Ikke mulig å verifisere svar Bruk "type": "CONTENT" citation pattern i API

(Confidence: HIGH — Basert på Azure OpenAI best practices og Cosmo's erfaring)

Anbefalte verktøy

Fase Verktøy Formål
Prompt-testing Microsoft Foundry Playground Iterativ testing av system messages
Evaluation Prompt Flow + Custom evaluators Måle domain accuracy (presisjon, recall, F1)
Deployment Azure OpenAI API + RAG Produksjon med logging og monitoring
Monitoring Azure Monitor + Application Insights Token usage, latency, error rate

Spørsmål å stille klienten

  1. Hva er konsekvensen av feil? (Lav/Medium/Høy) → Bestemmer strictness, inScope
  2. Har dere eksisterende dokumentasjon? → RAG vs. fine-tuning
  3. Hva er compliance-kravene? → System message disclaimers, content filters
  4. Hva er forventet volum? → Cost estimation (GPT-4 vs. GPT-3.5)
  5. Kreves det multi-språk støtte? → Separat indeks per språk
  6. Må svar være auditable? → Logging, citation, metadata tracking

Kilder og verifisering

Microsoft Learn dokumentasjon (fetched via MCP 2026-02-04)

  1. Prompt engineering techniques (Azure OpenAI) https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/prompt-engineering Source for: Best practices, few-shot learning, chain-of-thought, output structure

  2. Azure OpenAI On Your Data https://learn.microsoft.com/en-us/azure/foundry-classic/openai/concepts/use-your-data Source for: RAG configuration, field mapping, strictness, multi-lingual support, token estimation

  3. Transparency note for Azure OpenAI https://learn.microsoft.com/en-us/azure/foundry/responsible-ai/openai/transparency-note Source for: Model capabilities, limitations, responsible AI considerations

  4. Azure OpenAI FAQ https://learn.microsoft.com/en-us/azure/foundry-classic/openai/faq Source for: Language handling, model behavior, grounding strategies

  5. Apply prompt engineering with Azure OpenAI Service - Training https://learn.microsoft.com/en-us/training/modules/apply-prompt-engineering-azure-openai/ Source for: Prompt engineering learning objectives, prerequisites

Confidence markers brukt i dokumentet

  • HIGH — Direkte dokumentert i Microsoft Learn eller Azure OpenAI docs
  • MEDIUM-HIGH — Logisk utledning basert på dokumentasjon + generell best practice
  • MEDIUM — Best practice fra industrien, ikke eksplisitt dokumentert av Microsoft
  • MEDIUM-LOW — Antatt basert på generell kunnskap, bør verifiseres

Verifiseringsmetode

  • MCP-søk — 3 søk mot microsoft-learn (2026-02-04)
  • Fetch — 2 fullstendige dokumenter hentet via microsoft_docs_fetch
  • Code samples — Søk mot microsoft_code_sample_search (ingen direkte treff for "domain prompting", men generelle patterns funnet)

Cosmo's anbefaling: Start med Azure OpenAI On Your Data + RAG for domener med dokumentasjon. Bruk GPT-4 med high strictness (4-5) og inScope=true for compliance-kritiske domener. Test grundig med representative queries før produksjon. For offentlig sektor: alltid inkluder disclaimers, logging og PII-filtering.


Dato generert: 2026-02-04 Generert av: Cosmo Skyberg (AI Architect) via MCP-research Neste review: 2026-08 (6 måneder) eller ved major Azure OpenAI API update