0. 포스팅 목록 & GitHub
(깃허브 스타 버튼 눌러주시면 글 작성에 큰 도움이 됩니다!)
https://github.com/Seokii/Chatbot4Univ
GitHub - Seokii/Chatbot4Univ: 대학생을 위한 AI 질의응답 챗봇 만들기
대학생을 위한 AI 질의응답 챗봇 만들기. Contribute to Seokii/Chatbot4Univ development by creating an account on GitHub.
github.com
https://seokii.tistory.com/146
[Project] 대학생을 위한 AI 질의응답 챗봇 만들기
1. GitHub https://github.com/Seokii/Chatbot4Univ GitHub - Seokii/Chatbot4Univ: 대학교 재학생을 위한 AI 질의응답 챗봇 대학교 재학생을 위한 AI 질의응답 챗봇. Contribute to Seokii/Chatbot4Univ development by creating an account o
seokii.tistory.com
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가 작동하는 것을 테스트할 수 있었습니다.
댓글