Topic e fallback: dove il controllo resta esplicito

Un topic in Microsoft Copilot Studio non è più soltanto un dialogo agganciato a delle trigger phrase: è un blocco riusabile che l’agente può richiamare. La guida ufficiale distingue tre modi di attivarlo: gli entry point topic, attivati dall’utterance dell’utente; i topic richiamati da un Redirect partendo da un altro topic; e i topic attivati da eventi. La leva di progettazione è la granularità. Molti topic piccoli si mantengono meglio di pochi topic grandi, e le entity riducono la proliferazione: un solo topic Order con una entity FoodType al posto di tre topic quasi identici. Il vincolo di piattaforma da ricordare è che un agente è limitato a 1.000 topic.

Il Fallback è un system topic che si attiva su On Unknown Intent, cioè quando l’agente non ha confidenza sufficiente per attivare alcun topic. Non ha trigger phrase, e la variabile UnrecognizedTriggerPhrase conserva l’input non riconosciuto. Il flusso predefinito contiene un nodo Message e un nodo Redirect, con una condizione che chiede all’utente di riformulare non più di due volte; poi la conversazione viene rediretta e scatta il system topic Escalate. In Microsoft Teams un Fallback predefinito non esiste: va creato.

Scenario tipico da architetto: una compagnia assicurativa ha 900 coppie domanda/risposta a turno singolo e vuole che l’agente resti manutenibile. La documentazione suggerisce esattamente di non trasformarle in topic, ma di delegarle a un sistema esterno raggiunto con un nodo Action dentro il Fallback. La guida di conversation design aggiunge il criterio umano: non più di due domande di fallback in una sessione prima di indirizzare altrove, e almeno tre varianti di messaggio per non suonare robotici.

Standard NLU, conversational language understanding o generative AI orchestration

L’interruttore è uno solo: Generative AI > Orchestration > Yes oppure No. Con Yes un planner basato su LLM interpreta l’intento, sceglie quali tool, topic e knowledge source usare e definisce sequenza e passaggio dei dati fra i passi. Con No si ricade sulle opzioni “classic”, tutte deterministiche: NLU, NLU+, CLU.

I criteri di scelta sono espliciti. Lo standard NLU vuole 5-20 frasi brevi per topic ed entity custom RegEx o List, ma riconosce un solo intento per query e non è estendibile. NLU+ punta all’accuratezza su cataloghi grandi, usa un modello precompilato che va addestrato prima del rilascio ed è disponibile quando si gestiscono i canali voice o chat con una licenza Dynamics 365 Contact Center; su un voice agent i suoi dati di training ottimizzano anche il riconoscimento vocale. Azure Conversational Language Understanding (CLU) serve quando esiste già un modello in Azure: più lingue native ed entity extraction avanzata, al prezzo di una sottoscrizione Azure e dell’onere di tenere sincronizzati gli intent CLU con i topic. La generative AI orchestration gestisce utterance multi-intento, genera da sé le domande per gli input mancanti e produce una risposta unificata, entro limiti dichiarati: cinque messaggi per catena topic/action e 128 fra topic e action per il triggering.

Il punto non è la qualità delle risposte: è il grado di controllo. L’orchestrazione classica esegue quello che hai scritto, quella generativa decide da sé cosa chiamare e in che ordine. Per questo la guida propone tre livelli: deterministic layer per le azioni irreversibili, hybrid (intercept) layer con checkpoint umano, AI orchestrator layer per il basso rischio. Progettare significa assegnare ogni azione a uno dei tre. Due confusioni da evitare: in modalità generativa il system topic Multiple topics matched non viene usato, perché la disambiguazione la fa il planner; e mescolare orchestrazione generativa con topic che contengono un nodo generative answers produce risposte duplicate, perché l’orchestrator invoca comunque la Universal Search Tool (UST).

Agent flow: il livello deterministico dell’agente

Gli agent flow esistono proprio per quello che il planner non deve decidere: sono deterministici, stesso input e stesso output. Un agent flow è fatto da un trigger e almeno un’azione; i trigger possono essere instant, a schedule o basati su eventi, mentre le azioni si dividono in AI capabilities, Human in the loop, built-in tools e connector.

Perché un agent flow sia aggiungibile come tool servono quattro condizioni: trigger When an agent calls the flow, azione Respond to the agent, toggle Asynchronous response su Off sotto Networking, flow pubblicato e risposta entro il limite di 100 secondi. La scelta architetturale è fra tool a livello agente, che l’orchestrator può invocare direttamente, e tool a livello topic, visibile solo lì. Cambia anche il consumo: da un topic si consuma un Classic answer più le azioni del flow, in orchestrazione generativa un Autonomous action più le azioni. Convertire un cloud flow di Power Automate in agent flow è un’operazione a senso unico.

Prompt action, e che cosa verifica l’esame

Una prompt action incapsula un’istruzione in linguaggio naturale con input e output riusabili. Si aggiunge come New tool > Prompt a livello di agente, dentro un topic con Add a tool > New prompt, oppure in un agent flow con AI capabilities > Run a prompt. Nel prompt editor si scelgono chat model, temperature, knowledge da tabelle Dataverse, formattazione dell’output e input testuali o immagini. Vincolo che vale come criterio di design: un agente che ammette utenti anonimi non può usare tabelle Dataverse come knowledge source. Le prompt girano su Foundry Models, sono limitate a specifiche region e soggette a usage limit o throttling. Le istruzioni vanno tenute brevi, perché quelle troppo lunghe causano latenza e timeout, e va sempre previsto un percorso di uscita: la documentazione lo chiama “Give the agent a way out”.

L’esame non chiede dove si clicca: chiede quale leva scegli dato un vincolo. Non confondere una prompt action, che è una chiamata al modello con input e output definiti, con le agent instruction, che guidano il planner, né con un agent flow, che esegue e non ragiona. E ricorda la regola che decide se il planner sceglierà il tuo tool: “Names matter more than anything”.