ms-ai-architect/skills/ms-ai-advisor/references/copilot-extensibility/copilot-orchestration-multi-agent.md
Kjell Tore Guttormsen 3a73eeafdc refactor(ms-ai-architect): R13 del 1 — nøytraliser Cosmo-personaen i ref-korpusets headinger, etter å ha rettet en gate som var målt usann to ganger
Ordre 20260912T193441Z-7358817909. Steg 1 var ikke transformen, men å rette
roadmapens R13-gate og få den ratifisert. Gaten `grep -rl "Cosmo"
skills/*/references -> 0` var usann på to uavhengige måter:

1. Ordren fanget den første: 451 av forekomstene er Azure Cosmos DB, ekte
   produktinnhold. Diskriminatoren er ikke bokstaven «s» — `Cosmos <norsk
   substantiv>` er genitiv av personaen (`### Cosmos tonalitet`), mens
   `Cosmos DB`/`CosmosClient`/`cosmos_ru` er produkt.
2. Denne økten fant den andre: 132 persona-forekomster ligger i prosa,
   tabeller, dialog-replikker og proveniens-linjer. Heading-nøytralisering
   kan ikke nå dem, så «0 persona» er uoppnåelig også under den ratifiserte
   formen. Operatøren ratifiserte alternativ A: gaten speiler formen, og de
   132 bokføres til R13b/R14.

Tre korreksjoner av premisser som sto i ordren og STATE:
  «ca 320 produkt»   -> 451 (case-sensitivt nett manglet 327 lowercase
                        TOC-ankre + 99 identifikatorer; sann nevner 1 638)
  «169 headinger»    -> 401. 169 var `^## For Cosmo`-prefikset (168) og var
                        internt inkonsistent med sin egen topp-variant (204)
  «417 matcher ingen
   populasjon»       -> 417 er cosmo-headinger utenfor kodefences; briefens
                        nevner var reell hele tiden

Fence-bevissthet er målt skadelig, ikke nødvendig: begge toggle-regler er
gale på dette korpuset (naiv toggle skjuler en ekte heading i
chain-of-thought-prompting.md, CommonMark-regelen ubalanserer
service-level-documentation-dr.md). Fence-agnostisk deteksjon finner 401
heading-linjer i nøyaktig de samme 40 variantene som fence-bevisst finner
400 i — ingen kodeblokk-linje er byte-identisk til en persona-heading. Derfor
nøkles transformen på 40 enumererte heading-tekster og ignorerer fences. En
ukjent variant kaster; en slug-kollisjon kaster. Ingenting auto-fikses.

TOC-en regenereres ikke, den rettes kirurgisk: alle 327 persona-lenker hadde
lenketekst lik én av de 40 heading-tekstene og anker lik slugify av den
(327/327, 0 avvik), så heading og TOC-entry skrives i samme operasjon og
ingen mellomtilstand etterlater en død lenke.

Ratifisert målform: `For Cosmo`, `For Cosmo Skyberg` og `For arkitekten
(Cosmo)` konvergerer på `For arkitekten`. To filer kolliderte og er adjudisert
ved å lese dem, ikke ved regel.

Verifisering (alle 7 kriterier fra ordren):
  G1 persona på heading-linjer   401 -> 0
  G2 døde fragmentlenker         1 -> 1 (pre-eksisterende, unntatt)
  G3 produkt-forekomster         451 -> 451; `Cosmos DB|Azure Cosmos` 308 = 308
  de 3 kun-produkt-filene        byte-identiske
  nettet validert begge veier    injisert persona feller G1; genitiv feller G1;
                                 produkt-heading og de 3 filene passerer
  hele diffen                    802 heading-linjer + 654 TOC-linjer, ANNET = 0
  linjeantall                    728 lagt til = 728 slettet
  suite                          1120/1120 (1097 + 23 nye)
  validate-plugin                250 PASS / 0 FAIL
  stikkprøve                     10 filer, alle 5 skills, inkl. de 3 mest
                                 produkt-tunge (26/20/19) — kun heading+TOC

Utenfor scope, urørt: de 4 SKILL.md, de 23 commands, CLAUDE.md, README.md,
NOTICE.md, docs/ (alt R14).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-12 22:12:28 +02:00

466 lines
19 KiB
Markdown

# Multi-Agent Orchestration in Copilot
**Last updated:** 2026-06-19
**Status:** Generally Available (GA)
**Category:** Copilot Extensibility & Integration
---
## Introduksjon
Multi-agent orchestration i Microsoft-økosystemet handler om å bygge komplekse AI-systemer ved å komponere flere spesialiserte agenter som samarbeider for å løse brukeroppgaver. Denne tilnærmingen erstatter monolittiske chatbots med modulære, skalerbare arkitekturer hvor hver agent har sitt eget domene, verktøy og kunnskapskilder.
Microsofts tilnærming til multi-agent orchestration støttes på tvers av tre hovedplattformer: **Copilot Studio** (low-code), **Microsoft Agent Framework** (pro-code), og **Microsoft 365 Copilot** (enterprise integration). Alle bruker generative orchestration powered by large language models for å automatisk koble sammen agenter, topics, tools og knowledge sources uten å kreve forhåndsdefinerte trigger phrases.
Multi-agent systemer gir fordeler som bedre modularity, domene-separasjon, enklere vedlikehold, og mulighet til å gjenbruke spesialiserte agenter på tvers av flere hovedagenter. De muliggjør også granulær governance og access control per agent, noe som er kritisk for enterprise-scenarier.
## Kjernekomponenter
### Agent-typer i Copilot Studio
| Type | Beskrivelse | Context Sharing | Brukstilfeller |
|------|-------------|-----------------|----------------|
| **Inline agents** (child agents) | Små, gjenbrukbare workflows innenfor samme agent. Ofte implementert som topics. | Deler context med hovedagent | Enkle sub-tasks, hjelpefunksjoner (f.eks. tekstoversettelse) |
| **Connected agents** | Separate agenter med egen orchestration, tools og knowledge | Konversasjonshistorikk sendes automatisk (kan deaktiveres) | Komplekse domener, ulike tilgangskontroller, gjenbruk på tvers av hovedagenter |
### Generative Orchestration (Copilot Studio)
Når generative orchestration er aktivert, bruker agenten store språkmodeller til å:
1. **Automatisk velge ressurser**: Identifiserer hvilke topics, tools, agenter og knowledge sources som skal brukes basert på beskrivelser (ikke trigger phrases)
2. **Multi-intent håndtering**: Kan håndtere forespørsler med flere intensjoner i én user message
3. **Automatisk parameter-utfylling**: Ekstraher kontekst fra samtalen for å fylle inn manglende input-parametere
4. **Chaining**: Kaller flere agenter/tools i sekvens og sammenstiller svar automatisk
**Nøkkelfaktorer for agent-seleksjon:**
- Description (viktigst)
- Navn på agent/topic/tool
- Input/output parametere og deres beskrivelser
**Avanserte kontrollmuligheter (generativ modus):**
- **Avbryte plan**: Bruk **"End all topics"**-node i et topic for å kansellere gjenværende steg i orchestratorens plan
- **Samtalehistorikk**: Agenter bruker nylig samtalehistorikk som kontekst. For å nullstille: bruk **"Clear variable values"**-node med alternativet "Conversation history for the current session"
- **Topic-triggere**: `AI response generated` (agenten genererer svar) og `Plan complete` (alle planlagte steg utført) gir finkornet kontroll
### Agent-komponenter (Microsoft Agent Framework)
For pro-code utvikling tilbyr Agent Framework:
| Komponent | Beskrivelse |
|-----------|-------------|
| **HandoffBuilder** | Bygger workflows hvor agenter kan overføre samtaler til hverandre med eksplisitte routing rules |
| **GroupChatBuilder** | Koordinerer multi-agent samarbeid gjennom group chat med orchestrator-agent |
| **ConcurrentBuilder** | Kjører flere agenter parallelt (fan-out/fan-in pattern) |
| **SequentialPipeline** | Chain av agenter som kjører i sekvens |
### Agent Connectivity (Copilot Studio)
Copilot Studio støtter forbindelse til eksterne agenter via:
- Copilot Studio agents (samme environment)
- Microsoft Foundry agents
- Microsoft Fabric Data agents
- Microsoft 365 Agents SDK agents
- Agent2Agent (A2A) protocol (cross-platform)
## Arkitekturmønstre
### Mønster 1: Triage + Specialist (Handoff)
**Beskrivelse:** En hovedagent (triage) router brukerforespørsler til spesialiserte agenter basert på domene.
```
User → Triage Agent → [Math Tutor | History Tutor | Billing Agent]
(kan returnere til Triage)
```
**Fordeler:**
- Tydelig domene-separasjon
- Spesialistene kan ha egne verktøy og kunnskapskilder
- Enklere å vedlikeholde og teste hver spesialist
**Ulemper:**
- Overhead ved context switching
- Krever nøye beskrivelser for at triage kan route korrekt
- Lengre responstid sammenlignet med inline-løsning
**Når bruke:**
- Subtasken er kompleks nok til å ha egen suite av tools/knowledge
- Krever ulike governance rules eller tilgangskontroller
- Agenten skal gjenbrukes i mange hovedagenter
**Copilot Studio implementering:**
```yaml
# Parent agent configuration
- Add connected agent: "Billing Specialist"
Description: "Handles all billing inquiries including invoices,
payments, refunds, and subscription management."
Pass conversation history: Yes
```
### Mønster 2: Concurrent Fan-Out/Fan-In
**Beskrivelse:** Flere agenter kjører parallelt på samme input, resultatene aggregeres.
```
User Input → [Researcher | Marketer | Legal Reviewer] → Aggregation → Output
```
**Fordeler:**
- Raskere responstid (parallell prosessering)
- Hver agent gir sitt perspektiv på samme data
- Godt egnet for review-workflows
**Ulemper:**
- Kompleksitet i aggregering av resultater
- Alle agenter må kunne jobbe med samme input
- Ressurskrevende (flere LLM-kall samtidig)
**Når bruke:**
- Content review fra ulike perspektiver (legal, marketing, technical)
- Multi-language translation
- Data analysis fra ulike vinkler
**Microsoft Agent Framework (Python):**
```python
from agent_framework import ConcurrentBuilder
workflow = ConcurrentBuilder().participants([
researcher,
marketer,
legal_reviewer
]).build()
result = await workflow.run("Analyze this product launch plan")
```
### Mønster 3: Sequential Pipeline
**Beskrivelse:** Agenter kjører i sekvens, hvor output fra én agent blir input til neste.
```
User → Research Agent → Writer Agent → Review Agent → Final Output
```
**Fordeler:**
- Strukturert, forutsigbar flyt
- Enkel debugging (kan inspisere output mellom steg)
- Hver agent bygger på forrige agents arbeid
**Ulemper:**
- Lengre total responstid
- Feil tidlig i pipeline kan spre seg nedover
- Vanskeligere å håndtere branching logic
**Når bruke:**
- Content creation pipelines
- Data processing med validering mellom steg
- Multi-stage approval workflows
**Microsoft Agent Framework (C#):**
```csharp
var workflow = AgentWorkflowBuilder
.CreateSequentialPipeline(researchAgent, writerAgent, reviewerAgent)
.Build();
var result = await workflow.RunAsync("Write an article about AI safety");
```
## Beslutningsveiledning
### Når skal du splitte til separate agenter?
| Kriterium | Inline (topic) | Connected Agent |
|-----------|----------------|-----------------|
| Kompleksitet | Enkel sub-task | Egen suite av tools/knowledge |
| Governance | Same tilgangskontroller | Ulike access controls |
| Gjenbruk | Brukes kun av én hovedagent | Gjenbrukes i mange hovedagenter |
| Domene | Del av samme domene | Forskjellig domene |
| Vedlikehold | Kan vedlikeholdes inline | Krever separat lifecycle |
**Tommelfingerregel:** Start med én agent og topics. Splitt kun når du ser et klart behov for modularity eller governance-grense.
### Vanlige feil
| Feil | Konsekvens | Løsning |
|------|-----------|---------|
| **Over-segmentering** | Mange små agenter gir overhead | Konsolider agenter som ikke har tydelig governance/domene-grense |
| **Vage beskrivelser** | Orchestrator velger feil agent | Skriv spesifikke, unike beskrivelser med nøkkelord |
| **Manglende data handoff-planlegging** | Connected agent mangler kontekst | Definer eksplisitt hvilke parametere som skal sendes |
| **Glemt audit logging** | Vanskelig å tracke hva connected agents gjør | Korreler parent/child sessions via telemetri identifiers |
| **Overlappende agent-beskrivelser** | Orchestrator kaller flere agenter unødvendig | Test grundig og revider overlappende beskrivelser |
### Røde flagg
⚠️ **Security:** Connected agent har tilgang hovedagent ikke har (f.eks. slette records) → Krev eksplisitt user consent eller approval workflow
⚠️ **Context limit:** Konversasjonshistorikk er begrenset → Viktig informasjon må inkluderes i transcript ved jevne intervaller
⚠️ **Disambiguation:** Med generative orchestration disambigueres ikke automatisk mellom lignende topics → Test grundig eller deaktiver "Multiple Topics Matched" system topic
⚠️ **Custom entities:** Tools/topics støtter ikke custom entities (closed lists, regex) som input → Bruk Question node i topic
## Integrasjon med Microsoft-stakken
### Copilot Studio ↔ Microsoft 365 Copilot
**Scenario:** Utvid M365 Copilot med organisasjonens egne agenter.
- Agenter bygget i Copilot Studio kan publiseres som **declarative agents** i M365 Copilot
- M365 Copilot bruker sin egen orchestrator, men agent kan ha egne instructions, knowledge og actions
- Governance håndteres via **Microsoft 365 admin center** (enable/disable/assign/block agents) under **Agents**-seksjonen i Copilot Control System
- Agent pinning: Microsoft-pinned, admin-pinned, user-pinned
- **AI Admin**-rollen gir dedikert, lavprivilegert administratortilgang for agent-styring (anbefalt fremfor Global Admin)
**Agent-typer som kan administreres (Verified):**
- **Publisert av org**: Predefinerte instruksjoner og actions — må gjennom admin approval
- **Delt av bruker**: Opprettet via Copilot Studio eller Agent Builder
- **Microsoft-agenter**: Innebygd i M365-tjenester (Researcher, Analyst etc.)
- **Eksterne partner-agenter**: Fra ISV-er
- **Frontier agents** (eksperimentelle):
- **App Builder agent**: Kan bygge Power Apps via Copilot
- **Workflows agent**: Lager flows i Copilot — lagres i default environment
**Microsoft Agent 365** er den nye kontrollplanen for alle AI-agenter (uavhengig av hvor de er bygd), tilgjengelig via M365 admin center.
**Nøkkel-policy:**
- Agents arver M365 Copilots security, privacy og compliance
- Data forblir innenfor Microsoft 365 service boundary
- Conditional Access og MFA via Microsoft Entra ID
### Agent Framework ↔ Semantic Kernel
**Integrasjon:**
- Agent Framework agents kan wrappas som Semantic Kernel plugins
- Workflows kan konverteres til `AIAgent` med `.AsAgent()` extension method
- Semantic Kernel kan orkestrere Agent Framework workflows via `CopilotStudioAgent` client
**Use case:**
```python
from semantic_kernel.agents import CopilotStudioAgent
agent = CopilotStudioAgent(
client=client,
name="CustomAgent",
instructions="You help answer custom questions."
)
```
### Power Platform Integration
- **Agent flows** (Copilot Studio) vs. **cloud flows** (Power Automate):
- Agent flows: Optimalisert for business processes, AI-driven automation
- Cloud flows: Generelle automation-scenarier, kan kombineres med agent flows
- **Connectors:** Agent flows kan bruke Power Automate connector library
- **Environment governance:** DLP, role-based access, auditing på environment-nivå
### Foundry Agents
Connected agents kan koble til Microsoft Foundry agents, som gir:
- Custom language models
- Advanced RAG capabilities
- Prompt flow orchestration
## Offentlig sektor (Norge)
### GDPR & Datasuverenitet
**Vurderingspunkter:**
- **Data residency:** Hvor lagres agent-konversasjoner? (Microsoft 365 tenant-region)
- **Cross-border data transfer:** Connected agents på tvers av environments → sjekk at begge er i EU-region
- **Treatyansvar:** Definer data processing agreements for hver connected agent som håndterer persondata
**Praksis:**
- Dokumenter dataflyt mellom agenter i DPIA
- Bruk Microsoft Purview for å oppdage, beskytte og governe data i agent-interaksjoner
- Aktiver audit logging for alle connected agent-kall
### AI Act & Transparency
**Krav:**
- Brukere skal informeres om at de interagerer med AI
- Brukere skal forstå når én agent delegerer til en annen
**Implementering i Copilot Studio:**
```yaml
# Conversation Start system topic
- Message: "Hei! Jeg er en AI-assistent som kan koble deg til
spesialiserte agenter for fakturering, teknisk support
og ordrehåndtering."
```
**Audit:**
- Log alle agent handoffs med timestamps og user consent
- Separate transcripts per connected agent (korreler via session ID)
### Forvaltningsloven § 11 (veiledningsplikt)
**Relevans:** Offentlige virksomheter har plikt til å veilede brukere.
**Multi-agent implementering:**
- **Triage agent:** Hjelper bruker å finne riktig spesialist-agent
- **Fallback til human:** Hvis ingen agent kan hjelpe, eskaler til saksbehandler
- **Transparent routing:** Vis bruker hvilken agent de snakker med
**Eksempel:**
```
Triage: "Jeg ser du har spørsmål om barnetrygd.
Jeg kobler deg til vår spesialist for dette. [Barnetrygd-agent aktiveres]"
```
## Kostnad og lisensiering
### Kostnadsmodeller
| Plattform | Prismodell | Kostnadsdrivere |
|-----------|-----------|-----------------|
| **Copilot Studio** | Consumption-based (messages) | Antall meldinger, generative actions |
| **M365 Copilot** | Per-user license | M365 Copilot license (ca. $30/user/month) |
| **Agent Framework** | Azure consumption | Azure OpenAI API calls, Azure Functions runtime |
### Multi-agent kostnadshensyn
**Connected agents øker kostnad:**
- Hver agent-call = separate LLM-kall
- Konversasjonshistorikk sendes ved hver handoff (større context window)
- Parallelle agenter (concurrent) = multiple LLM-kall samtidig
**Optimaliseringsstrategier:**
1. **Deaktiver conversation history** når connected agent ikke trenger det:
```
Pass conversation history: No
```
2. **Bruk inline agents** (topics) for enkle sub-tasks → ingen ekstra LLM-kall
3. **Limit autonomous turns** (Agent Framework):
```python
.with_autonomous_mode(
agents=[triage_agent],
turn_limits={triage_agent.name: 3}
)
```
4. **Cache knowledge sources** → redusert re-indexing cost
5. **Monitor telemetry** → identifiser agenter som kalles unødvendig
### Lisenskrav (M365 Copilot agents)
| Funksjon | Lisenskrav |
|----------|-----------|
| Bruke M365 Copilot med agenter | M365 Copilot license |
| Bygge declarative agents | Copilot Studio eller Teams Toolkit (dev) |
| Administrere agents | M365 admin (gratis med tenant) |
| Custom engine agents | Azure subscription for hosting |
## For arkitekten
### Spørsmål å stille kunden
1. **Domene-separasjon:**
- Hvilke forretningsdomener skal agenten dekke? (f.eks. HR, IT, salg)
- Har disse domenene ulike datakilder eller tilgangskontroller?
2. **Gjenbruk:**
- Skal noen av disse funksjonene brukes av flere hovedagenter?
- Planlegger dere flere agent-prosjekter fremover?
3. **Governance:**
- Trenger ulike deler av systemet ulike godkjenningsprosesser?
- Har dere behov for separate audit logs per domene?
4. **Performance:**
- Hva er akseptabel responstid? (sequential vs. concurrent)
- Hvor kritisk er kostnadskontroll? (inline vs. connected)
5. **Brukeropplevelse:**
- Skal brukere informeres når de "flyttes" til en annen agent?
- Trenger dere transparent routing for compliance?
6. **Lifecycle:**
- Hvem eier vedlikehold av ulike agenter? (samme team vs. separate teams)
- Har dere etablert CI/CD for agent deployment?
7. **Security:**
- Skal connected agents ha høyere privilegier enn hovedagent?
- Kreves user consent før sensitive operasjoner?
8. **Datahåndtering:**
- Hvor sensitiv er konteksten som sendes mellom agenter?
- Må dere logge eller anonymisere data ved agent handoffs?
### Fallgruber å unngå
| Fallgruve | Impact | Forebygging |
|-----------|--------|------------|
| **Premature decomposition** | Overhead uten gevinst | Start med én agent, splitt når behov oppstår |
| **Poor description quality** | Feil agent-seleksjon | Bruk nøkkelord, spesifiser hva agent *ikke* gjør |
| **Security bypass via handoff** | Uautoriserte operasjoner | Audit alle connected agent-kall, krev consent for sensitive actions |
| **Context loss** | Connected agent mangler info | Test conversation history handoff, vurder explicit parameter passing |
| **Insufficient testing** | Orchestrator kaller feil agenter | Test med realistiske multi-intent queries |
| **No correlation in telemetry** | Vanskelig debugging | Korreler parent/child sessions med identifiers |
### Anbefalinger per modenhetsnivå
#### Nivå 1: Starter (proof-of-concept)
- **Bruk:** Inline agents (topics) kun
- **Plattform:** Copilot Studio low-code
- **Fokus:** Lær generative orchestration med topics først
- **Unngå:** Connected agents (for tidlig kompleksitet)
#### Nivå 2: Voksende (pilot i produksjon)
- **Bruk:** 1-2 connected agents for tydelige domener
- **Plattform:** Copilot Studio + Power Automate
- **Fokus:** Etabler governance for agent handoffs, audit logging
- **Best practice:** Dokumenter beskrivelser i versjonskontroll
#### Nivå 3: Moden (enterprise-scale)
- **Bruk:** Multi-agent arkitektur med triage + spesialist-agenter
- **Plattform:** Agent Framework (pro-code) + Microsoft Foundry
- **Fokus:** CI/CD for agents, telemetri-korrelering, cost optimization
- **Advanced patterns:** Concurrent workflows, approval workflows, A2A protocol for cross-platform
#### Nivå 4: Innovativ (cutting-edge)
- **Bruk:** Autonomous multi-agent systems med self-coordination
- **Plattform:** Agent Framework + custom orchestrators
- **Fokus:** Agent-to-agent protocols, dynamic agent composition
- **Research:** Agent swarms, emergent collaboration
## Kilder og verifisering
### Microsoft Learn URLs (MCP-verifisert)
1. **Multi-agent patterns:**
https://learn.microsoft.com/en-us/microsoft-copilot-studio/guidance/multi-agent-patterns
(Verified: 2026-06-19)
2. **Generative orchestration:**
https://learn.microsoft.com/en-us/microsoft-copilot-studio/advanced-generative-actions
(Verified: 2026-04)
3. **Agents for M365 Copilot:**
https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/agents-overview
(Verified: 2026-04)
4. **Agent Framework Handoff:**
https://learn.microsoft.com/en-us/agent-framework/user-guide/workflows/orchestrations/handoff
(Verified: 2026-04)
5. **Agent governance (M365 admin):**
https://learn.microsoft.com/en-us/microsoft-365/admin/manage/manage-copilot-agents-integrated-apps
(Verified: 2026-06-19)
6. **Agent security & compliance:**
https://learn.microsoft.com/en-us/copilot/microsoft-365/agent-essentials/agent-essentials-overview
(Verified: 2026-04)
### Konfidensnivå per seksjon
| Seksjon | Konfidens | Kilde |
|---------|-----------|-------|
| Kjernekomponenter | **Verified** | MCP: microsoft_docs_fetch (multi-agent-patterns, generative-actions) |
| Arkitekturmønstre | **Verified** | MCP: microsoft_code_sample_search (handoff, concurrent patterns) |
| Integrasjon M365 | **Verified** | MCP: microsoft_docs_search (agents-overview, admin-guide) |
| Kostnad | **Baseline** | Modellkunnskap (prismodeller kan endre seg) |
| Offentlig sektor (Norge) | **Baseline** | Generell compliance-kunnskap (verifiser lokale regler) |
| Best practices | **Verified** | MCP: microsoft_docs_fetch (multi-agent-patterns guidance) |
**Anbefaling:** For produksjonsbeslutninger, verifiser alltid kostnad og compliance mot siste Microsoft-dokumentasjon og lokale juridiske rådgivere.