Biblioteca de diálogos
SE APLICA A: SDK v4
Diálogos são um conceito central no SDK, fornecendo maneiras de gerenciar uma conversa de longa duração com o usuário. Uma caixa de diálogo realiza uma função que pode representar parte ou uma sequência completa de uma conversa. Pode abranger apenas uma volta ou várias, e pode abranger um curto ou longo período de tempo.
Este artigo descreve as principais classes e recursos da biblioteca de diálogo.
- Você deve estar familiarizado com como os bots funcionam (incluindo o que é um turno) e gerenciandode estado.
- Cada caixa de diálogo representa uma tarefa de conversação que pode ser executada até a conclusão e retornar as informações coletadas.
- Cada diálogo representa uma unidade básica de fluxo de controle: pode iniciar, continuar e terminar; pausar e retomar; ou ser interrompido.
- As caixas de diálogo são semelhantes a um método ou função em uma linguagem de programação. Você pode passar argumentos ou parâmetros quando inicia uma caixa de diálogo, e a caixa de diálogo pode produzir posteriormente um valor de retorno quando termina.
Dica
Se você é novo no desenvolvimento de bots com o Bot Framework ou na criação de uma nova experiência de conversação, comece com o Bot Framework Composer. Para os bots SDK-first existentes, não criados no Composer, considere expor o seu bot como uma habilidade e usar o Composer para o desenvolvimento futuro de bots.
Estado do diálogo
Os diálogos podem implementar uma de conversação de vários turnos e, como tal, dependem de de estado persistente em turnos. Sem o estado nos diálogos, o seu bot não saberia onde estava na conversa ou quais informações já tinha recolhido.
Para manter o lugar de um diálogo na conversa, o estado do diálogo deve ser guardado e recuperado da memória a cada turno. Isso é tratado por meio de um acessador de propriedade de estado de diálogo definido no estado de conversa do bot. Esse estado de diálogo gerencia informações para todas as caixas de diálogo ativas e filhos de caixas de diálogo ativas. Isso permite que o bot continue de onde parou e lide com vários modelos de conversação.
Em tempo de execução, a propriedade de estado do diálogo inclui informações sobre onde o diálogo está no seu processo lógico, incluindo qualquer informação coletada internamente sob a forma de um objeto de instância de diálogo . Novamente, isso precisa ser lido no bot e salvo na memória a cada turno.
Infraestrutura de diálogo
Juntamente com vários tipos de diálogos, as seguintes classes estão envolvidas na conceção e controlo de conversações. Embora você geralmente não precise interagir diretamente com essas classes, estar ciente delas e de seu propósito é útil ao projetar diálogos para um bot.
Classe | Descrição |
---|---|
Conjunto de diálogos | Define uma coleção de diálogos que podem fazer referência uns aos outros e trabalhar em conjunto. |
Contexto de diálogo | Contém informações sobre todos os diálogos ativos. |
Instância de diálogo | Contém informações sobre uma caixa de diálogo ativa. |
Resultado de turno de diálogo | Contém informações de status de uma caixa de diálogo ativa ou recentemente ativa. Se a caixa de diálogo ativa terminou, isto contém o seu valor de retorno. |
Tipos de diálogos
A biblioteca de diálogos fornece alguns tipos de diálogos para facilitar o gerenciamento das conversas do bot. Alguns desses tipos são descritos com mais detalhes mais adiante neste artigo.
Tipo | Descrição |
---|---|
caixa de diálogo | A classe base para todas as caixas de diálogo. |
caixa de diálogo de contêiner | A classe base para todos os diálogos de container , tais como diálogos de componentes e adaptativos. Ele mantém um conjunto de diálogos internos e permite que você trate uma coleção de diálogos como uma unidade. |
caixa de diálogo do componente | Um tipo de caixa de diálogo de contentor de uso geral que encapsula um conjunto de caixas de diálogo, permitindo a reutilização do conjunto na sua totalidade. Quando um diálogo de componente começa, ele inicia com um diálogo designado na sua própria coleção. Quando o processo interno é concluído, a caixa de diálogo do componente é fechada. |
caixa de diálogo em cascata | Define uma sequência de etapas, permitindo que seu bot guie um usuário através de um processo linear. Estes elementos são normalmente projetados para funcionar dentro do contexto de um diálogo de componentes. |
Caixas de diálogo de prompt | Peça ao usuário a entrada e devolva o resultado. Um prompt será repetido até que receba uma entrada válida ou seja cancelado. Eles são projetados para trabalhar com diálogos em cascata. |
diálogo adaptativo | Um tipo de caixa de diálogo de contêiner usada pelo Composer para fornecer fluxos de conversação mais naturais. Não destinado a ser usado diretamente num bot SDK-first. |
caixas de diálogo de ação | Um tipo de diálogo que suporta a implementação de ações no Composer. Não destinado a ser usado diretamente num bot SDK-first. |
caixas de diálogo de entrada | Um tipo de diálogo que suporta a implementação de ações de entrada no Composer. Não destinado a ser usado diretamente num bot que prioriza o SDK. |
diálogo de habilidades | Automatiza a gestão de um ou mais bots de habilidades de um utilizador de habilidades. O Composer suporta diretamente competências como ações. |
Diálogo do QnA Maker | Automatiza o acesso a uma base de conhecimento do QnA Maker. Este diálogo foi projetado para funcionar também como uma ação dentro do Composer. |
Importante
Caixas de diálogo adaptáveis foram adicionadas pela primeira vez na versão 4.9 do SDK do C#. As caixas de diálogo adaptáveis suportam o Bot Framework Composer e não se destinam a ser usadas diretamente num bot primeiro no SDK.
Padrões de diálogo
Há dois padrões principais para iniciar e gerenciar diálogos de um bot.
- Recomendamos o uso do Bot Framework Composer para criar diálogos de conversação, para se beneficiar de recursos de conversação mais naturais e fluidos. Para obter mais informações, consulte a Introdução ao Bot Framework Composer. Esses bots ainda podem ser estendidos com código onde necessário.
- Desenvolva o seu bot numa das linguagens SDK e use o método de extensão do diálogo raiz executar. Para obter informações sobre como usar o método run com uma caixa de diálogo de componente, consulte sobre caixas de diálogo de componente e cascata e como implementar fluxo de conversa sequencial.
A pilha de diálogos
Um contexto de diálogo contém informações sobre todas as caixas de diálogo ativas e inclui uma pilha de diálogo , que atua como uma pilha de chamadas para todas as caixas de diálogo ativas. Cada diálogo de contentor tem um conjunto interno de diálogos que controla e, portanto, cada diálogo de contentor ativo introduz um contexto de diálogo interno e uma pilha de diálogos como parte do seu estado.
Embora você não acesse a pilha diretamente, entender que ela existe e sua função ajudará você a entender como vários aspetos da biblioteca de diálogos funcionam.
Caixas de diálogo de contêiner
O diálogo de contêiner pode fazer parte de um conjunto de diálogos maior. Cada contêiner tem um conjunto de diálogo interno que também é gerenciado.
Cada conjunto de diálogos cria um escopo para a resolução de IDs de diálogo.
Atualmente, o SDK implementa dois tipos de caixas de diálogo de contêiner: caixas de diálogo de componentes e caixas de diálogo adaptáveis.
A estrutura conceptual dos dois é bastante diferente. No entanto, um bot Composer pode fazer uso de ambos.
IDs de diálogo
Ao adicionar uma caixa de diálogo a um conjunto de diálogos, você atribui a ela uma ID exclusiva dentro desse conjunto. Os diálogos em um conjunto referenciam-se mutuamente através dos seus IDs.
Quando uma caixa de diálogo faz referência a outra caixa de diálogo em tempo de execução, ela o faz pela ID da caixa de diálogo. O contexto do diálogo tenta resolver a ID com base nos outros diálogos no conjunto de diálogos imediato. Se não houver correspondência, ele procurará uma correspondência no conjunto de diálogos que a contém ou num conjunto de diálogos externo, e assim por diante. Se nenhuma correspondência for encontrada, uma exceção ou erro será gerado.
Caixas de diálogo de componentes
Os diálogos de componentes usam um modelo de sequência para conversas, e cada diálogo no contentor é responsável por chamar outros diálogos dentro do mesmo. Quando a pilha de diálogos interna da caixa de diálogo do componente está vazia, o componente conclui-se.
Considere o uso de diálogos de componentes e cascata se o bot tiver um fluxo de controle relativamente simples que não exija um fluxo de conversa mais dinâmico.
Sobre as caixas de diálogo de componentes e cascatas descreve as caixas de diálogo de componentes, cascatas e prompts com mais detalhes.
Outras caixas de diálogo
O QnA Maker e os diálogos de competências podem ser usados como diálogos independentes ou como parte de uma coleção de diálogos em um contentor.
Caixa de diálogo QnA Maker
Observação
Azure AI QnA Maker será desativado em 31 de março de 2025. A partir de 1º de outubro de 2022, você não poderá criar novos recursos ou bases de conhecimento do QnA Maker. Uma versão mais recente do recurso de perguntas e respostas agora está disponível como parte da Linguagem de IA do Azure.
A resposta a perguntas personalizadas, um recurso da Linguagem de IA do Azure, é a versão atualizada do serviço QnA Maker. Para obter mais informações sobre o suporte a perguntas e respostas no SDK do Bot Framework, consulte Compreensão de linguagem natural.
A caixa de diálogo do QnA Maker acessa uma base de conhecimento do QnA Maker e suporta o prompt de acompanhamento e os recursos de aprendizagem ativa do QnA Maker.
- Os prompts de acompanhamento, também conhecidos como prompts de várias voltas, permitem que uma base de conhecimento peça mais informações ao usuário antes de responder à pergunta.
- As sugestões de aprendizagem ativa permitem que a base de conhecimentos melhore ao longo do tempo. A caixa de diálogo QnA Maker suporta feedback explícito para o recurso de aprendizagem ativa.
Para mais informações, consulte:
- O que é o QnA Maker?.
- No SDK, como usar o QnA Maker para responder a perguntas.
- No Composer, como Adicionar uma base de conhecimento do QnA Maker ao seu bot.
Janela de diálogo de competências
Uma caixa de diálogo de habilidades acessa e gerencia uma ou mais habilidades. O diálogo de competências envia atividades do bot principal para o bot de competências e devolve as respostas do bot de competências ao utilizador.
Para mais informações, consulte:
- No SDK, a visão geral das funcionalidades Skills.
- Em Composer, Sobre competências.