일기장
article thumbnail
article thumbnail
3차 과제

과제 내용 Dialogflow 환경 구축 Dialogflow에 가입 후 로그인을 한 뒤 create new agent를 선택하면 위와 같은 창이 나옵니다. 참고로 agent는 Dialogflow에서 하나의 프로젝트를 의미합니다. 챗봇을 만들기 위해 일단 위의 Agent name이라는 부분을 작성하여 프로젝트 명을 만들어주고, 그 다음 자신에게 맞는 주요 언어와 표준 시간대를 선택해주면 프로젝트를 생성할 수 있습니다. Dialogflow 사용법 왼쪽 사이드바를 보면 여러 메뉴들을 볼 수 있습니다. 하지만 이 중 Dialogflow를 통한 챗봇 생성에 있어서 핵심이 되는 부분은 Intents와 Entities 총 두가지입니다. Intents Intents는 한국어로 직역하면 의도입니다. 즉, 챗봇으로 하여금..

타임리프를 통한 템플릿 상속
웹개발 2023. 8. 12. 19:10

HTML 코드를 작성하다보면 대표적으로 부분과 같이 공통적으로 작성하게 되는 코드가 발생합니다. 그렇기에 웹 개발에서 HTML 코드의 중복을 최소화하는 것은 개발의 효율성과 유지보수의 용이성을 높이는 중요한 작업입니다. 이번 포스트에서는 타임리프를 사용하여 템플릿 상속을 통한 코드 리팩토링을 어떻게 진행했는지에 대해 다루어보겠습니다. 타임리프란 무엇인가? 우선 간단하게 타임리프가 무엇인지 짚고 넘어가겠습니다. 타임리프(Thymeleaf)는 자바 기반의 서버 사이드 템플릿 엔진입니다. 스프링부트와의 연동이 간편하며, HTML과 XML 문서를 자바 객체로 처리할 수 있게 해줍니다. 즉, 타임리프를 통해 DB에서 가져와 여러가지 가공을 한 데이터(자바 객체)를 정적인 HTML문서에 넣어 동적인 뷰를 보여줄 수..

서비스(Service)
웹개발 2023. 8. 8. 18:58

서비스란? - 레포지토리와 컨트롤러 사이에서 세부적인 비즈니스 로직을 처리하는 계층을 서비스 계층이라고 합니다. - 컨트롤러에서 레포지토리를 호출하여 모든 로직을 처리할 수 있지만, 그러한 코드는 단일 책임 원칙을 위반하게 됩니다. 코드의 유지 보수를 위해서라도 코드는 단일 책임 원칙에 따르는 것이 좋습니다. 서비스층을 만들어 DB접근, DTO생성등을 행하게 만든다면 컨트롤러는 URL맵핑에 집중 할 수 있습니다. 서비스의 필요성 모듈화 - 서비스는 DB에 접근하여 데이터를 다루는 어떠한 기능인데, 만약 이를 서비스 파일에 저장해놓는다면 필요할 때 서비스를 호출하여 실행하면 될 것입니다. 하지만 만약 서비스 파일을 생성하지 않는다면 그 기능이 필요한 모든 컨트롤러마다 똑같은 로직을 반복하게 될 것입니다. ..

리다이렉트, 포워드
웹개발 2023. 8. 8. 16:43

컨트롤러로 들어온 URL요청을 다른 URL요청으로 돌려야할 때 리다이렉트와 포워드를 사용할 수 있습니다. 이 포스트에서는 스프링부트를 이용하여 그 두가지 방법에 대해 다루어보도록 하겠습니다. 리다이렉트(Redirect) // redirect:을 이용하여 redirect 시킬 수 있다 @GetMapping("/") public String root() { return "redirect:/question/list"; } - 이를 이용하여 사용자가 로그인을 시도했을 때 성공하면 로그인된 상태로 메인페이지로 리다이렉트를 할 수 있습니다. - 리다이렉트 방식은 클라이언트에게 새로운 URL요청을 하도록 합니다. 이는 새로운 HTTP요청을 하게 만드는 것입니다. - 이러한 방식을 사용하는 이유는 클라이언트가 새로고침..

article thumbnail
2차 과제

과제 내용 콘도 신청시 무엇을 입력받아야 할까? 목표 : 사내 복지 프로그램로 제공되는 콘도 서비스에 대한 신청을 시나리오 챗봇으로 구축 콘도 서비스 신청을 위해 필요한 데이터 : 예약자, 예약자 전화번호, 예약 시간, 예약 콘도명, 예약 인원 등등 하지만 예약자 이름이나 예약자 전화번호 등은 사내 사이트의 로그인 정보로 받아올 수 있을 것입니다. 따라서 저는 챗봇이 필요로 하는 데이터는 아래와 같다고 생각했습니다. 챗봇이 유저의 응답을 통해 얻어야하는 데이터 : 콘도명, 예약인원, 체크인 시간, 체크아웃 시간 순번 입력항목 설명 입력형태 입력타입 비고 1 콘도 예약할 콘도 1 숫자 코드로 입력 (1.서울한화콘도 2.제주신화콘도 3.강원롯데콘도) 2 인원 예약인원 수 3 숫자 총 인원 수를 입력 3 체크..

article thumbnail
타임리프 템플릿에 데이터 전달하기
웹개발 2023. 8. 4. 23:04

스프링부트에서 @Controller는 기본적으로 반환값을 이용하여 템플릿을 찾습니다. 이러한 템플릿에서 데이터를 담은 자바객체를 활용하기 위해서는 모델이라는 것이 필요합니다. 즉, 모델은 컨트롤러와 뷰 사이를 오가며 데이터를 전달해주는 역할을 합니다. 이번 포스트에서는 모델을 활용하는 방법에 대해 다루어보도록 하겠습니다. 컨트롤러에 모델 주입 @GetMapping("/question/list") public String list(Model model) { List questionList = this.questionRepository.findAll(); model.addAttribute("questionList", questionList); //questionList 내용을 questionList라는 속성..

article thumbnail
1차 과제

과제 내용 저는 이번 포스트에 실제 상용화된 챗봇 서비스 2가지를 들고 왔습니다. 바로 카카오뱅크와 OpenAI의 사례입니다. 이 둘을 보고 저희가 만들어야 할 챗봇의 방향성을 결정할 수 있다 생각했기 때문입니다. 카카오 뱅크 상담 챗봇 카카오뱅크의 상담챗봇은 카카오의 봇빌더를 기반으로 출시된 인공지능 챗봇입니다. 이 챗봇은 고객이 편리하게 이용할 수 있도록 모바일 채팅을 통해 24시간 실시간으로 상담 서비스를 제공하고 있습니다. 금융 서비스의 특성상 일상생활과 쓰이는 용어가 상이하여 봇이 사용자의 질문 의도를 파악하기가 쉽지 않는데요, 그렇기에 카카오뱅크는 봇빌더만 사용하지 않고 카카오의 인공지능 기술팀과 협업하여 ML기술을 도입해 자연스러운 챗봇 대화가 가능하도록 만들었습니다. 카카오뱅크 상담챗봇은 ..