Skip to main content

Command Palette

Search for a command to run...

챗봇 대화 세션 관리와 기억 이슈 해결

Updated
2 min read
챗봇 대화 세션 관리와 기억 이슈 해결

openai를 이용해 챗봇을 만들다 두가지 이슈가 생겼다.

1. 대화 기억 문제

챗봇이 이전 대화를 기억하지 못하고 매번 새로운 대화처럼 응답한다.

openai 호출에서 message 리스트에 전체 대화가 전달되지 않고, openai 역할로 설정해둔 전역 변수 message 리스트에 사용자 메세지와 openai 응답만 단순히 추가해서 이전 대화를 기억하지 못하는 거였다.

해결은? 이전 대화 내용을 db에서 불러와 message 리스트에 포함시키기!

1.⁠previous_message = ChatBot.objects.filter(session=session).order_by("timestamp")⁠로 세션에 저장된 모든 대화를 불러온다.

2.대화 맥락을 유지하기 위해 이전 대화 내용을 messages 리스트에 추가한다.

chatbot 모델에 저장된 이전 대화 내용을 불러온 후 각 대화를 openai api 호출에 전달할 messages 리스트에 추가한다.

session=session은 현재 사용자와 연결된 대화 세션을 기준으로 필터링하며, order_by("timestamp")는 대화 순서를 보장

3.전체 대화 내용(messages)을 전달하여 gpt가 대화 맥락을 이해하고 이어가게 한다.

이전 대화를 openai api에 전달해 대화 맥락을 이해하게 하고, openai는 messages를 기반으로 응답을 생성하며, 생성된 응답은 db에 저장된다.


2.세션 분리가 아닌 실시간으로 쌓이고 있음

여기서 세션이란? 날짜별로 대화를 그룹화 한 것 (하나의 세션은 특정 날짜 동안의 대화 기록을 묶는 단위)

같은날 대화를 시작해도 새로운 세션이 생성되고 있다.

세션을 관리하고 있는 메서드를 호출할 때 created_at가 타임존을 포함하지 않는 naive datetime(타임존 정보를 포함하지 않는 시간)으로 저장되고 있는데 이거때문에 정확한 날짜를 잡지 못하여 세션이 여러개 생성되는것 같다.

기존에 사용하고 있는 ChatSession.objects.get_or_create(user=user, created_at=today)를 호출하면 created_at이 초 단위까지 비교되기 때문에 다른 세션이 생성되게 된다.

날짜를 기준으로 세션을 찾았지만 시간까지 포함해 비교하기 때문에 같은 날에도 다른 세션이 생성되고 있다.
→created_at 필드를 날짜만 비교하도록 처리하지 않고 시간까지 비교하도록 처리되고 있다.

created_at 필드를 날짜로만 비교되도록 수정

한 세션만 들어옴 ~ 끝~

142 views

More from this blog

s3사용 및 s3:PutBucketPolicy 권한 오류

1. S3 생성 중 정책 생성 페이지에서 s3:PutBucketPolicy 권한이 없어 오류 발생 IAM 사용이 아닌 루트 사용자 버전으로 설명 AWS IAM 콘솔 → 정책 → AdministratorAccess⁠검색→ 정책이 나타나면 사용자에 연결→ 없다면 새로운 정책 추가 없으므로 AdministratorAccess 생성 정책 생성 버튼 클릭 → JSON 탭 선택 후 아래 코드 입력 → 생성 { "Version": "2012-10-1...

Mar 12, 20252 min read9
s3사용 및 s3:PutBucketPolicy 권한 오류

챗봇과 사용자의 대화 내용이 길어질수록 llm 호출 시 토큰 수가 증가하여 응답 시간이 지연되는 문제가 발생

https://youtu.be/5soSQgVHGEA OpenAI API를 이용한 챗봇을 만들면서 대화가 길어질수록 LLM 호출 시 토큰 수 증가로 응답 시간이길어지는 문제가 발생 문제분석 여기서 생각하는 문제는 db 조회의 부하 처음 챗봇에게 부여하는 역할이 너무 긴데, 이걸 매 API 호출마다 전송함 대화 흐름을 기억하기 위해 챗봇-유저 간 대화 내용을 모두 DB에 저장한 다음 그대로 API 호출 마다 LLM에 전달함 → 모든 대화 ...

Jan 16, 20253 min read122
챗봇과 사용자의 대화 내용이 길어질수록 llm 호출 시 토큰 수가 증가하여 응답 시간이 지연되는 문제가 발생

dayeon's blog

124 posts