Libreria di dialoghi
SI APPLICA A: SDK v4
Dialoghi sono un concetto centrale nell'SDK, fornendo modi per gestire una conversazione a lungo termine con l'utente. Una finestra di dialogo esegue un'attività che può rappresentare una parte o una conversazione completa. Può estendersi su un solo turno o molti e può durare un breve o lungo periodo di tempo.
Questo articolo descrive le classi e le funzionalità di base della libreria di dialoghi.
- È necessario avere familiarità con come funzionano i bot (inclusi che cos'è un turno) e la gestione dello stato.
- Ogni dialogo rappresenta un'attività di conversazione che può essere eseguita fino al completamento e restituire informazioni raccolte.
- Ogni dialogo rappresenta un'unità di base del flusso di controllo: può iniziare, continuare e terminare; pausa e ripresa; o essere annullata.
- I dialoghi sono simili a un metodo o a una funzione in un linguaggio di programmazione. È possibile passare argomenti o parametri all'avvio di una finestra di dialogo e successivamente la finestra può restituire un valore al termine.
Suggerimento
Se non avete familiarità con lo sviluppo di bot con Bot Framework o state creando una nuova esperienza conversazionale, iniziate con Bot Framework Composer. Per i bot esistenti SDK-first, non creati in Composer, è consigliabile esporre il bot come skill e usare Composer per lo sviluppo di bot futuri.
Stato del dialogo
I dialoghi possono implementare una conversazione a più turni e, di conseguenza, si basano su stato persistente tra turni. Senza uno stato nei dialoghi, il tuo bot non saprebbe dove si trovi nella conversazione o quali informazioni abbia già raccolto.
Per mantenere la posizione di un dialogo nella conversazione, è necessario recuperare e salvare lo stato del dialogo in memoria a ogni turno. Questa operazione viene gestita tramite una funzione di accesso alle proprietà dello stato del dialogo definita nello stato della conversazione del bot. Questo stato del dialogo gestisce le informazioni per tutti i dialoghi attivi e gli elementi figli dei dialoghi attivi. In questo modo il bot può riprendere da dove era stato interrotto l'ultima volta e gestire diversi modelli di conversazione.
Al momento dell'esecuzione, la proprietà dello stato del dialogo include informazioni su dove si trova il dialogo nel suo processo logico, incluse le informazioni raccolte internamente sotto forma di oggetto istanza del dialogo . Anche in questo caso, questo deve essere letto nel bot e salvato in memoria a ogni turno.
Infrastruttura di dialogo
Insieme a vari tipi di dialoghi, le classi seguenti sono coinvolte nella progettazione e nel controllo delle conversazioni. Anche se in genere non è necessario interagire direttamente con queste classi, essere consapevoli di essi e il loro scopo è utile quando si progettano dialoghi per un bot.
Classe | Descrizione |
---|---|
set di finestre di dialogo | Definisce una raccolta di dialoghi che possono fare riferimento tra loro e lavorare in sinergia. |
Contesto del dialogo | Contiene informazioni su tutti i dialoghi attivi. |
istanza di dialogo | Contiene informazioni su un dialogo attivo. |
Risultato del turno di dialogo | Contiene informazioni sullo stato da una finestra di dialogo attiva o attiva di recente. Quando la finestra di dialogo attiva è terminata, contiene il valore restituito. |
Tipi di dialogo
La libreria dialogs fornisce alcuni tipi di dialoghi per semplificare la gestione delle conversazioni del bot. Alcuni di questi tipi sono descritti in modo più dettagliato più avanti in questo articolo.
Digitare | Descrizione |
---|---|
dialogo | Classe di base per tutti i dialoghi. |
finestra di dialogo contenitore | Classe di base per tutti i dialoghi contenitore , come dialoghi di componenti e adattivi. Mantiene un set di dialoghi interno e consente di trattare una raccolta di dialoghi come un'unità. |
finestra di dialogo componente | Tipo generico di finestra di dialogo contenitore che incapsula un set di dialoghi, consentendo il riutilizzo del set nel suo complesso. Quando un dialogo componente viene avviato, inizia con un dialogo designato all'interno della propria raccolta. Al termine del processo interno, il dialogo del componente termina. |
Finestra di dialogo a cascata | Definisce una sequenza di passaggi, consentendo al bot di guidare un utente attraverso un processo lineare. Questi sono in genere progettati per funzionare all'interno del contesto di un dialogo componente. |
finestre di dialogo di richiesta | Chiedere all'utente l'input e restituire il risultato. Il prompt verrà ripetuto finché non riceve un input valido o viene annullato. Sono progettati per lavorare con dialoghi a cascata. |
finestra di dialogo adattiva | Tipo di finestra di dialogo contenitore usata da Composer per fornire flussi di conversazione più naturali. Non destinato a essere usato direttamente in un bot SDK-first. |
dialoghi di azione | Tipo di dialogo che supporta l'implementazione di azioni in Composer. Non destinato a essere utilizzato direttamente in un bot con approccio SDK. |
finestre di dialogo di input | Tipo di dialogo che supporta l'implementazione di azioni di input in Composer. Non destinato a essere usato direttamente in un bot SDK-first. |
finestra di dialogo delle abilità | Automatizza la gestione di uno o più bot di abilità da un consumatore di abilità. Composer supporta direttamente le competenze come azioni. |
finestra di dialogo QnA Maker | Automatizza l'accesso a una knowledge base di QnA Maker. Questa finestra di dialogo è progettata per funzionare anche come azione all'interno di Composer. |
Importante
finestre di dialogo adattive sono state aggiunte per la prima volta nella versione 4.9 di C# SDK. I dialoghi adattivi supportano Bot Framework Composer e non devono essere usati direttamente in un bot SDK-first.
Modelli di dialogo
Esistono due modelli principali per l'avvio e la gestione dei dialoghi da un bot.
- È consigliabile usare Bot Framework Composer per creare dialoghi, per trarre vantaggio da capacità conversazionali più naturali e fluide. Per ulteriori informazioni, consultare Introduzione a Bot Framework Composer. Questi bot possono comunque essere estesi con il codice, se necessario.
- Sviluppa il tuo bot in uno dei linguaggi SDK e usa il metodo di estensione del dialogo radice
. Per informazioni sull'uso del metodo run con un dialogo componente, consultare sui dialoghi componenti e waterfall e su come implementare il flusso di conversazione sequenziale.
La pila di dialoghi
Un contesto di dialogo contiene informazioni su tutti i dialoghi attivi e include uno stack di dialoghi , che funge da stack di chiamate per tutti i dialoghi attivi. Ogni finestra di dialogo contenitore ha un set interno di finestre di dialogo che controlla, quindi ogni finestra di dialogo contenitore attiva introduce un contesto di dialogo interno e uno stack di finestre di dialogo come parte del suo stato.
Anche se non accedi direttamente allo stack, comprendere che esiste e qual è la sua funzione ti aiuterà a capire come funzionano vari aspetti della libreria dialogs.
Finestre di dialogo dei contenitori
Una finestra di dialogo contenitore può far parte di un set di dialoghi più ampio. Ogni contenitore ha un set di dialoghi interno che è anch'esso gestito.
Ogni set di dialoghi crea un ambito per la risoluzione degli ID di dialogo.
L'SDK implementa attualmente due tipi di dialoghi del contenitore: dialoghi componente e dialoghi adattivi.
La struttura concettuale dei due è piuttosto diversa. Tuttavia, un bot Composer può usare entrambi.
ID finestra di dialogo
Quando si aggiunge una finestra di dialogo a un set di dialoghi, viene assegnato un ID univoco all'interno di tale set. I dialoghi all'interno di un set fanno riferimento tra loro in base ai relativi ID.
Quando un dialogo fa riferimento a un altro dialogo in fase di esecuzione, lo fa in base all'ID del dialogo. Il contesto del dialogo tenta di risolvere l'ID in base agli altri dialoghi nel set di dialoghi immediato. Se non esiste alcuna corrispondenza, cerca una corrispondenza nel set di dialoghi contenitore o esterno e così via. Se non viene trovata alcuna corrispondenza, viene generata un'eccezione o un errore.
Finestre di dialogo dei componenti
I dialoghi dei componenti usano un modello di sequenza per le conversazioni e ogni dialogo nel contenitore è responsabile della chiamata di altri dialoghi nel contenitore. Quando lo stack interno del dialogo del componente è vuoto, termina il componente.
Prendere in considerazione l'uso di dialoghi a cascata e componenti se il bot ha un flusso di controllo relativamente semplice che non richiede un flusso di conversazione più dinamico.
Informazioni sui dialoghi Componente e a Cascata descrive i dialoghi Componente, a Cascata e Prompt in modo più dettagliato.
Altri dialoghi
I dialoghi QnA Maker e delle competenze possono essere usati come dialoghi autonomi o come parte di un insieme di dialoghi in un contenitore.
Interfaccia di dialogo QnA Maker
Nota
Azure AI QnA Maker verrà ritirato il 31 marzo 2025. A partire dal 1° ottobre 2022, non sarà possibile creare nuove risorse o knowledge base di QnA Maker. Una versione più recente della funzionalità di domande e risposte è ora disponibile come parte del linguaggio di intelligenza artificiale di Azure.
La risposta alle domande personalizzate, una funzionalità del linguaggio di intelligenza artificiale di Azure, è la versione aggiornata del servizio QnA Maker. Per altre informazioni sul supporto di domande e risposte nel Bot Framework SDK, vedere Comprensione del linguaggio naturale.
Il dialogo QnA Maker accede a una base di conoscenza di QnA Maker e supporta i suggerimenti di follow-up e le funzionalità di apprendimento attivo di QnA Maker.
- Le richieste di completamento, note anche come prompt a più turni, consentono a una knowledge base di chiedere all'utente altre informazioni prima di rispondere alla domanda.
- I suggerimenti per l'apprendimento attivo consentono alla Knowledge Base di migliorare nel tempo. La finestra di dialogo QnA Maker supporta commenti espliciti per la funzionalità di apprendimento attivo.
Per altre informazioni, vedere:
- Che cos'è QnA Maker?.
- Nell'SDK, come usare QnA Maker per rispondere alle domande.
- In Composer, come Aggiungere una knowledge base di QnA Maker al bot.
Finestra di dialogo abilità
Un'interfaccia di abilità accede e gestisce una o più abilità. Il dialogo della skill invia le attività dal bot principale al bot secondario e trasmette le risposte del bot secondario all'utente.
Per altre informazioni, vedere:
- Nell'SDK la panoramica delle competenze di .
- In Composer Informazioni sulle competenze.