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
- 스킬 연결
- 카카오 i 오픈빌더 도움말
'학교 > 졸프' 카테고리의 다른 글
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 |