박민혀기

2023 캡스톤디자인 및 AI 해커톤 경진대회(트립GAGO) 본문

etc

2023 캡스톤디자인 및 AI 해커톤 경진대회(트립GAGO)

박민혀기 2023. 11. 7. 15:37

ChatGPT API를 활용한 여행 추천 및 정보 제공 서비스

 

[메인 수익 구조]

  1. 광고 수익: 어플리케이션 내에 해당 여행지 관련 광고를 표시하고 광고주로부터 광고 수익을 얻는 모델. (ex. 제주도의 엑티비티 업체, 가게 홍보 등)
  2. 프리미엄 앱 또는 구독 모델: 어플리케이션의 기본 기능을 무료로 제공하고, 고급 기능이나 광고 제거 옵션을 유료로 제공하는 모델입니다. 또는 구독 서비스를 제공하여 매월 또는 매년 일정한 금액을 받는 방식입니다.
  3. → 유료로 전환 시, ChatGPT-4 사용 가능 ⇒ 보다 더 많은 기능 o

실험결과 문제점

  1. 직접적인 상호명 안알려줌 → 데이터 따로
  2. 오류 존재: 강릉에 오션월드 없음 → 로컬 주민과 매칭
  3. 랜덤으로 결과 값이 추출 ⇒ 남자/여자로 나누어 실험하는 것은 무의미. ⇒ 이후의 추천 리스트에 반영

[기존 서비스와 차별성 및 기대 효과 —(3), (4)]

  1. 현지인들이 제공한 정보들 ⇒ 신뢰성 o
  2. 이동하는 길 위의 맛집, 볼거리 추천 기능 ⇒ 보다 알찬 여행 루트 o
  3. 사용자의 성향에 맞춘 계획들을 추천 → 대안들 중 사용자가 선택 .
  4. ⇒ 보다 사용자에 맞출 수 있어 여러 자료들을 찾아봐야 하는 시간적 부담감을 줄일 수 있게 됨.
  • GPT 사용 O
    • 여행자 정보 입력 받기
      • 성향관련 정보
      • 여행관련 정보
    • 여행 코스 날짜별로 보여주기
      • 코스별 이미지 보여주기
      • 관련 링크 걸기
    • 여행 시 주의사항 정리
    • 길찾기(프리미엄)
    • 사진 입력으로 어디인지 알려주기(프리미엄)
    • 여행 메이트 매칭: mbti에 따라
      • 4명 메칭
      • 설문조사, 여행 기간, 여행지
      • 채팅 가능
      • 맞춤 여행 계획 메뉴로 이동 가능
  • GPT 사용 X
    • 여행 준비물 체크리스트 제공
    • 여행 계획 공유 사용자 추가 기능
    • 로컬 주민 매칭: GPT가 짜준 계획 검토 받기
      • 매칭중
      • 계획 수정 부분 알려주기
      • 로컬주민 평가

 

랜덤하게(원래는 사용자 질문 입력, 버튼으로 구현) 구문을 만들어  ChatGPT에 질문하고  답변 받는 코드

import openai
import random

openai.api_key = "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"

sex = {"남자", "여자"}
age =  {"10대", "20대", "30대", "40대", "50대", "60대 이상"}
people = {"가족들이랑 ", "친구들이랑 ", "혼자 "}
date = {"1박", "2박", "3박", "4박", "5박"}
move = {"밤에", "낮에"}
style = {"여유로운", "알찬"}
end = {"서울", "부산", "인천", "대구", "대전", "광주", "울산", "세종", "수원", "고양", "용인", 
       "창원", "안양", "포항", "광명", "김해", "안산", "의정부", "안동", "전주"}
food = {"김치찌개", "된장찌개", "제육볶음", "순대국밥", "메밀국수", "회", 
        "마라탕", "뿌링클", "닭갈비", "베스킨라빈스"}
start = {"대광", "목포", "무안", "진주", "양산", "여수", "인제", "포천", "춘천", "통영", "퇴촌", 
         "함양", "홍성", "홍천", "화성", "화천", "화순", "횡성", "가평", "양주"}
car = {"차가 있어", "차가 없어"}
MBTI = {"ISTJ", "ISFJ", "INFJ", "INTJ", "ISTP", "ISFP", "INFP", "INTP",
        "ESTP", "ESFP", "ENFP", "ENTP", "ESTJ", "ESFJ", "ENFJ", "ENTJ"}

selected_items = []
for item_set in [sex, age, people, date, move, style, end, food, start, car, MBTI]:
    selected_items.append(random.choice(list(item_set)))

ques = []
content = "나는 " + selected_items[0] + "야 연령은 " + selected_items[1] + "이고 " 
    + selected_items[2] + selected_items[3] + "으로 갈 거야 여행 패턴은 주로 " +
    selected_items[4] + " 활동하고 " + selected_items[5] + "여행을 좋아해 이번 여행은 그냥 "
    + selected_items[6] + "으로 놀러 가는 거야 네가 여행 계획을 추천해 줘 중간에
    들리거나 먹을 만한 곳도 추천해 줘 점심은 " + selected_items[7] + "을 먹을거야 
    참고로 내가 출발하는 위치는 " + selected_items[8] + "이야, " + "참고로 나는 " +
    selected_items[9] + " 그리고 나의 MBTI는 " + selected_items[10]
print("내 질문 : " + content)

messages = []
# content = input("User: ")
messages.append({"role":"user", "content":content})

completion = openai.ChatCompletion.create(
    model = "gpt-3.5-turbo",
    messages=messages
    # prompt="Tell me a joke:",  # 사용자 입력 메시지
    # max_tokens=50,  # 생성된 응답의 최대 토큰 수 (선택 사항)
)

chat_response = completion.choices[0].message.content
print(f'트립가고 : {chat_response}')
messages.append({"role":"assistant", "content":chat_response})

'etc' 카테고리의 다른 글

Python 실행 파일 배포(OpenCV 등 호환)  (0) 2023.12.14
한컴 설치 후 크롬, 엣지에서 pdf 열리지 않을때  (0) 2023.10.25
중간 점검  (0) 2023.09.23
Github Remove Folder/File  (0) 2023.08.16