602 lines
23 KiB
Markdown
602 lines
23 KiB
Markdown
# 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:
|
||
|
||
```json
|
||
{
|
||
"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:**
|
||
|
||
```yaml
|
||
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:**
|
||
|
||
```json
|
||
{
|
||
"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
|
||
|
||
```yaml
|
||
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:
|
||
|
||
```yaml
|
||
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
|
||
|
||
```yaml
|
||
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:
|
||
|
||
```python
|
||
# 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 |
|
||
|
||
```json
|
||
{
|
||
"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
|
||
# 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:**
|
||
|
||
```yaml
|
||
# 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:**
|
||
|
||
```yaml
|
||
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:**
|
||
|
||
```json
|
||
{
|
||
"content_filter_config": {
|
||
"pii_detection": {
|
||
"enabled": true,
|
||
"categories": ["phone_number", "email", "ssn", "address"],
|
||
"action": "redact"
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
**Logging for etterrettelighet:**
|
||
|
||
```python
|
||
# 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
|