-
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 : 팔레트 창을 통해서 쉽게 실행가능하다.
-
-
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 파일을 이용해 짤 수 있다.
-
-
Bixby Developer Center : Getting Started 부터 Sample까지, bixbydevelopers.com 에서 공부할 수 있는 내용이 있다. 구글링을 하는 것도 좋지만, 여기서 확인해 보는것도 좋을 것이다.
-
Bixby Developer Github : 샘플코드들을 모아놓은 Repo들이다. 한국 샘플들도 많으니 참고하면 될듯하다. 깃헙에서 코드 많이 찾아보는것도 좋을 것 같다.
-
More info :
- [email protected]
- support.bixbydevelopers.com
-
메인이 되는 Architecture는 Client - Server Architecture이다.
- 그렇다면, 빅스비 플랫폼에서는 빅스비를 어떻게 동작시키며 개발되어야 하는 것은 무엇인가?
-
Bixby Service Architecture
- 음성 인식과 자연어 이해
- 음성인식(ASR) : 발화를 문자로 변환하는 기술
- 자연어이해(NLU) : 인간이 말하는 자연어가 어떻게 되는지 이해하는 기술
- ex) 오늘 서울 날씨 알려줘
- 날짜 : 오늘/지역 : 서울/action : 날씨 알려줘
- 서버 side에서 동작한다
-
어떤 flow로 동작하는지?
- 빅스비 실행됨
- 사용자 발화 발생
- 음성파일이 빅스비 서버 도착
- ASR모듈을 통한, 문자 변환 및 오늘날씨 알려줘에서 NLU모델로 어디로 가야되는지 알려줌(날씨캡슐)
- 해당 발화가 어떤 의도이며, 동작하기 위해 필요한 값이 어떤 것인지 분석
- Intent : 날씨 정보 / 필요값 : 오늘,서울
- 빅스비 플랫폼 자체기술로, 실행 절차를 나타내는 플랜그래프 생성(플랜은, 결과값을 생성하기 위해 할 일을 순서도처럼 나타낸 것)
- 실제 개발자가 구현한 자바스크립트 파일 실행. 8.1 외부 서버 연동이 필요하면, 외부 API 호출해 결과 받거나, 결과를 위한 연산 실행 8.2 서버로부터 클라로 전달. 그래서 사용자에게 보여지게 된다.
-
플랜은 무엇을 기준으로 생성되는가 ? : 개발할 캡슐을 기반으로 생성된다.
- 동작을 실행하기 위한 계획을 가장 효율적인 방법으로 재구성한 것이 플랜그래프이다.
- 서비스를 잘 구현하기 위해서는, 캡슐만 잘 만들면 되지만, 캡슐을 잘 만들어야 한다. 캡슐을 잘 만들어야만, 캡슐이 잘 분류되고, 발화의 의도를 잘 파악할 수 있다.. 여기에 집중해야 함.
-
Bixby 캡슐 구조(4가지 영역)
-
어떤 서비스를 실행시킬지에 대한 모델링
- 모델링 영역의 두가지 Component :
- Concept : 사용자 발화 인식/리턴할 때 필요한 값. ex) 햄버거 두개 : 햄버거(종류)/두개(갯수)
- Action : 캡슐이 사용자의 원하는 작업을 이해할 수 있도록 수행할 동작을 정의
- 모델링 영역의 두가지 Component :
-
모델링한 계획을 코딩하는 비즈니스 로직 : 사용자가 원하는 작업을 실제 수행하는 코드. 서비스 API를 실행하기도 한다. JS기준
-
어떻게 보여줄지 UI/UX :
- Bixby Views(사용자에게 보여주는 Layout)
- Dialog : 사용자에게 되묻거나 결과를 응답해주는 응답문을 생성해 줌
-
Capsule이 잘 동작하도록, 처리할 수 있는 바로하를 생성하고, 자연어 트레이닝을 진행
- 발화 Training : 사용자가 똑같은 말을 하는 것이 아니므로, 추가적인 자연어 트레이닝을 진행
- 디버깅 : 개발한 캡슐이 잘 동작하는지 테스팅하는 디버깅 부분.
-
- 모델링
-
모델링 코드 : 캡슐을 체계적으로 어떻게든 구현해 보자.
-
완전히 새로운 언어라기 보다는, 기존의 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를 신경쓰는 부분도 줄어든다.
-
-
발화가 들어왔을 때의 흐름
- NL(자연어)받기
- Intent 생성(자동)
- Plan Graph 생성(잘 생성되었는지 확인해야 함)
-
자연어 학습 포인트 : 반복학습이 중요함!!
- 모델링, 학습, 테스트, 추가합습, 재테스트를 거침
- 사용자의 발화에 대해, 의도한 바대로 완성하는 것이 중요하다
- 대화 시나리오 설계
- 누락된 경우, 사용자와 정보를 주고받으면서 최종적으로 사용자가 원하는 바를 수행해야 함
- ex) 예약 확정까지도 사용자는 5번에 걸쳐서 말했을 수 있다.