[LangGraph] 로컬여행 가이드 에이전트 - 여행 유형 기반 답변 생성하기

하나둘셋·2025년 11월 26일

기능을 발전시켜두고 기록은 까먹은 채... 지금이라도 복습 겸 기록을 시작한다.


새로운 기능

이전 게시물에서 보완해야 하는 부분에 사용자의 여행 취향을 반영할 수 있는 효율적인 방법이 필요하다고 얘기했었다. 대화를 시작하기 전 사용자의 여행 유형을 파악하고 그 유형을 기반으로 대화를 진행하면 사용자에게 더 잘 맞는 답변을 만들수 있지 않을까?

그래서 일명 TBTI (Travel MBTI)를 만들고 이 설문 조사를 바탕으로 사용자의 유형을 정한 후 가이드 봇은 이에 따라 달라지는 추가적인 질문을 통해 사용자의 여행 선호도를 분석한다.



여행 유형 분석 퀴즈

팀원들과 TBTI 테스트를 만들어 사용자의 여행 부캐를 찾을 수 있도록 하였다.

질문은 총 4가지로 구성된다.


1. 어떤 분위기의 여행 선호하는지?


2. 혼자 여행을 선호하는지 ?


3. 여행 시, 대중교통 vs 자동차 ?


4. 즉흥적인 여행 vs 계획적인 여행 ?


TBTI 결과

설문 조사가 끝나면 유형에 따른 귀여운 동물로 개인의 TBTI 캐릭터를 설명과 함께 얻게 된다.



사용자 유형 기반 채팅 시작

그림과 같이 채팅방 상단에 사용자의 유형을 볼 수 있으며 사용자와 채팅을 할 때, 가이드 봇은 유형에 따라 다른 질문들로 사용자의 선호 여행을 분석할 수 있도록 한다.




달라진 가이드 봇 작동 흐름

위의 흐름은 LangGraph의 기능을 통해 자동 생성된 그림이다. 전보다 살짝은 더 복잡해졌다. 위의 보라색 네모칸은 LangGraph에서 노드를 의미하고, 프로세스 진행 시 모든 노드에 공유하는 정보를 저장할 수 있다. 노드의 주요 정보는 사용자의 여행 유형(TBTI), 필터(filter)

필터(filter)는 쉽게 말하면 사용자의 여행 특성으로 여행 장소 데이터베이스 검색 시 검색 조건으로 이용된다.

노드 별로 진행 흐름을 설명해본다.

  1. start-node : 사용자의 TBTI(여행 유형 특성)을 전달 받아 이 정보를 프로세스에 저장한다.
    사용자의 필터 정보가 없을 경우, 필터를 생성하기 위해 generate-filter 노드로 이동한다. 그 외의 경우는 talk-to-human 노드로 이동하여 AI와 대화가 바로 진행 된다.
  2. talk-to-human : 사용자의 질문에 대한 답변을 생성한다. 사용자의 대화 중 상세한 답변 생성을 데이터베이스 검색 등과 같은 추가 작업이 필요한 경우, 함수를 추가 호출한다. 함수가 호출될 경우, tools 노드로 이동한다.
  3. add-filter : 대화 중 사용자의 여행 특성을 추가하는 역할을 한다. 예를 들어, 사용자가 대화 중 갑자기 아이와 여행하기로 여행 계획이 변경되었다고 말한다면, 아이와 함께 여행하기에 좋은 장소를 검색하기 위해 검색 조건을 필터 변수에 추가한다.
  4. respond : 함수 호출 결과들을 바탕으로 답변을 생성한다.
  5. json-processing : 사용자에게 답변을 보내기 위해 올바른 json 형태의 문자열을 딕셔너리 자료형으로 변환하는 단순 처리 과정이다. AI 답변을 정해진 형식으로 후처리 후 사용자에게 전달 된다.


메인 코드는 다음과 같고 다음 게시물에서 프로그램에 대한 자세할 설명이 이어진다.

LangGraph Agent 메인 코드

profile
하나씩 뚝딱뚝딱

0개의 댓글