# Chain-of-Thought and Reasoning Prompts

**Last updated:** 2026-02
**Status:** GA
**Category:** Prompt Engineering & LLM Optimization

---

## Introduksjon

Chain-of-thought (CoT) prompting er en promptingteknikk som instruerer språkmodeller til å eksplisitt vise sine resonneringsteg før de produserer et endelig svar. I stedet for å hoppe direkte til en konklusjon, bryter modellen ned komplekse problemer i sekvensielle steg, noe som reduserer feil og gjør outputen mer transparant og etterprøvbar.

Teknikken er spesielt kraftfull for oppgaver som krever logisk resonnering, matematikk, kodegenerering, eller multi-steg problemløsning. Microsoft Azure OpenAI-plattformen støtter flere varianter av CoT, inkludert zero-shot CoT (kun instruksjon om steg-for-steg tilnærming), few-shot CoT (med eksempler på resonnering), og innebygd resonnering i spesialiserte reasoning models som o1, o3, o4-mini, og GPT-5-serien.

**Viktig distinksjon:** Tradisjonelle GPT-modeller (GPT-4, GPT-4o) krever eksplisitt CoT-prompting for å vise resonneringsteg. Reasoning models (o-serien, GPT-5-serien) utfører intern resonnering automatisk, og Microsoft anbefaler å **ikke bruke** CoT-teknikker med disse modellene, da det kan redusere ytelsen.

Chain-of-thought ble først dokumentert i akademisk forskning (Wei et al., 2022) og har siden blitt adoptert som en standard teknikk i produksjonssystemer. Microsoft har integrert CoT-prinsipper både i Azure OpenAI Service documentation, Microsoft Foundry prompt engineering guidance, og i evalueringsrammeverk som Azure OpenAI Evaluation (Preview).

---

## Kjernekomponenter

### 1. CoT for tradisjonelle modeller (GPT-4, GPT-4o, GPT-3.5)

| Komponent | Beskrivelse | Eksempel |
|-----------|-------------|----------|
| **Step-by-step instruction** | Eksplisitt be modellen om å vise arbeid | "Take a step-by-step approach in your response" |
| **Reasoning cue** | Triggerord som aktiverer sekvensielt tenkning | "Let's think step by step", "Show your reasoning" |
| **Citation requirement** | Krev kildehenvisninger for å redusere hallusinasjoner | "Cite sources and give reasoning before sharing final answer" |
| **Output structure** | Definer format for steg og konklusjon | "ANSWER is: \`<value>\`" |

**Eksempel (zero-shot CoT):**
```
System: You are an AI assistant that helps people find information.
User: Who was the most decorated individual athlete in the Olympic games held at Sydney?
Take a step-by-step approach in your response, cite sources and give reasoning before
sharing final answer in the format: ANSWER is: <name>```

**Assistant response:**
```
Step 1: Determine the year of the Sydney Olympic games. 
The Sydney Olympic games were held in the year 2000.

Step 2: Find a list of individual athletes who won multiple medals in the 2000 Sydney Olympics.
According to the official website of the Olympic Games, there were several individual athletes 
who won multiple medals in the 2000 Sydney Olympics. Some of the notable names include:
• Ian Thorpe (Australia) - 3 gold, 2 silver, 0 bronze
• Pieter van den Hoogenband (Netherlands) - 2 gold, 0 silver, 2 bronze
• Lenny Krayzelburg (USA) - 3 gold, 0 silver, 0 bronze
• Inge de Bruijn (Netherlands) - 3 gold, 1 silver, 0 bronze

Step 3: Determine the athlete with the most medals.
After reviewing the list of individual athletes who won multiple medals in the 2000 Sydney Olympics,
we can see that the athlete with the most medals is Ian Thorpe from Australia, who won a total of 
5 medals (3 gold and 2 silver).

Therefore, the ANSWER is: Ian Thorpe.
```

### 2. Reasoning Models (o1, o3, o4-mini, GPT-5-serien)

Disse modellene utfører **innebygd resonnering** automatisk og returnerer både reasoning tokens og det endelige svaret.

| Funksjonalitet | o1, o1-preview, o1-mini | o3, o3-mini, o3-pro | o4-mini | GPT-5-serien |
|----------------|-------------------------|---------------------|---------|--------------|
| **Automatisk reasoning** | ✅ | ✅ | ✅ | ✅ |
| **reasoning_effort parameter** | ✅ (low/medium/high) | ✅ (low/medium/high) | ✅ (low/medium/high) | ✅ (none/minimal/low/medium/high/xhigh) |
| **reasoning_summary** | ❌ | ✅ (limited access) | ✅ (limited access) | ✅ (auto/concise/detailed) |
| **Developer messages** | ✅ | ✅ | ✅ | ✅ |
| **Streaming** | ❌ (o1, o1-preview) | ✅ (limited access for o3) | ✅ | ✅ |

**Eksempel (GPT-5 med reasoning summary):**
```python
from openai import OpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = OpenAI(  
  base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",  
  api_key=token_provider,
)

response = client.responses.create(
    input="Tell me about the curious case of neural text degeneration",
    model="gpt-5", # replace with model deployment name
    reasoning={
        "effort": "medium",
        "summary": "auto" # auto, concise, or detailed
    },
    text={
        "verbosity": "low" # New with GPT-5 models
    }
)

print(response.model_dump_json(indent=2))
```

---

## Arkitekturmønstre

### Mønster 1: Eksplisitt CoT for RAG (Retrieval-Augmented Generation)

For Azure OpenAI "On Your Data" og Copilot Studio knowledge sources, kombinerer CoT med grounding:

```python
# Azure OpenAI On Your Data med CoT
system_message = """You are an AI assistant. Answer ONLY using retrieved documents.

Let's think step by step about information in retrieved documents to answer user queries.
Extract relevant knowledge step by step and form an answer bottom up from the extracted 
information from relevant documents."""

user_query = "What are the health benefits of our plans?"

completion = client.chat.completions.create(
    model="gpt-4",
    messages=[
        {"role": "system", "content": system_message},
        {"role": "user", "content": user_query}
    ],
    extra_body={
        "data_sources": [{
            "type": "azure_search",
            "parameters": {
                "endpoint": "https://my-search.search.windows.net",
                "index_name": "health-plans-index",
                "authentication": {"type": "api_key", "key": "***"}
            }
        }]
    }
)
```

**Fordeler:**
- Reduserer hallusinasjoner ved å kreve eksplisitt referanse til kilder
- Øker transparens i hvordan svaret ble konstruert
- Gjør det lettere å validere svar mot grounding-data

**Ulemper:**
- Øker token-forbruk (både input og output)
- Kan gi lengre responstider
- Krever at retrieval-systemet returnerer nok kontekst for resonnering

### Mønster 2: Few-shot CoT for domene-spesifikke oppgaver

For Copilot Studio eller custom orchestrators, gi eksempler på ønsket resonneringsmønster:

```
System: You are a financial advisor assistant. Always show your reasoning step by step.

Example 1:
User: Should I prioritize paying off debt or saving for retirement?
Assistant:
Step 1: Identify the interest rate on the debt. High-interest debt (>7%) typically costs more than investment returns.
Step 2: Check if employer offers retirement match. This is "free money" that should be prioritized.
Step 3: Evaluate emergency fund status. 3-6 months expenses should be saved first.
Recommendation: If high-interest debt exists, pay minimums on all debts, capture full employer match, then aggressively pay off high-interest debt. Once debt is manageable, increase retirement contributions.

Example 2:
User: Is now a good time to invest in stocks?
Assistant:
Step 1: Acknowledge that market timing is unreliable for most investors.
Step 2: Assess user's time horizon. Long-term investors (10+ years) can weather volatility.
Step 3: Consider dollar-cost averaging to reduce timing risk.
Recommendation: If investing for long-term goals, consistent contributions regardless of market conditions typically outperform attempts to time the market.

Now answer the user's question following this pattern.
```

**Fordeler:**
- Lærer modellen domene-spesifikk resonneringsstruktur
- Gir konsistens på tvers av svar
- Reduserer behov for å spesifisere CoT-instruksjon i hver query

**Ulemper:**
- Krever kurering av gode eksempler
- Øker system message token count
- Kan overfitte til eksemplene hvis de ikke er representative

### Mønster 3: Evaluering med Factuality (CoT-basert grading)

Azure OpenAI Evaluation (Preview) bruker CoT internt for faktasjekking:

```python
# Factuality evaluation using chain-of-thought grading
evaluation_result = evaluator.evaluate_factuality(
    query="What is Microsoft Foundry?",
    ground_truth="Microsoft Foundry is a unified platform for building, testing, and deploying generative AI applications. Released: Nov 2024.",
    response="Microsoft Foundry is Microsoft's platform for AI development, launched in late 2024."
)

# Evaluator uses CoT internally:
# 1. Extract claims from response
# 2. Compare each claim to ground truth
# 3. Classify: consistent / subset / superset / conflict
# 4. Return factuality score
```

**Fordeler:**
- Automatisk kvalitetssikring av LLM-output
- Strukturert feedback for forbedring av prompts
- Skalerbar evalueringspipeline

**Ulemper:**
- Krever ground truth data for trening/evaluering
- Evaluator-modellen kan også gjøre feil (evaluering av evaluering)
- Øker kostnad og latency i produksjonspipeline

---

## Beslutningsveiledning

### Når bruke CoT?

| Scenario | Bruk CoT? | Modell-anbefaling | Begrunnelse |
|----------|-----------|-------------------|-------------|
| Matematiske beregninger | ✅ Ja | GPT-4, o3, o4-mini | CoT reduserer aritmetiske feil betydelig |
| Multi-steg problemløsning | ✅ Ja | GPT-4, o3 | Strukturert resonnering forhindrer at modellen hopper over steg |
| Kildekritisk RAG | ✅ Ja | GPT-4 + Azure AI Search | Tvinger modellen til å vise hvilke dokumenter den refererer til |
| Kode-generering (kompleks) | ✅ Ja | o3, GPT-5-codex | Hjelper modellen å planlegge arkitektur før implementering |
| Enkel fakta-lookup | ❌ Nei | GPT-4o-mini | CoT øker kostnad uten nytteverdi |
| Kreativ skriving | ❌ Nei | GPT-4, GPT-4o | CoT kan hemme kreativitet og flyt |
| Reasoning models (o1, o3, GPT-5) | ❌ **Nei** | o1, o3, o4-mini, GPT-5 | Intern resonnering er bygget inn – ekstern CoT reduserer ytelse |

### Vanlige feil

| Feil | Konsekvens | Rettelse |
|------|------------|----------|
| Bruke CoT med reasoning models | Redusert ytelse, dobbel resonnering | Fjern CoT-instruksjoner når du bruker o1/o3/GPT-5 |
| For vag CoT-instruksjon | Modellen viser resonnering, men ikke strukturert | Spesifiser format: "Step 1:", "Step 2:", etc. |
| Manglende output structure | Vanskelig å parse svar programmatisk | Definer tydelig format for konklusjon (f.eks. "ANSWER is: X") |
| For lange CoT-chains | Token limit overskrides, trunkering | Begrens antall steg eller bruk kortere kontekst |
| Ikke validere resonnering | Modellen kan resonnere feil, men høres troverdig ut | Bruk Azure OpenAI Evaluation (Factuality) til å validere |

### Røde flagg (når CoT ikke fungerer)

1. **Modellen gjentar samme steg:** Token-optimalisering kan føre til loops. Legg til "avoid repetition" i prompt.
2. **Resonnering er riktig, men konklusjon feil:** Modellen kan ha problemer med siste inferens-steg. Bruk few-shot eksempler.
3. **CoT øker feilrate:** Noen oppgaver (f.eks. pattern matching) er bedre for intuitive svar. Test med og uten CoT.
4. **Reasoning models gir kortere svar med CoT:** Dette er tegn på at ekstern CoT kolliderer med intern resonnering. Fjern CoT-instruksjoner.

---

## Integrasjon med Microsoft-stakken

### Azure OpenAI Service

CoT er støttet på alle Chat Completions-modeller (GPT-3.5, GPT-4, GPT-4o). For reasoning models (o1, o3, GPT-5) er CoT innebygd.

**API-eksempel (Python SDK):**
```python
from openai import AzureOpenAI

client = AzureOpenAI(
    api_key="YOUR_API_KEY",
    api_version="2024-10-01-preview",
    azure_endpoint="https://YOUR_RESOURCE.openai.azure.com"
)

response = client.chat.completions.create(
    model="gpt-4",
    messages=[
        {"role": "system", "content": "You are a helpful assistant. Show your reasoning step by step."},
        {"role": "user", "content": "If a train travels 120 km in 2 hours, then stops for 30 minutes, then travels another 90 km in 1.5 hours, what is the average speed for the entire journey?"}
    ],
    max_tokens=500
)

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

### Copilot Studio

I Copilot Studio kan du legge til CoT-instruksjoner i:
1. **System message (Instructions):** Global instruksjon som gjelder alle topics
2. **Topic-level instructions:** Spesifikk instruksjon for en conversation topic
3. **Generative answers (knowledge sources):** CoT for å tvinge modellen til å vise hvordan den bruker knowledge sources

**Eksempel (Generative Answers):**
```
Instructions for generative answers:
When answering from knowledge sources, always:
1. Identify which documents contain relevant information
2. Extract key facts from each document
3. Synthesize information step by step
4. Provide answer with citations

Format: [Source 1]: <info>, [Source 2]: <info> → Conclusion: <answer>
```

### Microsoft Foundry

I Prompt Flow kan du opprette en CoT-node:

```python
from promptflow import tool

@tool
def chain_of_thought_reasoning(query: str, context: str) -> str:
    prompt = f"""Given the following context, answer the query using step-by-step reasoning.

Context:
{context}

Query: {query}

Reasoning:
Step 1:"""
    
    # Call LLM with prompt
    response = llm.complete(prompt)
    return response
```

### Microsoft 365 Copilot (Microsoft Graph)

Når du bygger plugins eller extensions for M365 Copilot, kan du ikke direkte kontrollere system message. Men du kan strukturere function returns for å trigge CoT:

```typescript
// Microsoft Graph Copilot plugin response
return {
    status: 200,
    body: {
        reasoning: "Step 1: Searched SharePoint for 'Q4 budget'. Step 2: Found 3 documents. Step 3: Extracted budget figures from Finance_Q4.xlsx.",
        answer: "The Q4 budget is $2.4M, with $800K allocated to Marketing.",
        citations: [
            { title: "Finance_Q4.xlsx", url: "https://..." }
        ]
    }
};
```

---

## Offentlig sektor (Norge)

### GDPR og personvern

Chain-of-thought prompting innebærer at modellen produserer mer output, som potensielt kan inneholde personopplysninger eller sensitiv informasjon. Offentlige virksomheter må være oppmerksomme på:

1. **Logging av reasoning traces:** Hvis CoT-output lagres, kan det inneholde PII som ikke ville vært i det endelige svaret. Løsning: Logg kun konklusjon, ikke mellomsteg, eller anonymiser før lagring.
2. **Grounding data exposure:** CoT kan tvinge modellen til å sitere dokumenter ordrett, noe som kan eksponere fortrolige opplysninger. Løsning: Bruk "paraphrase" eller "summarize" i steden for "quote directly".
3. **Data residency:** Azure OpenAI støtter EU Data Boundary. CoT øker token-forbruk, så sørg for at hele request/response-paret forblir innenfor EU-regionen.

### AI Act (EU AI Act 2024)

CoT er **positivt** under AI Act fordi det øker transparens og forklarbarhet:

- **Article 13 (Transparency):** CoT gir brukere innsikt i hvordan en AI-beslutning ble tatt
- **Article 14 (Human oversight):** CoT-output gjør det lettere for mennesker å validere AI-konklusjoner før de brukes i beslutningsprosesser

**Anbefaling:** For høyrisiko-systemer (f.eks. automatiserte vedtak i NAV, skatteetaten), dokumenter at CoT brukes for å øke forklarbarhet.

### Forvaltningsloven og enkeltvedtak

Når AI brukes til å forberede vedtak etter forvaltningsloven, må begrunnelsen være etterprøvbar. CoT kan hjelpe, men:

- **Risiko:** Modellen kan gi feil resonnering som høres troverdig ut ("hallucinated reasoning")
- **Løsning:** Alltid ha en saksbehandler som validerer CoT-output før vedtak fattes. CoT er et hjelpemiddel, ikke en automatisk beslutning.

---

## Kostnad og lisensiering

### Prismodell (Azure OpenAI)

Chain-of-thought øker token-forbruk betydelig:

| Modell | Pris per 1K input tokens (NOK) | Pris per 1K output tokens (NOK) | CoT overhead (estimat) |
|--------|-------------------------------|----------------------------------|------------------------|
| GPT-4 Turbo | ~0.10 | ~0.30 | 2-3x output tokens |
| GPT-4o | ~0.05 | ~0.15 | 2-3x output tokens |
| GPT-4o-mini | ~0.01 | ~0.04 | 2-3x output tokens |
| o1 | ~0.15 | ~0.60 | Reasoning tokens inkludert |
| o3-mini | ~0.01 | ~0.04 | Reasoning tokens inkludert |
| GPT-5 | ~0.20 | ~0.80 | Reasoning tokens inkludert |

**Eksempel:**
- Query: 100 tokens
- Svar uten CoT: 50 tokens → ~0.015 NOK (GPT-4o-mini)
- Svar med CoT: 150 tokens → ~0.010 + 0.006 = 0.016 NOK
- **Økning:** ~7% kostnad, men betydelig høyere nøyaktighet

**Optimaliseringstips:**
1. **Bruk CoT selektivt:** Kun for komplekse queries, ikke enkel fakta-lookup
2. **Bruk billigere modeller med CoT:** GPT-4o-mini + CoT kan matche GPT-4 uten CoT
3. **Cache system messages:** Azure OpenAI støtter prompt caching (reduserer input token cost)
4. **Reasoning effort tuning:** For reasoning models, bruk "low" effort for enkle oppgaver, "high" for komplekse

### Lisensiering (Copilot Studio)

- **Copilot Studio (standalone):** Inkluderer generative AI-kapasitet (GPT-basert). CoT påvirker ikke lisenspris, men kan tømme message quota raskere.
- **Microsoft 365 Copilot-lisens:** Gir tilgang til Tenant Graph Grounding. CoT kan forbedre hvordan Copilot bruker denne kunnskapen, men krever at utviklere konfigurerer instructions riktig.

---

## For arkitekten (Cosmo)

### 5-8 spørsmål å stille kunden

1. **Hva er kompleksiteten på brukerqueries?**
   - Enkle faktaspørsmål → CoT ikke nødvendig
   - Multi-steg problemløsning → CoT anbefales

2. **Er transparens og forklarbarhet kritisk?**
   - Ja (f.eks. offentlig sektor, regulerte bransjer) → CoT gir sporbarhet
   - Nei (f.eks. intern chatbot) → Vurder kostnad vs. nytte

3. **Hvilken modell planlegger dere å bruke?**
   - Tradisjonelle modeller (GPT-4, GPT-4o) → Eksplisitt CoT trengs
   - Reasoning models (o1, o3, GPT-5) → **Ikke bruk CoT**

4. **Har dere RAG/grounding sources?**
   - Ja → CoT kan tvinge modellen til å vise hvilke kilder den bruker
   - Nei → CoT er fortsatt nyttig, men vær obs på hallusinasjoner

5. **Hva er budsjett for LLM-kostnader?**
   - CoT øker token-forbruk med 2-3x. Kan kunden absorbere dette?

6. **Krever use casen validering av resonnering?**
   - Hvis mennesker må godkjenne svar (f.eks. medisinsk, juridisk) → CoT gjør validering lettere

7. **Er latency et problem?**
   - CoT øker responstid (flere tokens å generere). For sanntids-chat, vurder trade-off.

8. **Har dere evalueringskriterier for svar-kvalitet?**
   - Hvis ja, inkluder Factuality-evaluering (Azure OpenAI Evaluation) for å validere CoT-output

### Fallgruber å unngå

| Fallgrube | Hvorfor det er problematisk | Hvordan unngå |
|-----------|----------------------------|---------------|
| **Bruke CoT med reasoning models** | Ekstern CoT kolliderer med intern resonnering, reduserer kvalitet | Dokumenter tydelig: "No CoT prompts for o1/o3/GPT-5" |
| **Ikke teste med og uten CoT** | Anta at CoT alltid hjelper (det gjør det ikke alltid) | A/B-test minst 50 queries med/uten CoT |
| **Glemme å parse CoT-output** | Hvis kunden trenger strukturert svar, må CoT-output parses | Definer tydelig output format (JSON, XML, eller ANSWER IS: X) |
| **Ikke budsjettere for økt token-forbruk** | CoT kan doble eller tredoble kostnad | Estimer kostnadsøkning tidlig, få buy-in |
| **Stole blindt på CoT-resonnering** | Modellen kan resonnere feil, men høres troverdig ut | Valider alltid CoT-output mot ground truth eller human review |

### Anbefalinger per modenhetsnivå

#### Nivå 1: Proof-of-Concept
- Start med zero-shot CoT ("Let's think step by step")
- Bruk GPT-4o-mini for kostnadseffektivitet
- Logg CoT-output for å se hvordan modellen resonnerer
- Evaluer manuelt (5-10 eksempler)

#### Nivå 2: Pilot / MVP
- Implementer few-shot CoT med 2-3 kurerte eksempler
- Integrer med Azure AI Search eller Copilot Studio knowledge sources
- Bruk Azure OpenAI Evaluation (Factuality) for automatisk kvalitetssikring
- Mål kostnad per query og sammenlign med non-CoT baseline

#### Nivå 3: Produksjon (lav risiko)
- Bruk reasoning models (o3-mini, o4-mini) i stedet for eksplisitt CoT
- Implementer prompt caching for å redusere input token cost
- Monitorér CoT-output for repetisjon eller degenerering
- Sett opp alerts for queries som overstiger token limit

#### Nivå 4: Produksjon (høy risiko / regulert)
- Kombiner reasoning models (o3, GPT-5) med structured outputs for parse-sikkerhet
- Implementer human-in-the-loop validering for kritiske beslutninger
- Logg alle reasoning traces for compliance (GDPR-safe logging)
- Gjennomfør regelmessig audit av CoT-output mot ground truth

---

## Kilder og verifisering

### Microsoft Learn (Verified via MCP)

| Kilde | Konfidensnivå | Verifisert dato |
|-------|---------------|-----------------|
| [Prompt engineering techniques - Chain of thought prompting](https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/prompt-engineering#chain-of-thought-prompting) | **Verified** | 2026-02 |
| [Azure OpenAI On Your Data - Best practices (Chain-of-thought prompting)](https://learn.microsoft.com/en-us/azure/foundry-classic/openai/concepts/use-your-data#best-practices) | **Verified** | 2026-02 |
| [Azure OpenAI Evaluation (Preview) - Factuality (uses CoT internally)](https://learn.microsoft.com/en-us/azure/foundry-classic/openai/how-to/evaluations#types-of-testing-criteria) | **Verified** | 2026-02 |
| [Azure OpenAI reasoning models (o1, o3, GPT-5)](https://learn.microsoft.com/en-us/azure/foundry/openai/how-to/reasoning) | **Verified** | 2026-02 |
| [Transparency note for Azure OpenAI - Chain-of-thought capabilities](https://learn.microsoft.com/en-us/azure/foundry/responsible-ai/openai/transparency-note?view=foundry-classic#capabilities) | **Verified** | 2026-02 |

### Baseline-kunnskap (fra Claude-modell)

| Seksjon | Konfidensnivå | Merknad |
|---------|---------------|---------|
| Introduksjon (CoT-historikk) | **Baseline** | Wei et al., 2022 er en kjent publikasjon i feltet |
| Arkitekturmønstre | **Baseline + Verified** | Kombinerer best practices fra MS Learn og generell LLM-kunnskap |
| Offentlig sektor (Norge) | **Baseline** | GDPR, AI Act, Forvaltningsloven - generell compliance-kunnskap |
| Kostnad og lisensiering | **Baseline + Verified** | Prismodeller er hentet fra Azure OpenAI dokumentasjon (via MCP) |

### MCP-kall utført

1. **microsoft_docs_search:** "chain of thought prompting Azure OpenAI" → 10 resultater
2. **microsoft_code_sample_search:** "chain of thought prompt examples" → 20 code snippets
3. **microsoft_docs_fetch:** [Azure OpenAI reasoning models](https://learn.microsoft.com/en-us/azure/foundry/openai/how-to/reasoning) → Full dokumentasjon hentet

**Totalt:** 4 MCP-kall, 3 unike Microsoft Learn-kilder.

---

**Dokumentet oppdateres fortløpende basert på nye Azure OpenAI-funksjoner og Microsoft Learn-dokumentasjon.**
