ms-ai-architect/skills/ms-ai-engineering/references/agent-orchestration/agent-evaluation-testing-frameworks.md
Kjell Tore Guttormsen ddce43d8b2 feat(ms-ai-architect): Spor 1 — Port-1-substrat migrert på 4 ikke-advisor-skills (243 Source + 327 Type + 325 TOC + stale-verified poison fjernet) [skip-docs]
Steg 9 (R4): unified migrate-corpus.mjs --write over engineering/governance/
infrastructure/security. 327 filer mutert, verified=null, prosa byte-identisk
(fra første ## seksjon), advisor urørt (0 endringer).

To applier-fixes oppdaget under kjøring (TDD, RED→GREEN):
- insertHeaderFields: anker faller nå tilbake når en meta-linje selv passerer
  500B (2 filer pakket et avsnitt i **Status:** → Type/Source landet utenfor
  scan-vinduet, applierens post-write-assertion fanget + restaurerte).
- normalizeStaleVerified: fjerner nå ALLE stale non-date **Verified:** i
  500B-vinduet, inkl. stray body-dup rett under --- (9 mlops-genaiops-filer var
  ellers falskt "verified"/fresh, droppet fra worklist). Operatør-godkjent
  utvidelse av carve-out; kun stray metadata-linjer, aldri prosa.

test-transform-criterion: precondition oppdatert til post-migrasjons-sannhet
(fila bærer nå Source). Suite 728/728 grønn.
2026-07-04 10:19:11 +02:00

566 lines
27 KiB
Markdown

# Agent Evaluation and Testing Frameworks
**Last updated:** 2026-06-24 | Verified: MCP 2026-06
**Status:** GA (Azure AI Evaluation SDK), Preview (Agent-specific evaluators)
**Category:** Agent Orchestration & Automation
**Type:** reference
**Source:** https://learn.microsoft.com/azure/foundry/concepts/observability
---
## Innhold
- [Introduksjon](#introduksjon)
- [Kjernekomponenter](#kjernekomponenter)
- [Arkitekturmønstre](#arkitekturmønstre)
- [Beslutningsveiledning](#beslutningsveiledning)
- [Integrasjon med Microsoft-stakken](#integrasjon-med-microsoft-stakken)
- [Offentlig sektor (Norge)](#offentlig-sektor-norge)
- [Kostnad og lisensiering](#kostnad-og-lisensiering)
- [For arkitekten (Cosmo)](#for-arkitekten-cosmo)
- [Kilder og verifisering](#kilder-og-verifisering)
## Introduksjon
Agent-baserte AI-systemer representerer en ny kompleksitet i testing og validering sammenlignet med tradisjonelle deterministic workflows. Der en enkel LLM-applikasjon kun har én inngangspunkt og ett svar, har agenter multippel tool-calling, dynamisk reasoning, multi-turn samtaler, og ikke-deterministisk oppførsel. Microsoft tilbyr et komprehensivt evalueringsrammeverk gjennom Azure AI Evaluation SDK og Microsoft Foundry som håndterer både pre-deployment testing (batch evaluation) og post-deployment monitoring (continuous evaluation).
Evalueringsrammeverket støtter tre hovedtyper testing: **System Evaluation** (helhetsoppførsel til agenten), **Process Evaluation** (kvalitet på tool calls og reasoning steps), og **Safety Evaluation** (content safety, jailbreak-resistance, bias). Alle evaluators opererer som LLM judges (typisk GPT-4.1 eller o-series reasoning models) som gir både scores, pass/fail labels, og reasoning explanations.
Microsoft Foundry støtter både Foundry Agent Service (built-in agents), Semantic Kernel agents, og custom agents via OpenAI-style message schema. Evaluering kan kjøres lokalt på utviklermaskinen, i cloud for CI/CD-integrasjon, eller kontinuerlig i produksjon med sampling rates og Azure Monitor Application Insights-integrasjon.
## Kjernekomponenter
### Evaluator-typer
| Evaluator | Formål | Input | Score range | LLM Judge? |
|-----------|--------|-------|-------------|-----------|
| **IntentResolutionEvaluator** | Måler om agenten identifiserer brukerens intent korrekt | query, response, (tool_definitions optional) | 1-5 Likert | Ja (GPT-4.1 / o-series) |
| **TaskAdherenceEvaluator** | Sjekker om agentens svar følger system message og prior steps | query, response, (tool_calls optional) | 1-5 Likert | Ja |
| **ToolCallAccuracyEvaluator** | Validerer at agenten kaller riktige tools med riktige parameters | query, tool_definitions, (response/tool_calls) | 1-5 Likert | Ja |
| **ResponseCompletenessEvaluator** | Evaluerer om svar er komplett og dekker alle deler av query | query, response | 1-5 Likert | Ja |
| **GroundednessEvaluator** | Måler om agentsvar er forankret i tool outputs (ikke hallusinert) | query, response, tool_definitions | 1-5 Likert | Ja |
| **RelevanceEvaluator** | Sjekker om svar er relevant for query | query, response | 1-5 Likert | Ja |
| **CoherenceEvaluator** | Evaluerer logisk sammenheng i svar | query, response | 1-5 Likert | Ja |
| **FluencyEvaluator** | Måler språklig kvalitet og grammatikk | query, response | 1-5 Likert | Ja |
| **ContentSafetyEvaluator** | Detekterer harmful content (violence, hate, sexual, self-harm) | query, response | 0-7 severity | Ja (Azure AI Content Safety) |
| **IndirectAttackEvaluator** | Sjekker jailbreak attempts via indirect injection | query, response | Pass/Fail | Ja |
| **CodeVulnerabilityEvaluator** | Identifiserer usikker kode i agentsvar | response | Pass/Fail | Ja |
| **TaskCompletionEvaluator** (preview) | Måler om agenten fullførte oppgaven end-to-end med brukbar leveranse | query, response, (tool_definitions) | Pass/Fail | Ja |
| **CustomerSatisfactionEvaluator** (preview) | Predikerer brukertilfredshet over en samtale (6 dimensjoner) | messages | 1-5 Likert | Ja |
| **ToolSelectionEvaluator** | Måler om agenten valgte riktige (og kun nødvendige) tools | query, response, tool_definitions | Pass/Fail | Ja |
| **ToolInputAccuracyEvaluator** | Validerer at alle tool-parametere er korrekte (6 strenge kriterier) | query, response, tool_definitions | Pass/Fail | Ja |
| **ToolOutputUtilizationEvaluator** | Måler om agenten brukte tool-outputs riktig i svaret | query, response, tool_definitions | Pass/Fail | Ja |
| **ToolCallSuccessEvaluator** | Sjekker om tool-kall ble utført uten tekniske feil | response | Pass/Fail | Ja |
| **TaskNavigationEfficiencyEvaluator** | Sammenligner agentens steg mot optimal/forventet sti (krever ground truth) | actions, expected_actions | Pass/Fail | Nei |
> **Microsoft Agent Framework — `FoundryEvals`:** I tillegg til `AIAgentConverter` kan en `AIAgent` kobles direkte til Foundrys evalueringstjeneste via `FoundryEvals` (kjører som standard relevance/coherence/task_adherence og legger automatisk til tool_call_accuracy når tool-definisjoner finnes; resultater vises i Foundry-portalen). For kompleks evaluering anbefaler Microsoft nå en sterk reasoning-modell som `gpt-4.1-mini` som judge for balanse mellom ytelse og kostnad.
### Evaluator output format
Alle evaluators returnerer standardisert JSON:
```json
{
"{metric_name}": 4.0, // Score (1-5, 0-7, 0-1 avhengig av type)
"{metric_name}_result": "pass", // Pass/fail basert på threshold
"{metric_name}_threshold": 3, // Binarization threshold (default eller user-defined)
"{metric_name}_reason": "The agent correctly...", // LLM judge reasoning
"details": { ... } // Optional debug info (f.eks. tool call breakdown)
}
```
### Supported agent frameworks
| Framework | Converter support? | Evaluators |
|-----------|-------------------|-----------|
| **Foundry Agent Service** | Ja (`AIAgentConverter`) | Alle |
| **Semantic Kernel** | Ja (`AIAgentConverter`) | Alle |
| **Custom agents** | Nei (bruk OpenAI-style message schema) | Alle (krever manuell parsing) |
### Tool call evaluation support
`ToolCallAccuracyEvaluator` støtter disse tool-typene i Foundry Agent Service:
1. File Search
2. Azure AI Search
3. Bing Grounding
4. Bing Custom Search
5. SharePoint Grounding
6. Code Interpreter
7. Fabric Data Agent
8. OpenAPI
9. Function Tool (user-defined)
**Viktig:** Custom tools utenfor denne listen må wrappes som Function Tools for å evalueres.
## Arkitekturmønstre
### 1. Pre-deployment batch evaluation (Cloud Evaluation)
**Bruk:** Test agenten mot et større dataset før deploy (100-1000+ test cases).
**Fordeler:**
- Ingen local compute-krav (kjører i Azure)
- CI/CD-integrasjon via Azure AI Projects SDK
- Resultat logges i Foundry portal med trace-debugger
- Supports både custom evaluators og built-in
**Ulemper:**
- Koster Azure OpenAI tokens (evaluator LLM calls)
- Krever Microsoft Foundry project setup
**Eksempel (Python):**
```python
from azure.ai.evaluation import evaluate
from azure.ai.evaluation import IntentResolutionEvaluator, TaskAdherenceEvaluator
# Initialize evaluators with reasoning model for complex tasks
quality_evaluators = {
"IntentResolutionEvaluator": IntentResolutionEvaluator(
model_config=reasoning_model_config,
is_reasoning_model=True
),
"TaskAdherenceEvaluator": TaskAdherenceEvaluator(
model_config=reasoning_model_config,
is_reasoning_model=True
),
}
# Batch evaluate with converter support
converter = AIAgentConverter(project_client)
filename = "evaluation_input_data.jsonl"
converter.prepare_evaluation_data(thread_ids=[thread1_id, thread2_id], filename=filename)
response = evaluate(
data=filename,
evaluation_name="agent-qa-regression",
evaluators=quality_evaluators,
azure_ai_project=os.environ["AZURE_AI_PROJECT"]
)
print(response["metrics"]) # Averaged scores
print(response["studio_url"]) # Foundry portal link
```
### 2. Continuous evaluation (Production Monitoring)
**Bruk:** Automatisk evaluering av agent-interaksjoner i produksjon med sampling.
**Fordeler:**
- Near real-time observability i Azure Monitor
- Sampling configuration (0-100%, max 1000/hour)
- Kobles til traces for debugging
- Integration med Foundry Observability dashboard
**Ulemper:**
- Krever Application Insights oppsett
- Cost overhead (evaluator LLM calls + Application Insights storage)
- Reasoning explanations kan inneholde sensitiv data (må redact via `redact_score_properties=True`)
**Eksempel (Python):**
```python
from azure.ai.projects.models import AgentEvaluationRequest, EvaluatorIds
# Define evaluators for continuous monitoring
evaluators = {
"Relevance": {"Id": EvaluatorIds.Relevance.value},
"Fluency": {"Id": EvaluatorIds.Fluency.value},
"ContentSafety": {"Id": EvaluatorIds.ContentSafety.value}
}
# Submit continuous evaluation after each agent run
project_client.evaluation.create_agent_evaluation(
AgentEvaluationRequest(
thread=thread.id,
run=run.id,
evaluators=evaluators,
samplingConfiguration=AgentEvaluationSamplingConfiguration(
name=agent.id,
samplingPercent=100, # 100% of runs
maxRequestRate=250 # Max 250 evals/hour
),
appInsightsConnectionString=project_client.telemetry.get_application_insights_connection_string()
)
)
# Query results from Application Insights (KQL)
query = f"""
traces
| where message == "gen_ai.evaluation.result"
| where customDimensions["gen_ai.thread.run.id"] == "{run.id}"
"""
```
### 3. Local evaluation (Development Testing)
**Bruk:** Rask testing under utvikling (1-10 test cases).
**Fordeler:**
- Umiddelbar feedback loop
- Lavere cost (færre test cases)
- Ingen cloud dependency
**Ulemper:**
- Ikke skalerbar til store datasets
- Local compute-krav
- Manuelt resultat-håndtering
**Eksempel (Python):**
```python
from azure.ai.evaluation import IntentResolutionEvaluator
evaluator = IntentResolutionEvaluator(model_config)
# Evaluate single agent run
result = evaluator(
query="What is the weather in Seattle?",
response="The current weather in Seattle is Sunny, 25°C."
)
print(result["intent_resolution"]) # 5.0
print(result["intent_resolution_result"]) # "pass"
print(result["intent_resolution_reason"]) # LLM explanation
```
## Beslutningsveiledning
### Når bruke hvilken evalueringstype?
| Scenario | Anbefalt type | Evaluators | Frequency |
|----------|---------------|-----------|-----------|
| **Prototype-fase (1-10 test cases)** | Local evaluation | IntentResolution, TaskAdherence | Ad-hoc testing |
| **Pre-deployment (100+ test cases)** | Cloud batch evaluation | Alle quality + safety evaluators | Før hver release |
| **CI/CD pipeline** | Cloud batch evaluation | Subset (fast evaluators: Relevance, Coherence) | Hver PR |
| **Production monitoring** | Continuous evaluation | ContentSafety, IntentResolution, TaskAdherence | 10-50% sampling |
| **Red teaming validation** | Local + Cloud | IndirectAttack, CodeVulnerability, ContentSafety | Før initial deploy + quarterly |
### Model selection for LLM judges
| Judge model | Use case | Cost | Reasoning quality |
|-------------|----------|------|-------------------|
| **gpt-4o** | Standard evaluation (Coherence, Fluency, Relevance) | Moderat | God |
| **gpt-4.1** | Standard evaluation med bedre reasoning | Høyere | Bedre |
| **o3-mini / o-series** | Kompleks evaluation (TaskAdherence, ToolCallAccuracy) | Høyest | Best (chain-of-thought) |
**Konfigurasjon:**
```python
reasoning_model_config = {
"azure_deployment": "o3-mini",
"api_key": os.getenv("AZURE_API_KEY"),
"azure_endpoint": os.getenv("AZURE_ENDPOINT"),
"api_version": "2024-08-01-preview",
}
evaluator = TaskAdherenceEvaluator(
model_config=reasoning_model_config,
is_reasoning_model=True # Aktiverer extended thinking budget
)
```
### Vanlige feil
| Feil | Symptom | Løsning |
|------|---------|---------|
| **Missing system message** | Evaluator warning: "Cannot parse query" | Alltid inkluder system message som første melding i `query` |
| **Tool call schema mismatch** | ToolCallAccuracyEvaluator scorer lavt uten grunn | Sjekk at tool_definitions matcher faktisk tool signature |
| **Evaluator cost explosion** | Uventet høy Azure OpenAI-faktura | Reduser sampling rate i continuous eval, bruk billigere judge model (gpt-4o > o3-mini) |
| **Thread ID collision** | Feil evalueringsresultater | Bruk unique thread IDs, ikke gjenbruk threads |
| **Non-supported tool types** | ToolCallAccuracyEvaluator returnerer "pass" med "unsupported tool" reason | Wrap custom tools som Function Tools |
### Røde flagg
- **Pass rate < 60% for IntentResolution:** Agent forstår ikke user intents — revurder system message eller few-shot examples
- **ToolCallAccuracy score < 3:** Agent caller feil tools — vurder tydeligere tool descriptions eller færre tools
- **TaskAdherence score < 3:** Agent ignorerer instruksjoner — sjekk system message, eller agenten har for mange tools (tool confusion)
- **ContentSafety violations > 1%:** Agenten genererer harmful content — implementer content filters, revurder system instructions
- **GroundednessEvaluator score < 4:** Agent hallusinerer — sjekk at tool outputs brukes korrekt, vurder RAG-forbedringer
## Integrasjon med Microsoft-stakken
### Microsoft Foundry
- **Evaluation wizard (UI):** No-code batch evaluation med built-in evaluators
- **Trace debugger:** Step-by-step agent execution trace koblet til evaluation scores
- **Evaluation library:** Lagre custom evaluators som reusable assets
- **Comparison view:** Sammenlign flere evaluation runs (A/B testing)
### Foundry Agent Service
- **Auto-converter:** `AIAgentConverter` transformerer Foundry agent threads til evaluation data automatisk
- **Tool call tracking:** Built-in logging av alle tool invocations for ToolCallAccuracyEvaluator
### Azure Monitor + Application Insights
- **Continuous evaluation storage:** Alle eval results logges som traces
- **KQL queries:** Flexible querying av evaluation metrics over tid
- **Alerts:** Sett opp alerts hvis pass rate dropper under threshold
### MLflow 3 (Databricks / Cross-platform)
MLflow 3 tilbyr komprehensiv GenAI-evaluering for agenter paa tvers av plattformer:
| Feature | Beskrivelse |
|---------|-------------|
| **Built-in LLM judges** | Innebygde dommere for kvalitetsmetrikker (relevance, groundedness, safety, etc.) |
| **Custom scorers** | Definer egne kvalitetsmetrikker med Python-funksjoner |
| **Eval harness** | Test GenAI-app mot eval-datasett under utvikling; sammenlign appversjoner |
| **Conversation evaluation** | Vurder multi-turn samtalekvaltiet (completeness, user frustration, dialogue coherence) |
| **Conversation simulation** | Generer syntetiske multi-turn samtaler for testing |
| **Production monitoring** | Kjoer scorers og judges paa produksjons-traces automatisk (Beta) |
| **Review App** | Samle ekspertfeedback og bygg eval-datasett |
MLflow Tracing gir real-time trace logging gjennom hele livssyklusen. Samme judges og scorers kan brukes i baade development og produksjon — konsistent evaluering.
```python
# MLflow 3 evaluation eksempel
import mlflow
results = mlflow.genai.evaluate(
data=eval_dataset,
predict_fn=my_agent,
scorers=[mlflow.genai.scorers.groundedness(), mlflow.genai.scorers.safety()]
)
```
### Prompt Flow
- **Evaluation flows:** Custom evaluation logic som Prompt Flow (deprecated approach — bruk Azure AI Evaluation SDK i stedet)
- **Batch run evaluation:** Kjør evaluation som Prompt Flow batch run
### Semantic Kernel
- **Converter support:** `AIAgentConverter` støtter Semantic Kernel agents direkte
- **Plugin evaluation:** Evaluer Semantic Kernel plugins som tools
## Offentlig sektor (Norge)
### GDPR og databehandling
**Risiko:** Evaluators sender conversation data til Azure OpenAI judge models (kan inneholde persondata).
**Mitigering:**
- **Anonymisering:** Fjern PII fra test datasets før evaluation
- **Redaction configuration:** Bruk `redact_score_properties=True` i continuous evaluation for å hindre reasoning explanations med sensitiv data
- **Data residency:** Sørg for at judge model (Azure OpenAI deployment) er i EU-region
### Forvaltningsloven § 11a (automatiserte enkeltvedtak)
**Risiko:** Hvis agenten fatter enkeltvedtak, må evaluering dokumentere at systemet oppfyller kvalitetskrav.
**Mitigering:**
- **Batch evaluation før deploy:** Dokumentér pass rate for TaskAdherence, IntentResolution (min. 80% i kritiske use cases)
- **Continuous monitoring:** Løpende overvåking av agent performance i produksjon med alerts ved degradering
- **Human-in-the-loop:** Ved vedtak: kombiner agent-forslag med manual review, log evaluation scores i vedtakssystemet
### AI Act (High-risk AI systems)
**Risiko:** Agenter i kritiske domener (helse, politi, offentlige ytelser) klassifiseres som high-risk → krav til testing og dokumentasjon.
**Mitigering:**
- **Test dataset representativitet:** Sørg for at evaluation dataset dekker alle demografiske grupper (bias testing)
- **Adversarial testing:** Bruk `IndirectAttackEvaluator` for jailbreak testing, `ContentSafetyEvaluator` for harmful content
- **Evaluation audit trail:** Lagre alle evaluation runs i Foundry med timestamp, versioning, og results (compliance dokumentasjon)
### Schrems II
**Risiko:** Evaluation data sendes til Azure OpenAI i US-region (data transfer issue).
**Mitigering:**
- **EU-based judge models:** Deploy Azure OpenAI judge model (gpt-4.1) i EU-region (France Central, Sweden Central)
- **On-prem evaluation:** Vurder local evaluation for svært sensitive use cases (men mistet CI/CD-integrasjon)
## Kostnad og lisensiering
### Prismodell
| Komponent | Pricing model | Estimert cost (per 1000 evals) |
|-----------|---------------|--------------------------------|
| **Azure AI Evaluation SDK** | Gratis (open-source) | 0 NOK |
| **Azure OpenAI judge model (gpt-4o)** | Pay-per-token (input + output) | ~200-500 NOK (avhengig av conversation length) |
| **Azure OpenAI judge model (o3-mini)** | Pay-per-token + reasoning tokens | ~500-1200 NOK (høyere pga. extended thinking) |
| **Application Insights** | Data ingestion + retention | ~50-100 NOK/måned (1M traces) |
| **Foundry storage** | Evaluation results + traces | Inkludert i Microsoft Foundry project (ingen ekstra cost) |
### Cost optimization tips
1. **Reducer sampling rate i continuous eval:**
- Development: 10-20% sampling
- Production: 5-10% sampling (høyere for kritiske agenter)
2. **Velg billigere judge model for simple evaluators:**
- Coherence, Fluency, Relevance → gpt-4o (ikke o-series)
- TaskAdherence, ToolCallAccuracy → o3-mini (krever reasoning)
3. **Reduser conversation length i evaluation data:**
- Inkluder kun siste 3-5 turns i `query` (ikke hele thread history)
4. **Batch evaluation i stedet for continuous:**
- Pre-deployment testing: batch eval (1x før release)
- Production: sample 5-10%, ikke 100%
5. **Reuse eval datasets:**
- Lagre golden datasets i Foundry, ikke regenerer hver gang
### Lisensiering
| Komponent | Lisens | Krav |
|-----------|--------|------|
| **Azure AI Evaluation SDK** | MIT License (open-source) | Ingen |
| **Microsoft Foundry** | Inkludert i Azure subscription | Azure subscription |
| **Azure OpenAI** | Pay-as-you-go (per token) | Azure OpenAI access (申请 required) |
| **Application Insights** | Pay-as-you-go (per GB ingested) | Azure subscription |
## For arkitekten (Cosmo)
### Spørsmål å stille under arkitekturgjennomgang
1. **Evaluation strategy:**
- "Hvilken type evaluation kjører du? (local, batch, continuous)?"
- "Hvor ofte evaluerer du agenten? (per PR, pre-deploy, kontinuerlig)?"
- "Har dere golden dataset for regression testing?"
2. **Evaluator selection:**
- "Hvilke evaluators bruker du? (quality, safety, custom)?"
- "Bruker du reasoning models (o-series) som judges for komplekse evaluators?"
- "Hvordan håndterer du tool call evaluation?"
3. **Cost management:**
- "Hva er budsjettet for evaluation per måned?"
- "Har dere optimalisert sampling rate i continuous eval?"
- "Bruker dere billigere judge models for simple evaluators?"
4. **Compliance:**
- "Hvor lagres evaluation data? (EU-region?)"
- "Er PII fjernet fra test datasets?"
- "Redacts dere reasoning explanations i continuous eval?"
5. **Production monitoring:**
- "Er Application Insights satt opp for continuous eval?"
- "Har dere alerts på pass rate degradation?"
- "Hvordan debugger dere failed evaluations? (trace-kobling?)"
6. **Custom evaluators:**
- "Har dere behov for custom evaluators utover built-in?"
- "Er custom evaluators lagret i Foundry Evaluator Library?"
- "Hvordan tester dere custom evaluators selv?"
7. **Agent framework:**
- "Bruker dere Foundry Agent Service, Semantic Kernel, eller custom agents?"
- "Støtter eders agent framework AIAgentConverter?"
- "Må dere manuelt parse agent messages til OpenAI-style schema?"
8. **Safety validation:**
- "Kjører dere adversarial testing (jailbreak, indirect attack)?"
- "Er ContentSafetyEvaluator del av continuous eval?"
- "Hvordan håndterer dere evaluation av harmful content?"
### Fallgruver
| Fallgruve | Konsekvens | Unngå ved |
|-----------|-----------|-----------|
| **Ingen continuous evaluation i prod** | Agent degraderer over tid uten at du vet det | Sett opp continuous eval med 5-10% sampling + alerts |
| **Test dataset ikke representativt** | Agenten scorer høyt i test, lavt i prod | Bruk production data som test cases (anonymisert) |
| **Ignorering av reasoning explanations** | Misforstår hvorfor agenten feiler | Les `{metric}_reason` field for å forstå root cause |
| **Tool call mismatch** | ToolCallAccuracyEvaluator scorer lavt selv om agent fungerer | Sjekk at tool_definitions i evaluation matcher faktisk tool schema |
| **Cost explosion i continuous eval** | Uventet høy faktura | Start med lav sampling (10%), bruk gpt-4o i stedet for o3-mini for simple metrics |
| **Sensitive data i eval traces** | GDPR-brudd | Anonymiser test data, bruk `redact_score_properties=True` |
| **Manglende system message i query** | Evaluators kan ikke parse agent context | Alltid inkluder system message som første melding i query |
### Anbefalinger per modenhetsnivå
#### Nivå 1: Prototype (ingen prod deployment)
- **Local evaluation** med IntentResolution + TaskAdherence
- Test på 5-10 manuelt skrevne test cases
- Ingen continuous evaluation
- Judge model: gpt-4o
#### Nivå 2: Pilot (begrenset prod bruk)
- **Batch evaluation** før hver deploy (50-100 test cases)
- Continuous evaluation i prod (10% sampling, kun ContentSafety + IntentResolution)
- Application Insights oppsett
- Judge model: gpt-4.1
#### Nivå 3: Production (full prod deployment)
- **Batch evaluation** i CI/CD (200+ test cases, quality + safety evaluators)
- Continuous evaluation (5-10% sampling, alle relevante evaluators)
- Alerts på pass rate < 70%
- Trace-debugger i Foundry for failed evals
- Judge model: o3-mini for complex evaluators, gpt-4o for simple
#### Nivå 4: Mission-critical (high-risk AI system)
- **Batch evaluation** med 1000+ test cases (inkludert adversarial)
- Continuous evaluation (20-50% sampling, alle evaluators)
- Custom evaluators for domain-specific metrics
- Monthly red teaming med IndirectAttack + CodeVulnerability
- Human-in-the-loop review av failed evaluations
- Full evaluation audit trail (lagres i 5 år for AI Act compliance)
- Judge model: o3-mini + custom fine-tuned judge for kritiske metrics
## Kilder og verifisering
### Microsoft Learn (MCP-verified)
1. **Evaluate your AI agents (preview)**
https://learn.microsoft.com/en-us/azure/foundry-classic/how-to/develop/agent-evaluate-sdk?view=foundry-classic
*Confidence: Verified* — Hovedreferanse for Azure AI Evaluation SDK, evaluator types, model support
2. **Continuously evaluate your AI agents (preview)**
https://learn.microsoft.com/en-us/azure/foundry-classic/how-to/continuous-evaluation-agents?view=foundry-classic
*Confidence: Verified* — Continuous evaluation setup, sampling configuration, Application Insights integration
3. **Run evaluations in the cloud by using the Microsoft Foundry SDK**
https://learn.microsoft.com/en-us/azure/foundry/how-to/develop/cloud-evaluation?view=foundry-classic
*Confidence: Verified* — Cloud batch evaluation, CI/CD integration, dataset formats
4. **Tutorial: Idea to prototype - Build and evaluate an enterprise agent**
https://learn.microsoft.com/en-us/azure/foundry/tutorials/developer-journey-idea-to-prototype?view=foundry
*Confidence: Verified* — End-to-end tutorial med cloud evaluation, built-in evaluators
5. **Test and evaluate AI workloads on Azure (Well-Architected Framework)**
https://learn.microsoft.com/en-us/azure/well-architected/ai/test#validate-agentic-workflows
*Confidence: Verified* — Agentic workflow testing strategy, tool call validation, security testing
6. **Observability in generative AI**
https://learn.microsoft.com/en-us/azure/foundry/concepts/observability
*Confidence: Verified* — Built-in evaluators list, GenAIOps evaluation stages, simulators
7. **What are hosted agents? (Evaluate and test hosted agents)**
https://learn.microsoft.com/en-us/azure/foundry/agents/concepts/hosted-agents?view=foundry#evaluate-and-test-hosted-agents
*Confidence: Verified* — Hosted agent evaluation best practices, test dataset creation
8. **Agent evaluators**
https://learn.microsoft.com/en-us/azure/foundry/concepts/evaluation-evaluators/agent-evaluators?view=foundry
*Confidence: Verified* — Agent-specific evaluator details (Intent Resolution, Task Adherence, Tool Call Accuracy)
9. **Evaluate and monitor AI agents (MLflow 3 on Databricks)**
https://learn.microsoft.com/en-us/azure/databricks/mlflow3/genai/eval-monitor/
*Confidence: Verified* — MLflow 3 GenAI evaluation: built-in LLM judges og scorers, eval-harness for development, production monitoring (Beta), conversation evaluation (multi-turn), conversation simulation, Review App for human feedback, Genie Code for observability; integrert med MLflow Tracing paa tvers av development/test/produksjon; oppdatert 2026-04
10. **Run automated tests for agent quality and reliability (Copilot Studio)**
https://learn.microsoft.com/en-us/power-platform/release-plan/2025wave1/microsoft-copilot-studio/run-automated-tests-agent-quality-reliability
*Confidence: Verified* — Copilot Studio evaluation framework (2025 preview)
### Confidence levels per section
| Section | Confidence | Reason |
|---------|-----------|--------|
| Introduksjon | Verified | Basert på 3 MCP-kilder (agent-evaluate-sdk, observability, well-architected) |
| Kjernekomponenter | Verified | Direkte fra agent-evaluate-sdk dokumentasjon + code samples |
| Arkitekturmønstre | Verified | Fra cloud-evaluation + continuous-evaluation docs + code samples |
| Beslutningsveiledning | Baseline + Verified | Decision tables basert på best practices (well-architected) + cost models |
| Integrasjon med Microsoft-stakken | Verified | Fra Foundry, Semantic Kernel, Prompt Flow, Application Insights docs |
| Offentlig sektor (Norge) | Baseline | GDPR/AI Act vurdering basert på modellkunnskap + Azure residency facts |
| Kostnad og lisensiering | Baseline | Prisestimater basert på Azure OpenAI pricing (feb 2026) + observability costs |
| For arkitekten (Cosmo) | Baseline | Synthesized fra verified sources + praktisk erfaring |
---
**Document metadata:**
- **MCP calls:** 3 (microsoft_docs_search) + 2 (microsoft_docs_fetch) + 1 (microsoft_code_sample_search) = 6
- **Unique sources:** 10 Microsoft Learn URLs
- **Word count:** ~3200 ord
- **File size:** ~29 KB