728x90
반응형
0. 포스팅 목록 & GitHub
(깃허브 스타 버튼 눌러주시면 글 작성에 큰 도움이 됩니다!)
https://github.com/Seokii/Chatbot4Univ
https://seokii.tistory.com/146
1. 챗봇 엔진 서버
개발 목표로 하는 챗봇 엔진은 챗봇 서버를 만들어 다양한 플랫폼에서 이용 가능하게 하도록 하는 것입니다.
아래 그림처럼 여러 명의 이용자가 챗봇 엔진에 접속해 질문에 대한 답변을 할 수 있도록 구현해야 합니다.
다수의 챗봇 클라이언트에 대해 요청을 처리해야 하기 때문에 멀티 스레딩 방식으로 구현하도록 하겠습니다.
앞으로 서버를 만들고 필요한 모든 개발을 마친 후 서버 환경에 세팅하는 과정까지 진행하고자 합니다.
2. JSON
챗봇 엔진에 요청하고 응답받을 때 JSON 형태를 통해 주고받도록 하겠습니다.
JSON을 사용하면 Key-Value의 쌍으로 이루어진 데이터 객체를 전달하기 용이합니다.
아래의 그림과 같이 요청과 응답을 주고 받는 구조로 구현하도록 하겠습니다.
3. TCP 소켓 모듈
# /utils/BotServer.py
import socket
class BotServer:
def __init__(self, srv_port, listen_num):
self.port = srv_port
self.listen = listen_num
self.mySock = None
# sock 생성
def create_sock(self):
self.mySock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 소켓 닫아도 바로 사용가능하게 설정
self.mySock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.mySock.bind(("0.0.0.0", int(self.port)))
self.mySock.listen(int(self.listen))
return self.mySock
# client 대기
def ready_for_client(self):
return self.mySock.accept()
# sock 반환
def get_sock(self):
return self.mySock
- srv_port : 소켓 서버의 포트번호
- listen_num : 동시 접속 클라이언트 수
- create_sock : TCP/IP 소켓 생성 및 서버 포트로 지정한 서버 포트로 설정한 수 만큼 클라이언트 연결 수락
- ready_for_client : 챗봇 클라이언트 연결을 대기하다 연결을 수락
- get_sock : 현재 생성된 서버 소켓을 반환
728x90
반응형
'머신러닝 & 딥러닝 > 자연어처리' 카테고리의 다른 글
대학교 AI 질의응답 챗봇 만들기 - 8. 챗봇 엔진 서버 (0) | 2022.07.30 |
---|---|
대학교 AI 질의응답 챗봇 만들기 - 7. 임베딩 저장 & 답변 검색 클래스화 (0) | 2022.07.30 |
대학교 AI 질의응답 챗봇 만들기 - 5. 엑셀 내용 임베딩 및 pt파일 저장 & 입력 질문과 유사도 비교(코사인 유사도) (1) | 2022.07.29 |
대학교 AI 질의응답 챗봇 만들기 - 4. 질의응답 데이터 엑셀로 구축 (1) | 2022.07.29 |
[NLP] 한국어 자연어 추론(Korean NLI) - KLUE Dataset & ELECTRA (0) | 2022.07.27 |
댓글