Generación de lenguajesLanguage Generation

se aplica a: SDK V4APPLIES TO: SDK v4

Language Generation (LG) permite a los desarrolladores extraer las cadenas insertadas de los archivos de código y de recursos, y administrarlas mediante un entorno de ejecución de LG y un formato de archivo.Language Generation (LG) allows developers to extract embedded strings from their code and resource files and manage them through a LG runtime and file format. Con LG, los desarrolladores pueden crear una experiencia de conversación más natural y definir distintas variantes en una frase, ejecutar expresiones simples basadas en el contexto y hacer referencia a la memoria de conversación.With LG, developers can create a more natural conversation experience by defining multiple variations on a phrase, executing simple expressions based on context, and referring to conversational memory.

Los desarrolladores pueden usar LG para:LG can be used by developers to:

  • Conseguir un tono de voz y una personalidad coherente para su bot.achieve a coherent personality, tone of voice for their bot
  • Separar la lógica de negocios de la presentación.separate business logic from presentation
  • Incluir variantes y una redacción sofisticada para todas las respuestas del bot.include variations and sophisticated composition based resolution for any of their bot's replies
  • Construir adaptaciones verbales frente a adaptaciones en pantalla.construct speak .vs. display adaptations
  • Construir tarjetas, acciones sugeridas y datos adjuntos.construct cards, suggested actions and attachments

En el núcleo de LG se encuentra la expansión de plantillas y la sustitución de entidades.At the core of LG lies template expansion and entity substitution. Puede proporcionar una variante puntual para la expansión así como expandir condicionalmente una plantilla.You can provide one-of variation for expansion as well as conditionally expand a template. La salida de LG puede ser una cadena de texto simple, una respuesta de varias líneas o una carga de objetos complejos que una capa por encima de LG usará para crear una actividad.The output from LG can be a simple text string, multi-line response, or a complex object payload that a layer above LG will use to construct an activity.

La siguiente es una plantilla de LG de saludo simple.The following is a simple greeting LG template. Observe que todos los saludos hacen referencia al nombre del usuario en memoria con la variable ${user.name}.Notice that all of the greetings reference the user's name in memory with the variable ${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 en acciónLG in action

Puede usar LG de diversas maneras para desarrollar bots.You can use LG in a variety of ways when developing bots. Para empezar, cree uno o varios archivos .lg para cubrir todos los escenarios posibles en los que usaría el subsistema de Language Generation con las respuestas del bot a un usuario.To start, create one or more .lg file(s) to cover all possible scenarios where you would use the language generation sub-system with your bot's replies to a user.

Asegúrese de incluir la biblioteca de Language Generation Microsoft.Bot.Builder.LanguageGeneration.Make sure you include the language Generation library Microsoft.Bot.Builder.LanguageGeneration. Después, agregue lo siguiente para analizar y cargar las plantillas en el archivo .lg:Then parse and load templates in your .lg file by adding the following:

    _templates = Templates.ParseFile(fullPath);

Cuando necesite la expansión de la plantilla, use Evaluate y pase el nombre de la plantilla correspondiente.When you need template expansion, use Evaluate and pass in the relevant template name.

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

Si la plantilla necesita propiedades específicas que se van a pasar para la resolución o la expansión, puede pasarlas al llamar a Evaluate.If your template needs specific properties to be passed for resolution/expansion, you can pass them when calling Evaluate.

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

Generación multilingüe y directiva de reserva de idiomasMultilingual generation and language fallback policy

El bot podría tener como destino más de un idioma hablado o en pantalla.Your bot might target more than one spoken or display language. Puede administrar instancias independientes de TemplateEngine, una por cada idioma de destino.You can manage separate instances of the TemplateEngine, one per target language. Para obtener un ejemplo de cómo agregar varios lenguajes, también conocidos como reserva de lenguaje, al bot, consulte el mensaje de varios turnos con el ejemplo de reserva de lenguaje en C# o JavaScript.For an example of how to add multiple languages, also known as language fallback, to your bot, see the multi-turn prompt with language fallback sample in C# or JavaScript.

Expand APIExpand API

Para obtener todas las expansiones posibles de una plantilla, puede usar ExpandTemplate.To get all possible expansions of a template, you can use ExpandTemplate.

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

Por ejemplo, dado este contenido de LG:For example, given this LG content:

# Greeting
- Hi
- Hello

#TimeOfDay
- Morning
- Evening

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

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

La llamada ExpandTemplate("FinalGreeting") da como resultado cuatro evaluaciones:The call ExpandTemplate("FinalGreeting") results in four evaluations:

  • Hi Morning (Hola Mañana)Hi Morning
  • Hi Evening (Hola Tarde)Hi Evening
  • Hello Morning (Hola Mañana)Hello Morning
  • Hello Evening (Hola Tarde)Hello Evening

La llamada ExpandTemplate("TimeOfDayWithCondition", new { time = "evening" }) con ámbito, da como resultado dos expansiones:The call ExpandTemplate("TimeOfDayWithCondition", new { time = "evening" }) with scope, results in two expansions:

  • Hi Evening (Hola Tarde)Hi Evening
  • Hello Evening (Hola Tarde)Hello Evening

Recursos adicionalesAdditional resources