Skip to content

Latest commit

 

History

History
189 lines (136 loc) · 12.8 KB

File metadata and controls

189 lines (136 loc) · 12.8 KB

빅스비 IDE 공부내용(Bixby Develop)

1. Introduction

  • Capsule : 빅스비 서비스를 제공하기 위해서, 빅스비 플랫폼 서버에서 실행되는 최소 단위의 빅스비 서버 어플리케이션. 빅스비 서비스를 개발한다고 하는 것은 빅스비 캡슐을 개발한다고 생각하면 된다.

  • 캡슐 안의 기능

    • 최상단 제일왼쪽 버튼 : Workspace를 가져올 수 있다. Existing Capsule과 같은 기능.혹은 Capsule을 하나 생성할 수 있다.

    • Capsule ID 생성하는 규칙 : (namespace.capsuleName)

    • example.~~~~~ 혹은, playground.XXXXX , 혹은 자신만의 namespace.OOOO

    • example 이라고 해 놓으면, Bixby Developer Center 또는 Developer들을 위한 github에서 example들을 다운로드하면, example 을 가진 ID를 가진 경우가 대부분이라고 한다.

    • playground 라고 하면, 이 캡슐은 개발시에 테스트, 코드, 시뮬레이션, 디버깅 가능하나, 이것을 빅스비 public, private submission을 통해 단말에서 테스트하는 것이 불가능하다.

    • "what" 처럼 독특한 namespace를 사용하려고 하면, Bixby Developer Center의 메인스페이스와 캡슐 name을 등록해야 한다.

    • 내가 이 개발환경에서 개발하여, bixby platform 에서 private 혹은 public submission 을 통해서 실제적으로 사용자들에게 제공할 것임을 의미한다. (필요!)

    • Submission 하는 방법

      • VIew 에서 Submission 하면, 실제 빅스비 서비스에 등록될 수 있다.
  • 추가적인 IDE 기능

    • Open Debug Console : 코드에 대한 디버깅 가능.

    • Open Simulation Debugging

      • 어떤 사용자의 말에 반응하도록 트레이닝하는지 : resource.training으로 만든다. 사용자가 어떤 말을 했을 때 어떻게 트레이닝하는지 내용이다.
      • ex) 버거 둘 콜라 하나 주문해줘 라고 보냈을 때, NL 모델에 complie 되는지 처리함. 시뮬레이터 실행할려면 open in simulator 화면에다가 처리한다.
    • Command Palette : 팔레트 창을 통해서 쉽게 실행가능하다.

2. Simulation & Debugging

  • Bixby Capsule 구조 : 크게 3가지 부분에 대해서 개발이 진행되고, 한개의 training이 진행된다

    • code & models

      • 사용자가 빅스비에게 어떤 말을 했을 때, 사용자가 한 말이 어떤 의미를 가지는지, 그중에 중요하게 생각해야 되는 명령은 무엇인지 등 빅스비가 사용자의 말을 쪼개어 분석하고, 어떤 일을 하고싶은지를 분석하는 부분.이 부분에 대한 설계 및 구현은, models라고 하는 folder에서 진행된다. code 아래의 models folder 에서 처리된다.

      • models에서 사용자의 말을 분석했을 때, 그 분석된 내용을 알아내게 된다면, code의 내용을 통해서 빅스비가 실제로 그 일을 처리할 수 있도록 처리된다.

    • resources

      • 만약 code에서 결과가 다 처리되게 된다면, 이것은 resource folder 내의 layout 구성을 통해서 더 이쁘게 처리될 수 있다(안해도 괜찮기는 한데, UI를 더 이쁘게 할거면 하면 된다.)
      • 코드가 모두 완성되면, 사용자 말을 조금 더 잘 알아듣게 하기 위해서, 트레이닝 기능을 이용해 bixby에게 사용자 말을 더 잘 알아듣게 하는 기능이 들어감. training, 실행에 대한 기능이 주로 들어간다. (with resource folder)
    • capsule.bxb : 캡슐에 대한 설정파일. 타겟이 어떤 단어인지 설정할 수도 있다. 트레이닝 언어 선택 가능.

  • 그럼 어떻게 flow가 흘러가는데?

    • ko-KR 안에서의 traning 에서, training 을 만들어서 트레이닝 시킬 수 있다. 시킨 뒤 시뮬레이터 버튼을 통해 시뮬레이팅할 수 있다. 왼쪽 하단의 핸드폰 버튼도 같은 시뮬레이터 버튼이다.

    • 이때 캡슐이 어떻게 실행시켰는지 궁금할 때, 거미처럼 생긴 디버깅 버튼을 클릭하거나, View-Open Debug Console 에 들어가면 어떻게 처리되는지 알 수 있다.

    • 그래피컬한 그림이 나오면서 확인이 가능하다.

    • 사용자 말을 어떻게 받아들였는지 파악이 가능하다.

    • 사용자 말에서 중요하게 생각되어야 하는 내용들이 들어가서 진행됨을 알 수 있었다.

    • 비즈니스 로직은, code에서 js 파일을 이용해 짤 수 있다.

Tip : Resource 소개

  • Bixby Developer Center : Getting Started 부터 Sample까지, bixbydevelopers.com 에서 공부할 수 있는 내용이 있다. 구글링을 하는 것도 좋지만, 여기서 확인해 보는것도 좋을 것이다.

  • Bixby Developer Github : 샘플코드들을 모아놓은 Repo들이다. 한국 샘플들도 많으니 참고하면 될듯하다. 깃헙에서 코드 많이 찾아보는것도 좋을 것 같다.

  • More info :

3. 빅스비 캡슐 구조

  • 메인이 되는 Architecture는 Client - Server Architecture이다.

    • 그렇다면, 빅스비 플랫폼에서는 빅스비를 어떻게 동작시키며 개발되어야 하는 것은 무엇인가?
  • Bixby Service Architecture

    • 음성 인식과 자연어 이해
    • 음성인식(ASR) : 발화를 문자로 변환하는 기술
    • 자연어이해(NLU) : 인간이 말하는 자연어가 어떻게 되는지 이해하는 기술
    • ex) 오늘 서울 날씨 알려줘
    • 날짜 : 오늘/지역 : 서울/action : 날씨 알려줘
    • 서버 side에서 동작한다
  • 어떤 flow로 동작하는지?

    1. 빅스비 실행됨
    2. 사용자 발화 발생
    3. 음성파일이 빅스비 서버 도착
    4. ASR모듈을 통한, 문자 변환 및 오늘날씨 알려줘에서 NLU모델로 어디로 가야되는지 알려줌(날씨캡슐)
    5. 해당 발화가 어떤 의도이며, 동작하기 위해 필요한 값이 어떤 것인지 분석
    6. Intent : 날씨 정보 / 필요값 : 오늘,서울
    7. 빅스비 플랫폼 자체기술로, 실행 절차를 나타내는 플랜그래프 생성(플랜은, 결과값을 생성하기 위해 할 일을 순서도처럼 나타낸 것)
    8. 실제 개발자가 구현한 자바스크립트 파일 실행. 8.1 외부 서버 연동이 필요하면, 외부 API 호출해 결과 받거나, 결과를 위한 연산 실행 8.2 서버로부터 클라로 전달. 그래서 사용자에게 보여지게 된다.
  • 플랜은 무엇을 기준으로 생성되는가 ? : 개발할 캡슐을 기반으로 생성된다.

    • 동작을 실행하기 위한 계획을 가장 효율적인 방법으로 재구성한 것이 플랜그래프이다.
    • 서비스를 잘 구현하기 위해서는, 캡슐만 잘 만들면 되지만, 캡슐을 잘 만들어야 한다. 캡슐을 잘 만들어야만, 캡슐이 잘 분류되고, 발화의 의도를 잘 파악할 수 있다.. 여기에 집중해야 함.
  • Bixby 캡슐 구조(4가지 영역)

    • 어떤 서비스를 실행시킬지에 대한 모델링

      • 모델링 영역의 두가지 Component :
        • Concept : 사용자 발화 인식/리턴할 때 필요한 값. ex) 햄버거 두개 : 햄버거(종류)/두개(갯수)
        • Action : 캡슐이 사용자의 원하는 작업을 이해할 수 있도록 수행할 동작을 정의
    • 모델링한 계획을 코딩하는 비즈니스 로직 : 사용자가 원하는 작업을 실제 수행하는 코드. 서비스 API를 실행하기도 한다. JS기준

    • 어떻게 보여줄지 UI/UX :

      • Bixby Views(사용자에게 보여주는 Layout)
      • Dialog : 사용자에게 되묻거나 결과를 응답해주는 응답문을 생성해 줌
    • Capsule이 잘 동작하도록, 처리할 수 있는 바로하를 생성하고, 자연어 트레이닝을 진행

      • 발화 Training : 사용자가 똑같은 말을 하는 것이 아니므로, 추가적인 자연어 트레이닝을 진행
      • 디버깅 : 개발한 캡슐이 잘 동작하는지 테스팅하는 디버깅 부분.

4. Bixby Capsule 기본개념

  • 모델링
    • 모델링 코드 : 캡슐을 체계적으로 어떻게든 구현해 보자.

    • 완전히 새로운 언어라기 보다는, 기존의 json과 비슷한 부분이라고 한다.

    • 빅스비 캡슐을 만드는 것은, 빅스비가 이해해서 원하는 것을 뽑아내는 것이다.

    • 사용자는 언어를 통해 원하는 것을 기술, 빅스비는 정해놓은 툴을 통해 이해한다.

    • ex) 5+7은 무엇이지?

      • 문장을 적합한 단위요소로 이해한다
      • input1 : 5 , input2 : + , input3 : 7 / output : 12
    • 인풋,아웃풋을 보고 concept 이라고 한다. 그리고 인풋 컨셉들로부터 아웃풋 컨셉을 생성하는 것을 보고 action 이라고 한다.

      • 함수라고 생각해도 좋다.

처리하고자 하는 사용자 요청을 어떻게 이해할지, 컨셉과 액션을 통해 구조를 만들어야 하고, 이것이 모델링이다.

  • 사용자 언어 명령을 이해하고 실행할 수 있도록 틀을 짜자!

    • concept : 명사/ action : 동사 라고 이해해도 좋다.
    • 프로그래밍에서는 concept을 변수, action을 함수로 이해해도 좋다.
    • concept의 종류 :
      • boolean, integer 와 같은 기존의 primitive type 도 있지만, C언어의 구조체와 같은 structure type도 존재한다.
      • 앞서 연산케이스에서는 숫자를 integer 로 만들면 되지만, 호텔명, 룸타입 같은 것들은 structure concept로 만들어야 한다
      • 5+7 에서는, decimal(LeftOperand){} 뭐 요런식으로 가능하다고 한다. structure는 조금 더 복잡하긴 함
    • Action
      • i/o concept들을 연결해 주는 부분이다. 연결하는 부분이 대부분이다.
      • 인풋/아웃풋을 연결하는 부분이 대부분. 구조에 대한 설계도만 나타나고 있어, 복잡한 코드가 필요하지는 않다. 잘 만드는 것이 핵심..
      • 그래서 실시간으로 아웃풋을 도출할 수 있는 것을 스스로 프로그래밍하고, 부족한 인풋은 사용자에게 되물어 아웃풋을 낸다.
      • 수없이 다양한 루트를 모두 프로그래밍할 필요가 없다.
  • 비즈니스 로직

    • 모델링은 인풋,아웃풋만 정의한다
    • 로직은 JS를 이용해서 만든다
    • 비즈니스 로직은, 액션과 동일하게, 필요한 인풋들이 매개변수로 정의
    • 아웃풋은 return 으로 정의되고 있다.
    • 자바스크립트는 endpoint.bxb에 정확히 해당하는 action과 연결되게 된다
      • ex) ArithmetrcOperation 이 js파일과 연동되어 있는 것을 볼 수 있다
  • 트레이닝

    • 자연어 트레이닝 :

      • 사용자가 말할 수 있는 다양한 패턴의 발화를 빅스비에게 학습시키는 부분.
      • 사용자가 말할 수 있는 발화를 입력하고, 위 부분에서의 5,7 과 같은 인풋 컨셉을 명시하고,태깅함.
    • 이렇게만 해줘도 빅스비는 스스로 학습하고, 플랜 그래프도 보여준다.

    • 비교적 소수의 발화를 학습해도 된다.

    • 다양한 패턴을 입력해서 빅스비의 성능을 향상시키자!!

  • 뷰(View)

    • 사용자의 발화를 이해하고, 필요한 것은 사용자에게 되물어 최종 콜을 실행시킬 수 있지만, View를 미리 정해진 부분이 아닌, 맞게 최적화시킬 수 있는 부분이다.

    • .view 파일에 저장하게 된다

    • 세가지 부분으로 정해진다

      • 매치 : 각 뷰에서 보여지고 사용되어질 데이터의 컨셉을 명시함
      • 메세지 : 해당 뷰에서 빅스비가 모든 캡슐에서 사용가능하도록 설정된 디폴트가 아닌, 사용자에게 맞도록 말하는 부분. Dialog File의 세부내용과 연동해 사용 가능.
      • 랜더링 : 그래픽적인 부분에서 어떻게 데이터를 보여줄지 명시함. 카드 , 이미지 리스트 등 을 사용해 보기 쉬운 화면을 구성함. 레이아웃과 연동된다.
    • 편하게 선택해서, 손쉽게 유아이를 구성해도 된다. 디바이스 별로 UI를 신경쓰는 부분도 줄어든다.

5. 자연어 학습

  • 발화가 들어왔을 때의 흐름

    1. NL(자연어)받기
    2. Intent 생성(자동)
    3. Plan Graph 생성(잘 생성되었는지 확인해야 함)
  • 자연어 학습 포인트 : 반복학습이 중요함!!

    • 모델링, 학습, 테스트, 추가합습, 재테스트를 거침
    • 사용자의 발화에 대해, 의도한 바대로 완성하는 것이 중요하다

모든 데이터가 빠짐없이 학습되도록 하는 것이 중요하다!

사용자의 말을 잘 이해하도록, 다양한 표현으로 학습할 것. 그래야 예상 못했던 사용자의 발화에도 대응이 가능하다.

  • 대화 시나리오 설계
    • 누락된 경우, 사용자와 정보를 주고받으면서 최종적으로 사용자가 원하는 바를 수행해야 함
    • ex) 예약 확정까지도 사용자는 5번에 걸쳐서 말했을 수 있다.