Geração de Linguagem

aplica-se a: SDK v4

A LG (Geração de Linguagem) permite aos desenvolvedores extrair cadeias de caracteres inseridas de seus códigos e arquivos de recurso e gerenciá-las por meio de um formato de arquivo e um runtime de LG. Com a LG, os desenvolvedores podem criar uma experiência de conversa mais natural definindo diversas variações em uma frase, executando expressões simples com base no contexto e referindo-se à memória de conversação.

A LG pode ser usada por desenvolvedores para:

  • obter um tom de voz com personalidade coerente para o bot
  • separar a lógica de negócios da apresentação
  • incluir variações e resolução baseada em composição sofisticada para qualquer uma das respostas do bot
  • construir fala versus adaptações de tela
  • construir cartões, ações sugeridas e anexos

No núcleo da LG está a expansão de modelo e a substituição de entidade. Você pode fornecer uma variação única para expansão, bem como expandir um modelo condicionalmente. A saída da LG pode ser uma cadeia de caracteres de texto simples, uma resposta de várias linhas ou uma carga de objeto complexo que uma camada acima da LG usará para construir uma atividade.

Confira a seguir um modelo de LG de saudação simples. Observe que todas as saudações fazem referência ao nome do usuário na memória com a variável ${user.name}.

# greetingTemplate
- Hello ${user.name}, how are you?
- Good morning ${user.name}.It's nice to see you again.
- Good day ${user.name}. What can I do for you today?

LG em ação

Você pode usar a LG de várias maneiras ao desenvolver bots. Para começar, crie um ou mais arquivos .lg para abranger todos os cenários possíveis em que você usaria o subsistema de geração de linguagem com as respostas de seu bot para um usuário.

Inclua a biblioteca de geração de linguagem Microsoft.Bot.Builder.LanguageGeneration. Em seguida, analise e carregue modelos em seu arquivo .lg adicionando o seguinte:

    _templates = Templates.ParseFile(fullPath);

Quando precisar de expansão de modelo, use Evaluate e passe o nome do modelo relevante.

    var lgOutput = _templates.Evaluate(<TemplateName>);

Se o modelo precisar de propriedades específicas a serem passadas para resolução/expansão, você poderá passá-las ao chamar Evaluate.

    var lgOutput = _templates.Evaluate("WordGameReply", new { GameName = "MarcoPolo" } );

Política de geração multilíngue e fallback de idioma

O bot pode ser direcionado para mais de um idioma falado ou de exibição. Você pode gerenciar instâncias separadas do TemplateEngine, uma por idioma de destino. Para obter um exemplo de como adicionar vários idiomas, também conhecido como fallback de idioma, ao seu bot, confira o prompt de vários turnos com uma amostra de fallback de idioma no C# ou no JavaScript.

API de expansão

Para obter todas as expansões possíveis de um modelo, você pode usar ExpandTemplate.

    var results = lgTemplates.ExpandTemplate("WordGameReply", { GameName = "MarcoPolo" } )

Por exemplo, dado este conteúdo de LG:

# Greeting
- Hi
- Hello

#TimeOfDay
- Morning
- Evening

# FinalGreeting
- ${Greeting()} ${TimeOfDay()}

# TimeOfDayWithCondition
- IF: ${time == 'morning'}
    - ${Greeting()} Morning
- ELSEIF: ${time == 'evening'}
    - ${Greeting()} Evening
- ELSE:
    - ${Greeting()} Afternoon

A chamada ExpandTemplate("FinalGreeting") resulta em quatro avaliações:

  • Hi Morning
  • Hi Evening
  • Hello Morning
  • Hello Evening

A chamada ExpandTemplate("TimeOfDayWithCondition", new { time = "evening" }) com escopo resulta em duas expansões:

  • Hi Evening
  • Hello Evening

Recursos adicionais