601 lines
22 KiB
Markdown
601 lines
22 KiB
Markdown
# Token Optimization and Cost Efficiency
|
||
|
||
**Last updated:** 2026-06-24
|
||
**Status:** GA
|
||
**Category:** Prompt Engineering & LLM Optimization
|
||
|
||
---
|
||
|
||
## Introduksjon
|
||
|
||
Token-optimalisering er kritisk for både kostnadseffektivitet og ytelse i Azure OpenAI-løsninger. Hver API-forespørsel koster basert på antall tokens prosessert (input + output), og ineffektiv token-bruk kan raskt eskalere både kostnader og responstider. Denne guiden dekker praktiske teknikker for å redusere token-forbruk, utnytte caching-mekanismer, og balansere kostnad mot ytelse.
|
||
|
||
**Nøkkelkonsept:** Azure OpenAI-modeller prosesserer tekst ved å dele den opp i tokens. Ett token er ca. 4 tegn for vanlig engelsk tekst. Både input (prompt) og output (completion) blir målt i tokens, og prisene varierer betydelig mellom modeller og deployment-typer.
|
||
|
||
---
|
||
|
||
## Kjernekomponenter
|
||
|
||
### Token-basert prismodell
|
||
|
||
| Komponent | Beskrivelse | Kostnadsfaktor |
|
||
|-----------|-------------|----------------|
|
||
| **Input tokens** | Tokens i prompt (system message + user input + conversation history) | Lavest kostnad per token |
|
||
| **Output tokens** | Tokens generert av modellen som respons | 2-4× høyere enn input |
|
||
| **Cached tokens** | Input tokens som matcher cached content | 50-100% rabatt (avhenger av deployment-type) |
|
||
| **Reasoning tokens** | Ekstra tokens brukt av o-series modeller for resonnering | Egen prisstruktur (kun synlig i API-respons) |
|
||
|
||
**Eksempel GPT-4o-mini (standard deployment):**
|
||
- Input: ~$0.15 per 1M tokens
|
||
- Output: ~$0.60 per 1M tokens
|
||
- Cached input: ~$0.075 per 1M tokens (50% rabatt)
|
||
|
||
### Deployment-typer og token-optimalisering
|
||
|
||
| Deployment Type | Token-strategi | Best For |
|
||
|----------------|----------------|----------|
|
||
| **Standard (pay-as-you-go)** | Fokus på å redusere totale tokens; prompt caching gir moderat rabatt | Variabel last, utvikling, testing |
|
||
| **Provisioned Throughput (PTU)** | Optimalisere for throughput (tokens/min); cached tokens kan gi opptil 100% rabatt | Forutsigbar, høy last; latenskritiske workloads |
|
||
| **Global Standard** | Balansere token-effektivitet med geografisk fleksibilitet | Multi-region workloads uten data residency-krav |
|
||
| **Batch** | Maksimere token-volum; 50% kostnadsbesparing | Bulk-prosessering, ikke-sanntid (24t turnaround) |
|
||
|
||
---
|
||
|
||
## Token-optimaliserings-teknikker
|
||
|
||
### 1. Prompt Engineering for Token-effektivitet
|
||
|
||
#### Kortere prompts uten kvalitetstap
|
||
|
||
```yaml
|
||
❌ Ineffektivt (150 tokens):
|
||
"You are an extremely helpful and knowledgeable assistant with expertise
|
||
in multiple domains. Please provide a comprehensive and detailed analysis
|
||
of the following situation, ensuring that you consider all relevant factors
|
||
and provide actionable recommendations..."
|
||
|
||
✅ Effektivt (25 tokens):
|
||
"You are an expert analyst. Analyze the situation and provide actionable
|
||
recommendations."
|
||
```
|
||
|
||
**Teknikk:** Few-shot vs. Zero-shot
|
||
- Few-shot bruker flere tokens (eksempler i prompt), men gir bedre output-kvalitet
|
||
- Zero-shot sparer input-tokens, men kan kreve regenerering hvis kvalitet er dårlig
|
||
- **Trade-off:** Evaluer om ekstra input-tokens er billigere enn å regenerere output
|
||
|
||
#### Strukturerte outputs reduserer output-tokens
|
||
|
||
```python
|
||
# ❌ Ustrukturert output (400+ tokens)
|
||
"Explain the benefits of Azure OpenAI with examples and details..."
|
||
|
||
# ✅ Strukturert output (150 tokens)
|
||
response = client.chat.completions.create(
|
||
model="gpt-4o",
|
||
messages=[{"role": "user", "content": "List 3 Azure OpenAI benefits"}],
|
||
response_format={
|
||
"type": "json_schema",
|
||
"json_schema": {
|
||
"name": "benefits",
|
||
"schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"benefits": {
|
||
"type": "array",
|
||
"items": {"type": "string"},
|
||
"maxItems": 3
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
)
|
||
```
|
||
|
||
### 2. Prompt Caching (automatisk funksjonalitet)
|
||
|
||
**Status:** In-memory caching GA for alle Azure OpenAI-modeller GPT-4o eller nyere (chat/completion/responses/realtime-operasjoner). Extended retention (24t) støttes for GPT-5-serien (gpt-5/5.1/5.1-codex/5.2/5.3-codex/5.4 m.fl.) + gpt-4.1.
|
||
|
||
Prompt caching reduserer kostnader ved å cache de første 1024+ tokens i en prompt. Når identisk innhold gjentas, betaler du redusert pris for cached tokens.
|
||
|
||
#### Hvordan det fungerer
|
||
|
||
| Faktor | Krav |
|
||
|--------|------|
|
||
| **Minimum prompt-lengde** | 1024 tokens |
|
||
| **Cache-treff** | Første 1024 tokens må være identiske |
|
||
| **Granularitet** | Cache-treff per 128 tokens etter første 1024 |
|
||
| **Cache-levetid** | *In-memory* (default t.o.m. gpt-5.4): ryddes typisk innen 5–10 min inaktivitet, alltid innen 1 time. *Extended retention* (opptil 24t) via `prompt_cache_retention: "24h"` — default for nyere modeller |
|
||
| **Deling** | Ikke delt mellom Azure subscriptions |
|
||
|
||
> **Data-residens:** In-memory caching er kompatibel med alle data-residency-regioner. Extended retention lagrer data midlertidig på GPU-maskiner og holder data in-region kun ved Regional Standard / Regional Provisioned deployment-typer.
|
||
|
||
#### Design for cache-hits
|
||
|
||
```python
|
||
# ✅ Strukturer prompts for caching-effektivitet
|
||
system_context = """You are a Norwegian public sector AI assistant.
|
||
[... 2000 tokens med policy-dokumenter, guidelines, etc. ...]
|
||
""" # Dette blir cached
|
||
|
||
messages = [
|
||
{"role": "system", "content": system_context}, # Cached
|
||
{"role": "user", "content": user_query} # Variabel (ikke cached)
|
||
]
|
||
|
||
# Cache-nøkkel (optional) for å forbedre hit rate
|
||
response = client.chat.completions.create(
|
||
model="gpt-4o",
|
||
messages=messages,
|
||
prompt_cache_key="public-sector-v1" # Forbedrer routing
|
||
)
|
||
|
||
# Sjekk cache-hits i respons
|
||
cached = response.usage.prompt_tokens_details.cached_tokens
|
||
print(f"Cached tokens: {cached}/{response.usage.prompt_tokens}")
|
||
```
|
||
|
||
**Konfidensmarkør:** 🟢 **Høy** – Prompt caching er GA og godt dokumentert.
|
||
|
||
#### Best practices for caching
|
||
|
||
1. **Plasser statisk innhold først:** System messages, dokumenter, eksempler
|
||
2. **Hold variabelt innhold sist:** User queries, timestamps, session-spesifikk data
|
||
3. **Bruk `prompt_cache_key`** for workloads med mange parallelle requests (>15 req/min)
|
||
4. **Overvåk cache hit rate:** Sjekk `cached_tokens` i API-respons
|
||
|
||
**Anti-pattern:**
|
||
```python
|
||
# ❌ Variabel innhold først = ingen cache hits
|
||
messages = [
|
||
{"role": "user", "content": f"Timestamp: {now()} - {user_query}"}, # Endres hver gang
|
||
{"role": "system", "content": long_static_context} # For sent i token-sekvens
|
||
]
|
||
```
|
||
|
||
### 3. Max Tokens-kontroll
|
||
|
||
`max_tokens`-parameteren begrenser output-lengde. Dette påvirker **ikke** kvalitet, men hindrer unødvendig lange svar.
|
||
|
||
```python
|
||
# ❌ Ukontrollert output (kan generere 4000+ tokens)
|
||
response = client.chat.completions.create(
|
||
model="gpt-4o",
|
||
messages=[{"role": "user", "content": "Explain Microsoft Foundry"}]
|
||
)
|
||
|
||
# ✅ Kontrollert output
|
||
response = client.chat.completions.create(
|
||
model="gpt-4o",
|
||
messages=[{"role": "user", "content": "Explain Microsoft Foundry in 3 sentences"}],
|
||
max_tokens=150,
|
||
stop=["\n\n"] # Stopp ved double line break
|
||
)
|
||
```
|
||
|
||
**Konfidensmarkør:** 🟢 **Høy** – `max_tokens` er standard API-funksjonalitet.
|
||
|
||
### 4. Streaming for opplevd ytelse
|
||
|
||
Streaming reduserer **ikke** totale tokens eller totaltid, men forbedrer brukeropplevelse ved å vise output inkrementelt.
|
||
|
||
```python
|
||
stream = client.chat.completions.create(
|
||
model="gpt-4o",
|
||
messages=messages,
|
||
stream=True
|
||
)
|
||
|
||
for chunk in stream:
|
||
if chunk.choices[0].delta.content:
|
||
print(chunk.choices[0].delta.content, end='')
|
||
```
|
||
|
||
**Når å bruke streaming:**
|
||
- Chatbots, conversational interfaces (brukeren ser respons umiddelbart)
|
||
- Lange genereringer (unngå client-side timeouts)
|
||
|
||
**Når å **ikke** bruke streaming:**
|
||
- Bulk-prosessering (sentiment analysis, oversettelse)
|
||
- Når du trenger hele responsen før videre prosessering
|
||
|
||
### 5. Batch API for massiv kostnadsbesparelse
|
||
|
||
**Status:** GA
|
||
|
||
Azure OpenAI Batch API gir 50% kostnadsrabatt for asynkrone workloads med 24-timers turnaround.
|
||
|
||
| Fordel | Detalj |
|
||
|--------|--------|
|
||
| **Kostnadsreduksjon** | 50% rabatt vs. global standard |
|
||
| **Separat quota** | Enqueued token quota påvirker ikke online workloads |
|
||
| **Turnaround** | 24 timer (target), ikke garantert |
|
||
| **Cancellation** | Cancel jobb når som helst; betal kun for completed work |
|
||
|
||
**Use cases:**
|
||
- Large-scale data analysis
|
||
- Content generation (bulk artikler, produktbeskrivelser)
|
||
- Dokumentrevidering og oppsummering
|
||
- NLP-tasks (sentiment analysis, translation på store datasett)
|
||
|
||
**Konfidensmarkør:** 🟢 **Høy** – Batch API er GA og anbefales av Microsoft for bulk-workloads.
|
||
|
||
### 6. Modellvalg for kostnad vs. ytelse
|
||
|
||
| Modell | Input Cost | Output Cost | Best For |
|
||
|--------|-----------|-------------|----------|
|
||
| **GPT-4.1-nano** | Lavest | Lavest | Enkel klassifisering, routing, strukturert output |
|
||
| **GPT-4.1-mini** | Veldig lav | Lav | De fleste use cases; beste kostnad/ytelse-balanse |
|
||
| **GPT-4.1 / GPT-4o** | Moderat | Moderat | Kompleks resonnering, kreativt innhold |
|
||
| **o3-mini** | Høy | Høy (reasoning tokens) | Matematikk, kode, logisk resonnering |
|
||
| **GPT-5** | Høyest | Høyest | Mest krevende oppgaver (sjelden nødvendig) |
|
||
|
||
**Strategi:** Start med GPT-4.1-mini, oppgrader kun hvis kvalitet er utilstrekkelig.
|
||
|
||
---
|
||
|
||
## Arkitekturmønstre
|
||
|
||
### Mønster 1: Multi-tier model cascade
|
||
|
||
Bruk billige modeller for routing/filtering, dyre modeller kun for komplekse oppgaver.
|
||
|
||
```
|
||
User Query
|
||
↓
|
||
[GPT-4.1-nano: Intent classification] (5 tokens output)
|
||
↓
|
||
├─→ [Simple query] → Cache lookup → Response
|
||
└─→ [Complex query] → [GPT-4o: Full reasoning] → Response
|
||
```
|
||
|
||
**ROI:** 70-80% av queries kan håndteres av billigere modeller.
|
||
|
||
### Mønster 2: Context compression med embeddings
|
||
|
||
Erstatt lange dokumenter med semantic search + RAG.
|
||
|
||
```
|
||
❌ Direkte document injection (10 000 tokens/request):
|
||
system_message = f"Context: {full_documents}" # Dyrt hver gang
|
||
|
||
✅ RAG med embeddings (500 tokens/request):
|
||
1. Index documents med Azure AI Search (engangs-kostnad)
|
||
2. Query → embedding → semantic search → top 3 relevante chunks
|
||
3. Inject kun relevante chunks (500 tokens) i prompt
|
||
```
|
||
|
||
**Besparelse:** 95% reduksjon i input tokens (10k → 500).
|
||
|
||
### Mønster 3: Fine-tuning for prompt-reduksjon
|
||
|
||
Fine-tune modeller for domene-spesifikke oppgaver → kortere prompts.
|
||
|
||
```
|
||
❌ Base model med lang prompt (2000 tokens instruction):
|
||
"You are a Norwegian legal expert. Follow these guidelines: [1800 tokens]"
|
||
|
||
✅ Fine-tuned model (50 tokens):
|
||
"Analyze contract" → Modellen har allerede lært domene-spesifikk kunnskap
|
||
```
|
||
|
||
**Trade-off:**
|
||
- Opfront kostnad: Training (token-basert) + hosting ($1.70/time for fine-tuned deployment)
|
||
- Løpende besparelse: 95% reduksjon i input tokens per request
|
||
- **Break-even:** Evaluer etter forventet request-volum (typisk >100k requests)
|
||
|
||
**Konfidensmarkør:** 🟡 **Moderat** – Fine-tuning kostnad/nytte varierer sterkt med use case.
|
||
|
||
---
|
||
|
||
## Beslutningsveiledning
|
||
|
||
### Når å prioritere token-optimalisering
|
||
|
||
| Scenario | Prioritet | Teknikk |
|
||
|----------|-----------|---------|
|
||
| Høyt request-volum (>1M requests/måned) | 🔴 Kritisk | Alle teknikker; vurder fine-tuning |
|
||
| Repetitive prompts (chatbot, support) | 🔴 Kritisk | Prompt caching, RAG, model cascade |
|
||
| Lange dokumenter i context | 🔴 Kritisk | RAG, context compression |
|
||
| Batch-prosessering | 🟡 Viktig | Batch API (50% rabatt) |
|
||
| Prototyping, lav last | 🟢 Lav | Fokus på funksjonalitet først |
|
||
|
||
### Decision tree: Kostnadsoptimalisering
|
||
|
||
```
|
||
Start: Høye token-kostnader?
|
||
│
|
||
├─→ Høyt request-volum? (>100k/mnd)
|
||
│ ├─→ Ja: Vurder Provisioned Throughput (PTU)
|
||
│ └─→ Nei: Optimaliser per-request tokens
|
||
│
|
||
├─→ Repetitive prompts? (>50% overlapp)
|
||
│ └─→ Ja: Design for prompt caching (system message først)
|
||
│
|
||
├─→ Lange dokumenter i context? (>5k tokens)
|
||
│ └─→ Ja: Implementer RAG + Azure AI Search
|
||
│
|
||
├─→ Bulk-prosessering? (ikke-sanntid OK)
|
||
│ └─→ Ja: Bruk Batch API (50% rabatt)
|
||
│
|
||
└─→ Kompleks domene-logikk? (lang instruction prompt)
|
||
└─→ Ja: Vurder fine-tuning (break-even >100k requests)
|
||
```
|
||
|
||
---
|
||
|
||
## Integrasjon med Microsoft-stakken
|
||
|
||
### Microsoft Foundry: Token monitoring
|
||
|
||
```python
|
||
# Overvåk token-bruk i Azure Monitor
|
||
from azure.monitor.query import MetricsQueryClient
|
||
|
||
metrics_client = MetricsQueryClient(credential)
|
||
|
||
# Hent Processed Prompt Tokens (input TPM)
|
||
response = metrics_client.query_resource(
|
||
resource_uri=f"/subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.CognitiveServices/accounts/{account}",
|
||
metric_names=["ProcessedPromptTokens"],
|
||
timespan=timedelta(days=7),
|
||
granularity=timedelta(minutes=1),
|
||
aggregations=["Average", "Maximum"]
|
||
)
|
||
|
||
# Hent Generated Completion Tokens (output TPM)
|
||
completion_response = metrics_client.query_resource(
|
||
resource_uri=resource_uri,
|
||
metric_names=["GeneratedCompletionTokens"],
|
||
timespan=timedelta(days=7),
|
||
granularity=timedelta(minutes=1),
|
||
aggregations=["Average", "Maximum"]
|
||
)
|
||
```
|
||
|
||
**Nøkkel-metrics:**
|
||
- `ProcessedPromptTokens`: Input TPM (inkludert cached tokens)
|
||
- `GeneratedCompletionTokens`: Output TPM
|
||
- `TokenTransaction`: Total tokens prosessert
|
||
|
||
### Azure API Management: Token rate limiting
|
||
|
||
Implementer token-baserte quotas per consumer/application.
|
||
|
||
```xml
|
||
<llm-token-limit
|
||
counter-key="@(context.Subscription.Id)"
|
||
tokens-per-minute="10000"
|
||
estimate-prompt-tokens="true"
|
||
remaining-tokens-variable-name="remainingTokens">
|
||
</llm-token-limit>
|
||
```
|
||
|
||
**Fordeler:**
|
||
- Forhindre at én app bruker all quota
|
||
- Pre-calculate prompt tokens → avvis requests før de når backend
|
||
- Rettferdig fordeling av TPM på tvers av apps
|
||
|
||
### Copilot Studio: Token-bevissthet
|
||
|
||
Copilot Studio abstraherer token-håndtering, men:
|
||
- Lange conversation histories akkumulerer tokens (automatisk summarization etter 10-15 meldinger)
|
||
- Adaptive Cards og rich content legger til tokens
|
||
- Generative answers fra data sources kan bli dyre (hele documents injectes)
|
||
|
||
**Anbefaling:** Bruk **Generative Answers** med Azure AI Search (semantic ranking) istedenfor full document injection.
|
||
|
||
---
|
||
|
||
## Offentlig sektor (Norge)
|
||
|
||
### Budsjettstyring og kostnadskontroll
|
||
|
||
Offentlige virksomheter må ha forutsigbare IT-kostnader. Token-optimalisering er kritisk for:
|
||
|
||
1. **Årsbudsjett-compliance:** Unngå overforbruk midt i budsjettåret
|
||
2. **Anbud og kontrakter:** Estimere token-kostnader for 3-5 års driftsperiode
|
||
3. **Transparens:** Kunne forklare kostnader til politisk ledelse
|
||
|
||
**Praktisk tilnærming:**
|
||
```
|
||
1. Baseline-måling (1 måned):
|
||
- Mål faktisk token-bruk i pilot (Azure Monitor)
|
||
- Identifiser kostnadsdrivere (store prompts? høyt volum?)
|
||
|
||
2. Optimaliser (2-4 uker):
|
||
- Implementer prompt caching (rask win)
|
||
- Evaluer modellvalg (GPT-4.1-mini vs. GPT-4o)
|
||
- Vurder RAG hvis lange dokumenter brukes
|
||
|
||
3. Produksjon med budsjett-alerts:
|
||
- Sett Azure Cost Management budgets
|
||
- Alerts ved 80% / 100% av månedlig budsjett
|
||
- Action groups for automatisk skalering/throttling
|
||
```
|
||
|
||
### Data residency og token-kostnader
|
||
|
||
| Krav | Deployment Type | Token-strategi |
|
||
|------|----------------|----------------|
|
||
| Data residency Norge | Standard (regional) eller Data Zone Standard | Må akseptere høyere kostnader; fokus på token-effektivitet |
|
||
| Ingen residency-krav | Global Standard | 10-30% rabatt; kan bruke mer tokens innenfor samme budsjett |
|
||
|
||
**Anbefaling:** For **ikke-personopplysninger** (FAQ, interne dokumenter), bruk Global Standard → mer rom for tokens.
|
||
|
||
### Compliance og token-logging
|
||
|
||
**GDPR/logging-krav:** API requests logges i Azure Monitor, inkludert token-bruk. Sikre at:
|
||
- PII ikke injectes i prompts (kan logges)
|
||
- Stored Completions (hvis brukt) har data retention policies
|
||
- Token-bruk kan audits for kostnadskontroll
|
||
|
||
---
|
||
|
||
## Kostnad og lisensiering
|
||
|
||
### Azure OpenAI prismodell (per 1M tokens, Feb 2026)
|
||
|
||
#### Standard deployment (pay-as-you-go)
|
||
|
||
| Modell | Input | Output | Cached Input |
|
||
|--------|-------|--------|--------------|
|
||
| GPT-4.1-nano | $0.10 | $0.40 | $0.05 |
|
||
| GPT-4.1-mini | $0.20 | $0.80 | $0.10 |
|
||
| GPT-4.1 | $2.50 | $10.00 | $1.25 |
|
||
| GPT-4o | $2.50 | $10.00 | $1.25 |
|
||
| GPT-4o-mini | $0.15 | $0.60 | $0.075 |
|
||
| o3-mini | $1.10 | $4.40 | $0.55 |
|
||
|
||
**Merk:** Reasoning tokens (o-series) har separat pricing.
|
||
|
||
#### Batch API (50% rabatt)
|
||
|
||
| Modell | Input | Output |
|
||
|--------|-------|--------|
|
||
| GPT-4.1-mini | $0.10 | $0.40 |
|
||
| GPT-4o | $1.25 | $5.00 |
|
||
| o3-mini | $0.55 | $2.20 |
|
||
|
||
#### Provisioned Throughput (PTU-basert)
|
||
|
||
PTU-prising er basert på kapasitet (PTUs), ikke tokens. Token-optimalisering påvirker:
|
||
- **Hvor mange PTUs du trenger:** Færre tokens → lavere PTU-krav
|
||
- **Cached tokens:** Opptil 100% rabatt (frigjør PTU-kapasitet)
|
||
|
||
**Eksempel:**
|
||
- Workload: 500k input TPM + 150k output TPM = 30 PTUs
|
||
- Med 50% cache hit rate: 250k input TPM (cached, gratis) + 250k input TPM + 150k output = 20 PTUs
|
||
- **Besparelse:** 33% reduksjon i PTU-kostnad
|
||
|
||
**Konfidensmarkør:** 🟢 **Høy** – Priser hentet fra offisiell Azure-dokumentasjon (Feb 2026).
|
||
|
||
### Fine-tuning kostnader
|
||
|
||
| Kostnadstype | Beregning | Eksempel (GPT-4.1) |
|
||
|--------------|-----------|-------------------|
|
||
| **Training** | Tokens × epochs × training price | 1M tokens × 2 epochs × $2/M = $4 |
|
||
| **Hosting** | $1.70/time (standard deployment) | $1,224/måned (kontinuerlig) |
|
||
| **Inference** | Input + output tokens (samme som base + hosting) | 20M input × $1.10 + 40M output × $4.40 = $198 |
|
||
|
||
**Break-even analyse:**
|
||
```
|
||
Besparelse per request (prompt-reduksjon): 1800 tokens × $0.20/1M = $0.00036
|
||
Månedlig hosting-kostnad: $1,224
|
||
Break-even requests/måned: $1,224 / $0.00036 = 3.4M requests
|
||
|
||
→ Kun lønnsomt ved **svært** høyt volum (>3M requests/måned)
|
||
```
|
||
|
||
### ROI-kalkulator for token-optimalisering
|
||
|
||
**Scenario:** Chatbot for offentlig sektor (1M requests/måned)
|
||
|
||
| Tiltak | Token-reduksjon | Månedlig besparelse (NOK) |
|
||
|--------|-----------------|---------------------------|
|
||
| Baseline (ingen optimalisering) | - | Kostnad: 15 000 kr |
|
||
| Prompt caching (50% cache hit) | 50% input | Sparer: 3 750 kr (25%) |
|
||
| Kortere prompts (-30% input) | 30% input | Sparer: 2 250 kr (15%) |
|
||
| Strukturerte outputs (-20% output) | 20% output | Sparer: 2 400 kr (16%) |
|
||
| Bytt til GPT-4.1-mini fra GPT-4o | - | Sparer: 10 500 kr (70%) |
|
||
| **Total optimalisering** | **Kombinert** | **Sparer: 12 000 kr/måned (80%)** |
|
||
|
||
**Konfidensmarkør:** 🟡 **Moderat** – Besparelser varierer med workload; disse er representative estimater.
|
||
|
||
---
|
||
|
||
## For arkitekten (Cosmo)
|
||
|
||
### Praktiske spørsmål under arkitekturrådgivning
|
||
|
||
1. **"Hvor mange requests forventer dere per måned?"**
|
||
- <100k: Standard deployment, fokus på funksjonalitet
|
||
- 100k-1M: Optimaliser tokens (caching, compression)
|
||
- >1M: Vurder PTU, Batch API, fine-tuning
|
||
|
||
2. **"Har dere repetitive prompts (chatbot, FAQ, support)?"**
|
||
- Ja → Design for prompt caching (system message først)
|
||
- Nei → Fokus på andre optimaliseringsteknikker
|
||
|
||
3. **"Bruker dere lange dokumenter som context?"**
|
||
- Ja → Implementer RAG + Azure AI Search (95% token-reduksjon)
|
||
- Nei → Standard prompt engineering
|
||
|
||
4. **"Har dere budsjettbegrensninger eller årsbudsjett?"**
|
||
- Ja → Sett Azure Cost Management budgets + alerts
|
||
- Implementer token rate limiting i API Management
|
||
|
||
5. **"Er sanntids-respons kritisk?"**
|
||
- Ja → Standard/PTU + streaming
|
||
- Nei → Vurder Batch API (50% rabatt)
|
||
|
||
### Red flags for kostnadsfeller
|
||
|
||
🚩 **"Vi sender hele PDF-filer (100+ sider) som context"**
|
||
→ RAG er obligatorisk; ellers 50k+ tokens per request
|
||
|
||
🚩 **"Fine-tuned modell har vært deployed i 6 måneder uten bruk"**
|
||
→ $1.70/time × 24 × 180 dager = $7,344 hosting-kostnad uten verdi
|
||
|
||
🚩 **"Vi bruker GPT-4o for alt"**
|
||
→ 80% av use cases kan bruke GPT-4.1-mini (5× billigere)
|
||
|
||
🚩 **"Vi har ikke monitoring på token-bruk"**
|
||
→ Kostnader kan eskalere ukontrollert; sett opp Azure Monitor metrics
|
||
|
||
### Anbefalte arkitekturmønstre per scenario
|
||
|
||
| Scenario | Anbefalt mønster | Estimert besparelse |
|
||
|----------|-----------------|---------------------|
|
||
| **Kundeservice chatbot (repetitive spørsmål)** | Prompt caching + model cascade (nano for routing) | 60-70% |
|
||
| **Dokumentanalyse (lange PDF-er)** | RAG + Azure AI Search + GPT-4.1-mini | 80-90% |
|
||
| **Bulk content generation (ikke-sanntid)** | Batch API + strukturerte outputs | 50-60% |
|
||
| **Kompleks resonnering (kode, matematikk)** | o3-mini (kun når nødvendig) + caching | 30-40% |
|
||
| **Intern FAQ (lavt volum)** | Standard deployment + GPT-4.1-mini | 70% (vs. GPT-4o) |
|
||
|
||
### Validering av løsning: Token-effektivitets-checklist
|
||
|
||
✅ **Prompt design:**
|
||
- [ ] Statisk innhold (system message, dokumenter) plassert først?
|
||
- [ ] `max_tokens` satt til minimum nødvendig?
|
||
- [ ] Stop sequences definert for å hindre overgenerering?
|
||
|
||
✅ **Caching:**
|
||
- [ ] Prompts >1024 tokens har statisk prefix?
|
||
- [ ] `prompt_cache_key` brukt for high-frequency workloads?
|
||
- [ ] Cache hit rate monitores i Azure Monitor?
|
||
|
||
✅ **Modellvalg:**
|
||
- [ ] Bruker GPT-4.1-mini som default (oppgrader kun hvis nødvendig)?
|
||
- [ ] Model cascade implementert (billig modell for routing)?
|
||
|
||
✅ **Kostnadsovervåking:**
|
||
- [ ] Azure Cost Management budgets satt opp?
|
||
- [ ] Alerts ved 80%/100% av budsjett?
|
||
- [ ] Token-metrics logges og analyseres månedlig?
|
||
|
||
✅ **Arkitektur:**
|
||
- [ ] RAG implementert for lange dokumenter?
|
||
- [ ] Batch API vurdert for bulk-workloads?
|
||
- [ ] Content filtering justert (hvis lavrisiko use case)?
|
||
|
||
---
|
||
|
||
## Kilder og verifisering
|
||
|
||
**Offisiell Microsoft-dokumentasjon:**
|
||
1. [Prompt caching for Azure OpenAI](https://learn.microsoft.com/en-us/azure/foundry/openai/how-to/prompt-caching)
|
||
2. [Plan and manage costs for Azure OpenAI](https://learn.microsoft.com/en-us/azure/foundry/concepts/manage-costs)
|
||
3. [Performance and latency optimization](https://learn.microsoft.com/en-us/azure/foundry/openai/how-to/latency)
|
||
4. [Batch API for Azure OpenAI](https://learn.microsoft.com/en-us/azure/foundry/openai/how-to/batch)
|
||
5. [Azure OpenAI pricing](https://azure.microsoft.com/pricing/details/cognitive-services/openai-service/)
|
||
|
||
**Verifisert:** Februar 2026 via microsoft-learn MCP-server
|
||
|
||
**Confidence level:** 🟢 **Høy** for GA-funksjoner (prompt caching, batch API, standard pricing), 🟡 **Moderat** for ROI-estimater (workload-avhengige).
|
||
|
||
---
|
||
|
||
**Sist oppdatert av Cosmo Skyberg, Microsoft AI Solution Architect**
|
||
*For spørsmål om token-optimalisering i din løsning, start en arkitektursesjon med `/architect`.*
|