728x90
반응형
0. 포스팅 목록 & GitHub
(깃허브 스타 버튼 눌러주시면 글 작성에 큰 도움이 됩니다!)
https://github.com/Seokii/Chatbot4Univ
https://seokii.tistory.com/146
1. 챗봇 시스템 구조
챗봇 시스템은 아래 그림과 같은 구조로 구현합니다.
Flask로 구현할 REST API를 통해 플러터로 개발한 애플리케이션과 데이터를 주고받을 수 있도록 할 예정입니다. 이외에도, 카카오톡이나 네이버톡톡에 연동할 수 있습니다.
2. Flask
/chatbot_api/app.py
from flask import Flask, request, jsonify, abort, render_template
import socket
import json
# 챗봇 엔진 서버 정보
host = "127.0.0.1" # 챗봇 엔진 서버 IP
port = 5050 # 챗봇 엔진 port
# Flask 애플리케이션
app = Flask(__name__)
# 챗봇 엔진 서버와 통신
def get_answer_from_engine(bottype, query):
# 챗봇 엔진 서버 연결
mySocket = socket.socket()
mySocket.connect((host, port))
# 챗봇 엔진 질의 요청
json_data = {
'Query' : query,
'BotType' : bottype
}
message = json.dumps(json_data)
mySocket.send(message.encode())
# 챗봇 엔진 답변 출력
data = mySocket.recv(2048).decode()
ret_data = json.loads(data)
# 챗봇 엔진 서버 연결 소켓 닫기
mySocket.close()
return ret_data
# 챗봇 엔진 query 전송 API
@app.route('/query/<bot_type>', methods=['POST'])
def query(bot_type):
body = request.get_json()
try:
if bot_type == 'NORMAL':
# 일반 질의응답 API
ret = get_answer_from_engine(bottype=bot_type, query=body['query'])
return jsonify(ret)
else:
# 정의되지 않은 bot type인 경우 404 Error
abort(404)
except Exception as ex:
# 오류 발생 시 500 Error
abort(500)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
프로젝트 루트 디렉토리에 chatbot_api 폴더를 만든 후 app.py를 생성하고 위의 코드를 구현했습니다.
get_answer_from_engine() 함수는 챗봇 엔진 서버에 소켓 통신으로 질문을 전달하고, 다시 답변 데이터를 받아오는 함수입니다. 이전 소켓 모듈 구현과 json 부분을 통해 내용을 다시 확인할 수 있습니다.
API를 통해 POST방식으로 /query/NORMAL URI를 통해 json객체의 전달을 주고 받을 수 있습니다.
3. API 테스트
크롬 확장 프로그램인 Talend API Tester를 통해 테스트를 진행했습니다.
chatbot.py와 app.py를 실행시킨 후 Talend API Tester를 통해 테스트 코드를 입력합니다.
{"query" : "제1공학관 위치 어디야"}
정상적으로 API가 작동하는 것을 테스트할 수 있었습니다.
728x90
반응형
'머신러닝 & 딥러닝 > 자연어처리' 카테고리의 다른 글
대학교 AI 질의응답 챗봇 만들기 - 13. 챗봇 API 개선하기(2) (0) | 2022.11.16 |
---|---|
대학교 AI 질의응답 챗봇 만들기 - 12. 챗봇 API 개선하기(1) (0) | 2022.08.11 |
대학교 AI 질의응답 챗봇 만들기 - 10. 챗봇 엔진 서버 개선하기 (2) | 2022.07.30 |
대학교 AI 질의응답 챗봇 만들기 - 9. 챗봇 엔진 서버 테스트 (0) | 2022.07.30 |
대학교 AI 질의응답 챗봇 만들기 - 8. 챗봇 엔진 서버 (0) | 2022.07.30 |
댓글