언어 생성Language Generation

적용 대상: SDK v4APPLIES TO: SDK v4

LG(언어 생성)를 사용하면 개발자는 코드 및 리소스 파일에서 포함된 문자열을 추출하여 LG 런타임 및 파일 형식을 통해 관리할 수 있게 해줍니다.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. LG를 통해 개발자는 구에 여러 변형을 정의하고, 컨텍스트에 따라 간단한 식을 실행하고, 대화형 메모리를 참조하여 보다 자연스러운 대화 환경을 만들 수 있습니다.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.

개발자는 LG를 사용하여 다음을 수행할 수 있습니다.LG can be used by developers to:

  • 해당 봇을 위한 일관된 개인 정보, 음성 톤 달성achieve a coherent personality, tone of voice for their bot
  • 프레젠테이션과 비즈니스 논리 분리separate business logic from presentation
  • 해당 봇의 응답에 대한 변형 및 정교한 컴퍼지션 기반 해결 포함include variations and sophisticated composition based resolution for any of their bot's replies
  • 말하기 생성 및 적응 표시construct speak .vs. display adaptations
  • 카드 생성, 제안된 작업 및 첨부 파일construct cards, suggested actions and attachments

LG의 핵심은 템플릿 확장 및 엔터티 대체입니다.At the core of LG lies template expansion and entity substitution. 템플릿을 조건부로 확장할 뿐만 아니라 확장에 대한 변형 중 하나를 제공합니다.You can provide one-of variation for expansion as well as conditionally expand a template. LG의 출력은 간단한 텍스트 문자열, 여러 줄 응답 또는 LG 위의 계층에서 활동을 구성하는 데 사용할 복잡한 개체 페이로드일 수 있습니다.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.

다음은 간단한 인사말 LG 템플릿입니다.The following is a simple greeting LG template. 모든 인사말은 ${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?

실행 중인 LGLG in action

봇을 개발할 때 다양한 방법으로 LG를 사용할 수 있습니다.You can use LG in a variety of ways when developing bots. 시작하려면 하나 이상의 .lg 파일을 생성하여 사용자에 대한 봇의 응답과 함께 언어 생성 하위 시스템을 사용하는 모든 가능한 시나리오를 다룹니다.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.

언어 생성 라이브러리 Microsoft.Bot.Builder.LanguageGeneration을 포함하는지 확인합니다.Make sure you include the language Generation library Microsoft.Bot.Builder.LanguageGeneration. 그런 후, 다음을 추가하여 .lg 파일에서 템플릿을 구문 분석하고 로드합니다.Then parse and load templates in your .lg file by adding the following:

    _templates = Templates.ParseFile(fullPath);

템플릿 확장이 필요한 경우 Evaluate를 사용하여 관련 템플릿 이름을 전달합니다.When you need template expansion, use Evaluate and pass in the relevant template name.

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

템플릿이 해결/확장을 위해 특정 속성을 전달해야 하는 경우 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" } );

다국어 생성 및 언어 대체 정책Multilingual generation and language fallback policy

봇은 둘 이상의 음성 또는 표시 언어를 대상으로 할 수 있습니다.Your bot might target more than one spoken or display language. 대상 언어당 하나씩 TemplateEngine 의 개별 인스턴스를 관리할 수 있습니다.You can manage separate instances of the TemplateEngine, one per target language. 여러 언어를 봇에 추가하는 방법(언어 대체(fallback)라고도 함)에 대한 예제는 C# 또는 JavaScript의 언어 대체(fallback) 샘플을 사용하는 다중 턴 프롬프트를 참조하세요.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.

API 확장Expand API

가능한 모든 확장 템플릿을 가져오려면 ExpandTemplate을 사용하면 됩니다.To get all possible expansions of a template, you can use ExpandTemplate.

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

예를 들어 다음과 같은 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

ExpandTemplate("FinalGreeting")을 호출하면 다은과 같은 네 가지 평가가 수행됩니다.The call ExpandTemplate("FinalGreeting") results in four evaluations:

  • Hi MorningHi Morning
  • Hi EveningHi Evening
  • Hello MorningHello Morning
  • Hello EveningHello Evening

범위가 있는 ExpandTemplate("TimeOfDayWithCondition", new { time = "evening" }) 호출은 다음과 같은 두 가지 확장이 발생합니다.The call ExpandTemplate("TimeOfDayWithCondition", new { time = "evening" }) with scope, results in two expansions:

  • Hi EveningHi Evening
  • Hello EveningHello Evening

추가 리소스Additional resources