Add /ultraresearch-local for structured research combining local codebase analysis with external knowledge via parallel agent swarms. Produces research briefs with triangulation, confidence ratings, and source quality assessment. New command: /ultraresearch-local with modes --quick, --local, --external, --fg. New agents: research-orchestrator (opus), docs-researcher, community-researcher, security-researcher, contrarian-researcher, gemini-bridge (all sonnet). New template: research-brief-template.md. Integration: --research flag in /ultraplan-local accepts pre-built research briefs (up to 3), enriches the interview and exploration phases. Planning orchestrator cross-references brief findings during synthesis. Design principle: Context Engineering — right information to right agent at right time. Research briefs are structured artifacts in the pipeline: ultraresearch → brief → ultraplan --research → plan → ultraexecute. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
20 KiB
Topics and Entities in Copilot Studio
Last updated: 2026-02 Status: GA Category: Copilot Extensibility & Integration
Introduksjon
Topics og entities utgjør kjernen i samtalelogikken i Copilot Studio. En topic er en diskret samtaletråd mellom bruker og agent, strukturert som en samtaleflyt med noder. Entities er AI-drevne datatyper som identifiserer og ekstraherer spesifikk informasjon fra brukerens input — som navn, datoer, beløp eller egendefinerte verdier.
Sammen muliggjør de:
- Strukturerte samtaleflyter med spørsmål, betingelser, videresendinger og handlinger
- Intelligent informasjonsinnhenting via slot filling, hvor agenten automatisk gjenkjenner og husker nøkkelinformasjon
- Kontekstavhengig logikk som tilpasser samtalebanen basert på brukerens svar og entitetsverdier
Topics kan opprettes manuelt, ved AI-assistert beskrivelse (Copilot-generering), eller fra eksisterende innhold. Entities finnes både som prebuilt-varianter (age, money, email, phone number, etc.) og egendefinerte (closed list eller regex).
Verificert: Basert på Microsoft Learn-dokumentasjon (januar 2026).
Kjernekomponenter
Topics
| Komponent | Beskrivelse | Modelltilknytning |
|---|---|---|
| Trigger phrases | Ord, fraser eller spørsmål som triggererer topic (kun i classic orchestration) | NLU-matching, krever 5-10 fraser for god trening |
| Topic description | Beskriver topicets formål (nødvendig i generative orchestration) | Brukes av GPT-modell til å velge riktig topic dynamisk |
| Conversation nodes | Byggeklosser i samtaleflyt: Message, Question, Condition, Variable management, Tool, Redirect, End | Hver node utfører en handling (sende melding, stille spørsmål, kalle flow, etc.) |
| Authoring canvas | Visuell editor med low-code-grensesnitt | Støtter drag-and-drop, betinget logikk og variabelhåndtering |
| Code editor (YAML) | Tekstbasert editor for eksport/import av topic-logikk | YAML-format, støtter kopiering og versjonering |
| Input/output parameters | Parametere som brukes ved videresending mellom topics eller i generative actions | Automatisk slot filling i generative mode |
Entities
| Type | Beskrivelse | Bruk |
|---|---|---|
| Prebuilt entities | 30+ innebygde typer: age, boolean, city, color, country, date/time, email, money, number, phone, URL, etc. | Direkte tilgjengelig via entity picker i Question-noder |
| Closed list entities | Egendefinert liste med verdier og synonymer (f.eks. "hiking" med synonymer "trekking", "mountaineering") | Best for små, oversiktlige lister med forutsigbare verdier |
| Regex entities | Mønsterbasert matching med regulære uttrykk | For strukturerte formater som ordre-ID (INC000001), lisensplater, IP-adresser |
| Smart matching | Fuzzy logic for stavefeil og semantisk utvidelse (f.eks. "softball" → "baseball") | Aktiveres per closed list entity |
| External entities | Importerte entities fra CLU (Conversational Language Understanding) med custom JSON resolutions | For avanserte NLU-scenarier med komplekse datatyper |
Sammenligning: Closed List vs. Regex
| Kriterium | Closed List | Regex |
|---|---|---|
| Format | Liste med verdier + synonymer | Mønster (f.eks. ^INC\d{6}$) |
| Best for | Produkt-kategorier, valg, steder | Strukturerte data med fast format |
| Smart matching | Støttes (aktiveres per entity) | Nei (pattern må matche eksakt) |
| Vedlikehold | Enkelt å legge til/fjerne verdier | Krever regex-kompetanse |
| Eksempel | "Hiking" med synonymer "Trekking", "Mountaineering" | Tracking ID: [A-Z]{2}\d{8} |
Arkitekturmønstre
Topic Design Patterns
1. Single-turn vs. Multi-turn Conversations
| Mønster | Beskrivelse | Eksempel |
|---|---|---|
| Single-turn | Ett spørsmål, ett svar | "Hva er åpningstidene?" → svar med link til nettside |
| Multi-turn | Flere spørsmål i sekvens, med betinget logikk | "Hvilken butikk?" → "Hvilken dato?" → viser åpningstider for valgt butikk og dato |
2. Branching Logic med Betingelser
- kind: ConditionGroup
conditions:
- condition: =Topic.State = "California" || Topic.State = "Washington"
actions:
- kind: SendMessage
message: "Shipping is free to West Coast states."
elseActions:
- kind: SendMessage
message: "Additional shipping charge of $27.50."
Arkitekturprinsipp: Bruk ConditionGroup-noder for å route samtalen basert på entity-verdier, brukerinput eller globale variabler.
3. Topic Redirect og Subtopics
- kind: RedirectToTopic
targetTopic: "StoreClosureInformation"
| Scenario | Redirect-strategi |
|---|---|
| Underemne | Redirect til subtopic, fortsett original topic etter |
| Avslutning | Redirect til system-topics (End of Conversation, Escalate, Goodbye) |
| Globale topics | System fallback-topic for ugjenkjente forespørsler |
4. Slot Filling Patterns
Pattern A: Sequential Slot Filling (tradisjonell)
Agent stiller spørsmål i rekkefølge for å samle informasjon:
- "Hvilken aktivitet?" → "hiking"
- "Hvor lenge?" → "2 timer"
- "Budsjett?" → "under $100"
Pattern B: Proactive Slot Filling (intelligent)
Bruker sier: "I want to buy hiking boots under $100 for a weekend trip"
Agent gjenkjenner automatisk:
- Activity: hiking
- Product: boots
- Budget: $100
- Duration: weekend (implisitt)
Agent hopper over allerede besvarte spørsmål.
Arkitekturvalg:
| Funksjon | Beskrivelse | Kontroll |
|---|---|---|
| Skip question (default) | Agent hopper over spørsmål hvis slot allerede er fylt | alwaysPrompt: false (YAML) |
| Ask every time | Tving spørsmål uavhengig av om slot er fylt | alwaysPrompt: true (YAML) eller via node properties |
5. Multiple Entity Recognition
En Question-node kan akseptere opptil 5 forskjellige entities:
- kind: Question
prompt: "Provide your account number or phone number"
entity:
- AccountNumber (regex)
- PhoneNumber (prebuilt)
- UnknownOption (closed list: "I don't know")
Variable type: Record med ett element per entity (f.eks. Identifier.account, Identifier.phone, Identifier.unknown).
Begrensning: Agent identifiserer kun første matchende entity i listen ved multiple matches.
Beslutningsveiledning
Når bruke Topics vs. Generative Answers
| Scenario | Anbefaling | Begrunnelse |
|---|---|---|
| Strukturert prosess (bestilling, onboarding) | Topics | Full kontroll over samtaleflyt, validering, betingelser |
| Åpne spørsmål fra kunnskapsbase | Generative Answers | AI genererer svar fra knowledge sources (websites, SharePoint, Dataverse) |
| Hybrid (prosess + fleksibilitet) | Generative Orchestration | AI velger automatisk mellom topics, tools og knowledge |
| Task automation (e-post, CRM-oppdatering) | Topics med Tools | Topic kaller Power Automate flow eller connector |
Når bruke Prebuilt vs. Custom Entities
| Kriterium | Prebuilt | Custom (Closed List) | Custom (Regex) |
|---|---|---|---|
| Datatye er standard (email, phone, date) | ✅ Ja | - | - |
| Domene-spesifikk liste (produkter, lokasjoner) | - | ✅ Ja | - |
| Fast format (ordre-ID, tracking code) | - | - | ✅ Ja |
| Trenger synonymer | Nei (innebygd) | ✅ Ja | Nei |
| Smart matching/fuzzy logic | Automatisk | Valgfritt (toggle) | Nei |
Topic Design Checklist
- Identifiser topic-formål: Informasjon, oppgavegjennomføring eller feilsøking?
- List alle scenarioer: Hvilke varianter av samtalen kan oppstå?
- Design samtaletreet: Tegn flyt på høyt nivå med betingelser og veivalg
- Minimér antall spørsmål: Bruk slot filling for å samle flere verdier fra én input
- Valider og iterer: Test med ekte brukere, les session transcripts i Analytics
Anti-patterns:
- ❌ Replikere funksjonalitet som allerede finnes på nettside/app (brukere kan gjøre dette selv)
- ❌ Bygge topics for "long tail"-scenarioer før høyvolum-issues er dekket
- ❌ Bruke periods (
.) i topic-navn (blokkerer solution export)
Integrasjon med Microsoft-stakken
Power Automate Integration
Topics kan kalle Power Automate flows via Tool-noder:
- kind: CallAction
id: call-flow-get-weather
action: GetWeatherForecast
inputs:
city: =Topic.City
zipcode: =Topic.ZipCode
output: Topic.WeatherData
Brukstilfeller:
- Send e-post med data samlet i topic
- Oppdater Dataverse-record
- Trigger external API (via HTTP action i flow)
- Hente data fra SharePoint eller SQL
Dynamics 365 og Dataverse
Topics kan referere til Dataverse-tables via:
- Generative answers fra Dataverse knowledge sources
- Power Automate flows som oppretter/leser records
- Copilot Studio connectors (Dataverse connector i Tool-node)
Eksempel: Topic som oppretter sample account records med lat/long-koordinater (se code samples i dokumentasjon).
Microsoft 365 Copilot Handoff
Topics kan videresende samtale til Microsoft 365 Copilot via continuation token:
await context.sendActivities([
{ type: ActivityTypes.Message, text: "Continuing conversation from copilot..." },
{ type: ActivityTypes.Message, text: `Fetching more details using continuation token: ${token}` },
{ type: ActivityTypes.Message, text: "Handoff successful!" }
]);
Brukstilfeller:
- Copilot Studio-agent starter samtale, M365 Copilot tar over for dype spørsmål i organisasjonens data
- Agent i Teams/M365 redirecter til Copilot Studio for strukturerte workflows
Azure Bot Service Channels
Topics kan publiseres til eksterne kanaler (SMS, Facebook, Slack) via Azure Bot Service integration:
- DirectLineClient starter Copilot Studio-samtale via DirectLine API
- OnMessageActivityAsync handler i bot-relay sender brukermelding til Copilot Studio
- Watermark tracker turntaking i samtalen
- Token refresh kreves hver 30. minutt (håndteres i relay-logikk)
Offentlig sektor (Norge)
Compliance og Datahåndtering
| Krav | Implementasjon via Topics og Entities |
|---|---|
| GDPR | Entities (email, phone, name) lagres i Dataverse med compliance-settings; variable retention via "Clear variable" node |
| Arkivloven | Topic session transcripts kan eksporteres til arkivsystem via Power Automate (Azure Blob/Sharepoint) |
| Personvern | Bruk regex entities for sensitive ID-formater (fødselsnummer, passnummer) med masking i logs |
| Tilgjengelighet (UU) | Topics støtter SSML for voice-kanaler; adaptive cards følger accessibility-standarder |
Flerspråklig Support
Topics og trigger phrases kan defineres per språk:
| Språk | Støtte | NLU-kvalitet |
|---|---|---|
| Norsk bokmål | ✅ GA | God (prebuilt entities, GPT-modell) |
| Norsk nynorsk | Delvis (via custom entities) | Moderat (krever custom training) |
| Samisk | Nei (bruk engelsk som fallback) | Ikke støttet |
Anbefalinger for norsk offentlig sektor:
- Bruk engelsk for entity-navn og variable-navn (code readability)
- Bruk norsk i trigger phrases og meldinger til brukere
- Definer custom closed list entities for norske geografiske navn, organisasjoner og termer
- Test med ekte innbyggerhenvendelser for å iterere på trigger phrases
Kostnad og lisensiering
Lisenskriterier
| Lisens | Topics-kapabilitet | Entities-kapabilitet |
|---|---|---|
| Copilot Studio (standalone) | Ubegrenset topics, 25 000 messages/måned per $200 capacity | Alle prebuilt + custom entities, external entities (NLU+) |
| Power Apps Premium | Inkludert (inntil 250 messages/bruker/måned) | Alle prebuilt + custom entities |
| Microsoft 365 Copilot | Topics via Copilot Studio extension | Entities støttes i generative orchestration |
Kostnadsoptimalisering
| Kostnadsfaktor | Påvirkning | Optimalisering |
|---|---|---|
| Antall topic-traversals | Hver gang topic redirectes eller topic kaldes, telles som én turn | Konsolider logikk i færre topics |
| Generative answers calls | GPT API calls koster mer enn statiske svar | Bruk topics for kjente scenarioer, generative answers for "long tail" |
| Tool calls (Power Automate) | Hver flow-kjøring teller mot Power Automate kvote | Batch flere handlinger i én flow |
| Session lengde | Lengre samtaler (flere turns) øker message-forbruk | Design topics for å løse brukerens behov raskt |
Estimert kostnad (norsk offentlig virksomhet, 1000 brukere):
- Basis Copilot Studio lisens: $200/måned (25 000 messages)
- Ekstra kapasitet: $100 per 10 000 messages
- Typisk forbruk: 3-5 messages per samtale (én topic med 2-3 spørsmål)
- Estimert månedlig kostnad: $200-$400 for 5000-10 000 samtaler
For arkitekten (Cosmo)
Designprinsipper for Topics
- Start med high-impact topics: Analyser support-volum og bygg topics for topp 5-10 henvendelser først.
- Bruk slot filling aggressivt: La brukere gi flere opplysninger i én setning, unngå unødvendige spørsmål.
- Design for fallback: Alltid ha fallback-logikk (system fallback topic, escalate til agent, eller generative answers).
- Test med ekte data: Bruk Analytics-transcripts for å iterere på trigger phrases og betingelser.
- Versjonskontroll topics: Eksporter topics som YAML til git for versjonering og code review.
Entity-strategi
| Scenario | Entity-valg | Rationale |
|---|---|---|
| Persondata (navn, e-post, telefon) | Prebuilt | Innebygd validering og global NLU-støtte |
| Norske stedsnavn | Custom closed list med smart matching | Fuzzy logic håndterer stavefeil ("Tronsheim" → "Trondheim") |
| Interne ordre-ID, sak-ID | Regex | Fast format (f.eks. SAK-\d{6}) garanterer korrekt parsing |
| Kategori-valg (f.eks. tjenestetype) | Custom closed list | Synlig for brukere som knapper, støtter synonymer |
Integrasjonsarkitektur
User → Copilot Studio Agent (Topic)
↓
[Question Node med Entity]
↓
[Slot Filling + Betingelser]
↓
[Tool Node → Power Automate Flow]
↓
[Dataverse / Azure / SAP / Custom API]
↓
[Svar til bruker + Redirect eller End]
Key Decisions:
- Generative vs. Classic Orchestration: Velg generative hvis brukerforespørsler er uforutsigbare; classic hvis du trenger deterministisk flyt.
- Topic granularity: En topic per brukerforspørsel (f.eks. "Book møterom") vs. flere topics per domene (f.eks. "Møterom: søk", "Møterom: bestill", "Møterom: kanseller").
- Entity scope: Globale entities (gjenbrukes på tvers av topics) vs. topic-spesifikke entities (scope-isolasjon).
Testing og Iterasjon
- Test-panel i Copilot Studio: Bruk "Track between topics" for å debugge samtaleflyt.
- Variable watch window: Inspiser entity-verdier real-time under testing.
- Analytics: Analyser "unanswered queries" og "generative answer quality" for å forbedre topics.
- A/B-testing: Lag to versjoner av samme topic med ulike trigger phrases, sammenlign CSAT-score.
Når Bruke Code Editor (YAML)
- ✅ Kopiering av topics mellom agents
- ✅ Versjonering i git (diffing, code review)
- ✅ Bulk-editing av betingelser eller meldinger
- ✅ Import av komplekse topics fra andre teams
- ❌ IKKE for å designe nye topics fra scratch (bruk GUI først, eksporter YAML etter)
Kilder og verifisering
Primærkilder (Verified)
Alle referanser er hentet fra offisiell Microsoft Learn-dokumentasjon via MCP (microsoft-learn server), januar 2026:
-
Create and edit topics https://learn.microsoft.com/en-us/microsoft-copilot-studio/authoring-create-edit-topics Comprehensive guide til topic authoring, node types, code editor (YAML), input/output parameters.
-
Use entities and slot filling in agents https://learn.microsoft.com/en-us/microsoft-copilot-studio/advanced-entities-slot-filling Detaljer om prebuilt entities, custom entities (closed list, regex), slot filling, proactive slot filling, multiple entity recognition.
-
Topics in Copilot Studio (Guidance) https://learn.microsoft.com/en-us/microsoft-copilot-studio/guidance/topics-overview Overview av topic-konseptet, trigger phrases, conversation nodes, AI-generering.
-
Defining agent topics (Guidance) https://learn.microsoft.com/en-us/microsoft-copilot-studio/guidance/defining-chatbot-topics Topic design process, single-turn vs. multi-turn, best practices.
-
Variables overview (Entities table) https://learn.microsoft.com/en-us/microsoft-copilot-studio/authoring-variables-about Fullstendig tabell over prebuilt entities og variable base types.
-
Implement slot-filling best practices (Guidance) https://learn.microsoft.com/en-us/microsoft-copilot-studio/guidance/slot-filling-best-practices Best practices for entity-bruk, closed list vs. regex, user experience-forbedringer.
-
Training: Manage topics in Microsoft Copilot Studio https://learn.microsoft.com/en-us/training/modules/manage-power-virtual-agents-topics/ Strukturert læringssti for topic management, branching, fallback topics.
-
Training: Work with entities and variables https://learn.microsoft.com/en-us/training/modules/power-virtual-agents-entities/ Praktisk trening i entity-bruk og variable-håndtering.
Code Samples (Verified)
YAML-eksempler hentet fra Microsoft Learn code samples:
-
AdaptiveDialog topic med conditional logic og entities https://learn.microsoft.com/en-us/microsoft-copilot-studio/authoring-create-edit-topics#edit-a-topic YAML-eksempel med Question nodes, ConditionGroup, StatePrebuiltEntity, BooleanPrebuiltEntity.
-
Power Automate integration i topic https://learn.microsoft.com/en-us/microsoft-copilot-studio/advanced-use-flow Eksempel på Tool node som kaller flow med inputs/outputs.
-
Azure Bot Service DirectLineClient integration https://learn.microsoft.com/en-us/microsoft-copilot-studio/publication-connect-bot-to-azure-bot-service-channels C#-eksempel på session management, conversation routing.
-
Dynamics 365 account creation via topic https://learn.microsoft.com/en-us/dynamics365/guidance/resources/field-service-deploy-copilot-studio-create-sample-data YAML-eksempel med SearchAndSummarizeContent node, Question nodes for lat/long, ConditionGroup.
Baseline (modellkunnskap)
Følgende informasjon er basert på modellens treningsdata (januar 2025) og bekreftet mot Microsoft Learn januar 2026:
- Generative orchestration vs. classic orchestration
- Topic lifecycle (draft, published, deprecated)
- Topic vs. Generative Answers use cases
- Entity types og variable base types
- Power Fx expressions i betingelser
Confidence Rating
| Seksjon | Confidence | Kilde |
|---|---|---|
| Kjernekomponenter | Verified | Microsoft Learn (fetch + search) |
| Arkitekturmønstre | Verified | Microsoft Learn + code samples |
| Beslutningsveiledning | Baseline | Modellkunnskap, bekreftet mot docs |
| Microsoft-integrasjon | Verified | Microsoft Learn (code samples) |
| Offentlig sektor (Norge) | Baseline | Modell-ekstrapolasjon basert på general GDPR/compliance-kunnskap |
| Kostnad og lisensiering | Baseline | Modellkunnskap (januar 2025), kan ha endret seg i 2026 |
Sist verifisert: 2026-02-04 (via MCP microsoft-learn server)
For Cosmo:
Når du rådgir om topics og entities, vurder:
- Topic granularity: Hvor mange topics trenger løsningen? (Tommelfingerregel: 1 topic per høynivå-brukerforspørsel)
- Entity-strategi: Hvilke entities er kritiske for slot filling? Prebuilt vs. custom?
- Orchestration mode: Classic (deterministisk) vs. Generative (fleksibel)?
- Integration points: Trenger topics å kalle Power Automate, Dataverse, eller eksterne APIer?
- Fallback-strategi: Hva skjer ved ugjenkjente forespørsler? (Generative answers, escalate, eller redirect?)
Bruk dette dokumentet som referanse når du designer samtaleflyt, evaluerer entity-behov, og planlegger integrasjoner.