학교/졸프

카카오 i 오픈빌더 이용하기

daykim 2021. 5. 20. 21:09

1. 구름IDE 회원가입 후 대시보드 들어가기

2. 컨테이너 생성

  • Flask 파일로 생성함
  • Github와 연동해서 파일 가져왔다.
  • # pytorch 설치
    pip3 install torch==1.8.1+cpu torchvision==0.9.1+cpu torchaudio===0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
    
    # transformer 설치
    pip install transformers[torch]
    
    # Flask 설치
    pip install flask
    pip install --upgrade pip
    
    # faiss 설치
    pip install faiss-cpu
    
    # python 설치
    python -m pip install --upgrade pip

 

3. 카카오 i 오픈빌더 스킬 서버 이용하기

스킬

사용자 응대 서비스에 알맞는 기능 단위

 

스킬서버

봇 시스템으로부터 스킬 요청을 받고 이에 담긴 정보를 분석하여 적절한 응답을 만든다.

각 요청은 HTTP POST를 통해 전달되고, 요청과 응답 모두 JSON으로 구성된 body를 이용한다.

 

  • 사용자의 발화 패턴을 예상할 수 없기 때문에 폴백블록에서 스킬데이터를 사용했다. 
from flask import Flask, request, jsonify

app = Flask(__name__)

# 서버 작동 확인
@app.route("/")
def hello():
    return "Hello, Flask!"

@app.route('/meme', methods=['POST'])
def memeSearch():
    req = request.get_json()
    req = req['userRequest']['utterance']

    # 검색어 to list
    Req = []
    Req.append(req)

    # 검색어 임베딩
    answer = searchWordEmbedding(Req)
    answer = search_meme(answer)
    print(answer)

    # 결과
    res = {
        "version": "2.0",
        "template": {
            "outputs": [
                {
                    "simpleImage": {
                        "imageUrl": image[answer[0][0]][0]
                    }
                }
            ]
        }
    }

    return jsonify(res)

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, threaded=True)

 

4. 문제 발생

카카오 i 오픈빌더는 스킬 응답속도에 5초 제한이 있다.
  • https://cs.kakao.com/helps?articleId=1073196621&service=169&category=583&device=2153&locale=ko
  • 검색어 임베딩을 할 때, 매번 토크나이저와 모델을 로딩하느라 시간초과가 발생했다.
    이 모델들을 미리 로딩한 후 inference 해야한다.
  • faiss에서도 index 파일을 미리 로딩한 후 사용해야한다.
  • 위와같이 수정 후 결과가 제대로 반환됐다.

5. 해결해야하는 문제

본래 원하는 결과가 반환되지 않았을 때 폴백블록에 설정해놓은 응답이 반환하게 되어있다.

ex) "다시 입력해주세요"

하지만 현재 스킬을 폴백블록에서 연결했기 때문에 스킬이 제대로 수행되지 않았을 때, 위와같은 메세지를 보내는 방법을 찾아야 한다.

 

 

참고 URL

- 데이터 전송

https://i.kakao.com/docs/skill-response-format#simpleimage

- 발화 패턴

https://2jinishappy.tistory.com/21

- 스킬 연결

https://kitae0522.tistory.com/entry/%EC%B9%B4%EC%B9%B4%EC%98%A4%ED%86%A1-i-%EC%98%A4%ED%94%88%EB%B9%8C%EB%8D%94%EB%A1%9C-%EC%B1%97%EB%B4%87-%EA%B0%9C%EB%B0%9C%ED%95%98%EA%B8%B0-Flask-2?category=805335

- 카카오 i 오픈빌더 도움말

https://i.kakao.com/docs/skill-build#%EC%8A%A4%ED%82%AC-%EC%84%9C%EB%B2%84-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0

'학교 > 졸프' 카테고리의 다른 글

Nginx와 Flask를 활용해서 서빙하기  (0) 2021.06.25
AWS 서버 세팅하기  (0) 2021.06.15
Word2Vec  (0) 2021.05.05
TF-IDF  (0) 2021.05.05
Faiss  (0) 2021.05.01