Tripper: OpenAI를 활용한 일본 여행 일정 생성 서비스
9조 프로젝트 개요
본 프로젝트는 OpenAI를 활용하여 일본 여행 일정을 생성하고 개선해주는 여행 계획 서비스입니다.
few shot prompting 방식으로 프롬프트 튜닝을 진행한 상태고 그래서 여행 코스 형식이 일관됩니다.
GPT로 여행정보 받는 과정에서 야스쿠니 신사 같이 한국인이 싫어할만한 관광지를 추천해주는데 저희는 추천 리스트에서 제거하는 방안을 moderation 고려중입니다.
개발 예정 추가 기능 (우선순위에 따라 적었습니다)
- 일정 수정 쪽 GPT 프롬프트 튜닝 예정
- 최신 정보는 RAG로
- moderation적용
- 일정 PDF 내보내기: 사용자가 여행 계획을 쉽게 공유하고 인쇄할 수 있도록 PDF로 내보내는 기능.
- 계획 공유하기: 다른 사람들과 여행 일정을 공유할 수 있는 기능을 추가하여 사용자 경험을 향상시키고 단체 여행 계획을 용이하게 합니다.
🔗 배포된(V1.2.0) 웹 서비스로 바로가기 Click ! 👈
화면 오른쪽 위에 가이드라인 존재하지만 밑의 4줄 설명은 꼭 읽어주세요.
항공편은 인천 국제 공항 출발 기준으로 조회를 합니다.
훗카이도(삿포로 안에 포함)나 간토(도쿄도의 1도 6현 포함) 같은 지역을 선택해주시면 비행기편을 조회할 수 있습니다.
간사이 공항 직항이나 시코쿠 공항은 도쿄 직항 항공편에 비해 잘 운행되지 않습니다.
해당 날짜에 오전에 출발하는 항공편이 여석이 없거나 아예 항공편이 없을 경우, 비행기 정보가 나오지 않습니다.
질문들에 대해, "너가 정해" 옵션과 "나 혼자 가" 옵션은 사용하지 말아주세요.
form 입력값을 다 넣어주세요. 날짜도 기본 값 현재 날짜 사용하지 마시고, 꼭 선택해주세요.
일정 수정은 여행 코스 생성보다도 시간이 더 걸립니다. 일정 수정하고 나서 ngnix 에러가 뜨기도 하는데, baseUrl로 접근해서 본인의 채팅방을 다시 찾아들어간다면 수정된 코스 확인하실 수 있습니다. 본인의 채팅방은 동시 접속자가 없다면 네비게이션바 가장 위쪽에 있을 겁니다.
{baseUrl}/chat/{chat_id} 형식의 url로 접속하시면, 여러 채팅방의 내용을 확인하실 수 있습니다.
서버 안에 데이터베이스도 있기 때문에 여행 코스 생성하시면 db에 저장이 됩니다. 확인이 잘 안되는 경우 본인의 chat_id를 기억하고 있다가 3분 정도 후에 다시 baseUrl로 접속한 후에 방을 누르면 여행 코스 조회 가능합니다. 수정도 같은 방식으로 부탁드립니다.
여행 코스 성공 예시입니다.
🔗 코드 저장소 바로가기 Click ! 👈 (196 커밋...)
👷 버전 기록
| 버전 |
업데이트 내용 |
업데이트 날짜 |
v1.2.0 |
- 일정 수정 작업(프롬프트) |
05.10 2:00 |
v1.0.2 |
- 프론트 재배포 |
05.10 1:00 |
v1.0.1 |
- 비행기 숙박 에러 수정 |
05.09 23:00 |
v1.0.0 |
- 홈 화면 및 여행 코스 생성 오픈 |
05.08 자정 |
Tripper의 주요특징
1. 개인화된 여행 일정 추천
- 일반적인 일정을 제공하는 것이 아닌 개인 맞춤형 일정을 제공해줍니다.
2. 대화형 일정 수정 기능
- 이용자가 부분적인 일정 수정을 원한다면 수정 메시지 창을 통해서 수정할 수 있습니다.
3. 최신 여행 데이터 반영을 통한 더 나은 정보 제공
- 데이터베이스에 저장되어 있는 지방별 행사정보를 일정에 맞춰 제공합니다.
4. RAG 활용
- 사용자가 입력폼을 통해 입력한 여행 카테고리, 지역, 여행 스타일을 입력하면 이를 기반으로 elastic search에 저장된 최신 여행 데이터를 필터, 그리고 프롬프트에서는 요 최신 여행 데이터와 여행 스타일을 고려하여 일정을 제공합니다.
5. 구글맵을 통한 여행일정 정보제공
- 제공되는 일정을 기반으로 구글맵에서 여행지 정보를 제공합니다.
💡 Tripper의 서비스 이용 법은 다음과 같습니다.
- 첫 화면에서 일정 생성하기를 누릅니다.
- 일정생성을 위한 정보를 입력합니다. 입력이 완료 되었으면 코스 생성을 누릅니다.
3.왼쪽 사이드 바에서 본인이 생성한 여행 일정을 눌러 일정을 확인합니다.
4.일정 수정을 원할 경우 일정 맨 마지막에 있는 텍스트 창을 통해 수정 요청을 합니다. 텍스트를 입력후 텍스트 오른쪽에 있는 새로고침 버튼을 누릅니다.
5.지도정보는 숙소(노란색), 일정(빨간색), 행사일정(초록색)에 대한 위치를 제공합니다. 마커를 누를 경우 상세 정보가 뜹니다.
- 지도정보 아래에는 지방별 행사정보를 보여줍니다.
GPT API 사용 원리
일단 저희가 제공하는 여행코스는 유저가 제출한 폼 정보 바탕으로 GPT의 chat completion api를 한 번 호출한 것입니다.
그 이후에는, 유저가 프롬프트로 여행 코스의 활동을 수정할 수 있습니다. 항공편과 숙박은 GPT로 받은 정보가 아니라서, 일자별 활동에 대해서만 수정이 가능합니다. GPT의 chat completion api를 호출하여 수정된 정보를 받아옵니다.
## 제안서 수정사항
팀원들의 언어 숙련도 문제로 구현 언어를 자바에서 파이썬으로 바꿨습니다.
프로젝트 제안 발표 때 학우분들이 주신 피드백은 다음과 같았습니다.
- 기존의 GPT를 활용하여 여행 일정 생성하는 것과 차이점이 뭔지 모르겠다. (50%) - a),b),e)를 활용하여 해결
- 사용자의 "취향"에 맞는 여행 정보를 보여주면 좋을 것 같은데 그럴 수 있을지 모르겠다. (40%) - e)를 활용하여 해결
- GPT는 2021년 9월 이후의 정보는 알려주지 않는데, 여행 정보 추천은 GPT의 활용과 어울리지 않는다. (5%) - b),c) 를 활용하여 해결
1)은 peer review의 50% 정도가 지적해주신 사항이었습니다.
강의자료에서 듣기로 프로젝트 평가 요소에 창의성은 없었지만, 학우분들의 요청을 반영하여 제안서를 일부 수정했습니다.
저희가 고안해낸 위 피드백에서 제기한 부분들을 해결할 수 있는 방안은 다음과 같습니다.
a) 일정 PDF로 만들어주는 기능
b) RAG를 활용하여, 21년 9월까지는 있었지만 그 이후에 사라진 호텔 정보 제거
c) skyscanner 활용하여 항공편 뿐만 아니라 호텔 정보까지 충분히 가져오기
d) 기존의 지피티가 주는 여행 정보에는 동선에 대한 고려가 충분하지 않기에, 동선은 시스템 프롬프팅으로 hallucination 방지
e) 사용자의 MBTI를 입력값으로 받고, 이 값을 충분히 활용하기 위해 미리 저장된 json 활용
💫 유의사항입니다.
- skyscanner 정책상 지난 날짜의 항공편 일정과 숙박 일정은 조회가 되지 않습니다.
- 10일 이상의 여행은 추천하지 않습니다.
- 일정 생성 시에는, 대화형 프롬프트가 제공되지 않고 기본적인 코스 생성 이후에 수정하는 부분에서 프롬프트가 제공됩니다.
- 채팅 사이드바는 아직 완전하지 않으니 본인이 생성한 채팅방 정보만 눌러주세요.
- 여행 일정이 무조건 출발 당일 오전부터 나오기 때문에, 일단 비행기를 오전 10시 이전 도착만 조회하도록 설정해둔 상태입니다.
- 처음화면에서 받은 정보를 GPT API를 통해 가공하지 않고 SKYSCANNER API를 통해 비행기와 숙소 정보를 가져오기 때문에 여행일수와 지역을 변경했을 때 비행기와 숙소 정보는 변하지 않으니 유의해주세요.
프로젝트 진행 상황
- (완료) 프론트와 서버 배포
- (완료) DB 서버에 세팅
- (예정) DB null 데이터 예외 처리
- (진행 중) Github Actions 적용
- (완료) GPT API Chat Completion 구현
- (예정) GPT chat hallucination
- (예정) GPT API Moderation
- (미정) Embedding 활용 여부, 항공편 왕복 검색 허용 여부
🔗 9조 프로젝트 발표자료 바로가기 Click !👈
🔗 최종디자인 바로가기 Click !👈
백엔드 기술 스택
 |
 |
 |
 |
| NGiNX |
aws |
� Github Actions |
docker |
저희 일본 여행 서비스 아직 구현이 많이 안 된 부분이 많지만 즐겨주시면 감사하겠습니다.
데모 때, 본인이 생성하지 않은 채팅방 내용은 제발 누르지 말아주세요!
뒤로가기가 아직은 안 됩니다.
문의사항 있으시면 댓글로 남겨주셔도 되고 cau.tripper@gmail.com로 메일 주셔도 좋아요.
Tripper: OpenAI를 활용한 일본 여행 일정 생성 서비스
9조 프로젝트 개요
본 프로젝트는 OpenAI를 활용하여 일본 여행 일정을 생성하고 개선해주는 여행 계획 서비스입니다.
few shot prompting 방식으로 프롬프트 튜닝을 진행한 상태고 그래서 여행 코스 형식이 일관됩니다.
GPT로 여행정보 받는 과정에서 야스쿠니 신사 같이 한국인이 싫어할만한 관광지를 추천해주는데 저희는 추천 리스트에서 제거하는 방안을 moderation 고려중입니다.
개발 예정 추가 기능 (우선순위에 따라 적었습니다)
데모 링크
🔗 배포된(V1.2.0) 웹 서비스로 바로가기 Click ! 👈
화면 오른쪽 위에 가이드라인 존재하지만 밑의 4줄 설명은 꼭 읽어주세요.
항공편은 인천 국제 공항 출발 기준으로 조회를 합니다.
훗카이도(삿포로 안에 포함)나 간토(도쿄도의 1도 6현 포함) 같은 지역을 선택해주시면 비행기편을 조회할 수 있습니다.
간사이 공항 직항이나 시코쿠 공항은 도쿄 직항 항공편에 비해 잘 운행되지 않습니다.
해당 날짜에 오전에 출발하는 항공편이 여석이 없거나 아예 항공편이 없을 경우, 비행기 정보가 나오지 않습니다.
질문들에 대해, "너가 정해" 옵션과 "나 혼자 가" 옵션은 사용하지 말아주세요.
form 입력값을 다 넣어주세요. 날짜도 기본 값 현재 날짜 사용하지 마시고, 꼭 선택해주세요.
일정 수정은 여행 코스 생성보다도 시간이 더 걸립니다. 일정 수정하고 나서 ngnix 에러가 뜨기도 하는데, baseUrl로 접근해서 본인의 채팅방을 다시 찾아들어간다면 수정된 코스 확인하실 수 있습니다. 본인의 채팅방은 동시 접속자가 없다면 네비게이션바 가장 위쪽에 있을 겁니다.
{baseUrl}/chat/{chat_id} 형식의 url로 접속하시면, 여러 채팅방의 내용을 확인하실 수 있습니다.
서버 안에 데이터베이스도 있기 때문에 여행 코스 생성하시면 db에 저장이 됩니다. 확인이 잘 안되는 경우 본인의 chat_id를 기억하고 있다가 3분 정도 후에 다시 baseUrl로 접속한 후에 방을 누르면 여행 코스 조회 가능합니다. 수정도 같은 방식으로 부탁드립니다.
여행 코스 성공 예시입니다.
🔗 코드 저장소 바로가기 Click ! 👈 (196 커밋...)
👷 버전 기록
v1.2.0v1.0.2v1.0.1v1.0.0Tripper의 주요특징
1. 개인화된 여행 일정 추천
2. 대화형 일정 수정 기능
3. 최신 여행 데이터 반영을 통한 더 나은 정보 제공
4. RAG 활용
5. 구글맵을 통한 여행일정 정보제공
💡 Tripper의 서비스 이용 법은 다음과 같습니다.
3.왼쪽 사이드 바에서 본인이 생성한 여행 일정을 눌러 일정을 확인합니다.
4.일정 수정을 원할 경우 일정 맨 마지막에 있는 텍스트 창을 통해 수정 요청을 합니다. 텍스트를 입력후 텍스트 오른쪽에 있는 새로고침 버튼을 누릅니다.
5.지도정보는 숙소(노란색), 일정(빨간색), 행사일정(초록색)에 대한 위치를 제공합니다. 마커를 누를 경우 상세 정보가 뜹니다.
GPT API 사용 원리
일단 저희가 제공하는 여행코스는 유저가 제출한 폼 정보 바탕으로 GPT의 chat completion api를 한 번 호출한 것입니다.
그 이후에는, 유저가 프롬프트로 여행 코스의 활동을 수정할 수 있습니다. 항공편과 숙박은 GPT로 받은 정보가 아니라서, 일자별 활동에 대해서만 수정이 가능합니다. GPT의 chat completion api를 호출하여 수정된 정보를 받아옵니다.
## 제안서 수정사항 팀원들의 언어 숙련도 문제로 구현 언어를 자바에서 파이썬으로 바꿨습니다. 프로젝트 제안 발표 때 학우분들이 주신 피드백은 다음과 같았습니다.
1)은 peer review의 50% 정도가 지적해주신 사항이었습니다.
강의자료에서 듣기로 프로젝트 평가 요소에 창의성은 없었지만, 학우분들의 요청을 반영하여 제안서를 일부 수정했습니다.
저희가 고안해낸 위 피드백에서 제기한 부분들을 해결할 수 있는 방안은 다음과 같습니다.
a) 일정 PDF로 만들어주는 기능
b) RAG를 활용하여, 21년 9월까지는 있었지만 그 이후에 사라진 호텔 정보 제거
c) skyscanner 활용하여 항공편 뿐만 아니라 호텔 정보까지 충분히 가져오기
d) 기존의 지피티가 주는 여행 정보에는 동선에 대한 고려가 충분하지 않기에, 동선은 시스템 프롬프팅으로 hallucination 방지
e) 사용자의 MBTI를 입력값으로 받고, 이 값을 충분히 활용하기 위해 미리 저장된 json 활용
💫 유의사항입니다.
프로젝트 진행 상황
🔗 9조 프로젝트 발표자료 바로가기 Click !👈
🔗 최종디자인 바로가기 Click !👈
백엔드 기술 스택
저희 일본 여행 서비스 아직 구현이 많이 안 된 부분이 많지만 즐겨주시면 감사하겠습니다.
데모 때, 본인이 생성하지 않은 채팅방 내용은 제발 누르지 말아주세요!
뒤로가기가 아직은 안 됩니다.
문의사항 있으시면 댓글로 남겨주셔도 되고 cau.tripper@gmail.com로 메일 주셔도 좋아요.