티스토리 뷰
[AI 서비스 개발] 대화 히스토리 관리 두가지 방법 (ConversationBufferMemory, RunnableWithMessageHistory)
brave_sol 2024. 11. 27. 14:181. 구현 방법 비교
ConversationBufferMemory | RunnableWithMessageHistory |
대화 히스토리를 내부적으로 저장하는 메모리 객체 | 대화 히스토리를 외부 데이터베이스 또는 메모리 저장소에서 |
단일 사용자가 지속적인 대화를 할때 | 여러 사용자의 대화 세션을 관리해야 할 때 |
대화 히스토리를 외부 데이터베이스에 저장할 필요가 없을때 | 대화 히스토리를 외부 데이터 베이스나 클라우드에 저장할 때 |
간단한 대화형 애플리케이션에서 빠르게 시작하고 싶을 때 | 특정 세션별로 독립적인 히스토리가 필요할 때 |
2. ConversationBufferMemroy의 사용자별 메모리 분리
from langchain.memory import ConversationBufferMemory
# 사용자별 메모리 저장소
user_memory_store = {}
# 사용자 세션 ID 기반 메모리 생성 또는 가져오기
def get_user_memory(session_id):
if session_id not in user_memory_store:
user_memory_store[session_id] = ConversationBufferMemory()
return user_memory_store[session_id]
# 사용자 세션 ID
session_id = "user_123"
# 사용자 메모리 가져오기
memory = get_user_memory(session_id)
# 대화 저장
memory.save_context({"input": "What is AI?"}, {"output": "AI stands for Artificial Intelligence."})
# 히스토리 출력
print(memory.chat_memory.messages)
우선 ConversationBufferMemory로 구현해보고 RunnableWithMessageHistory로 확장해봐야겠다.
3. 세션이란?
- 세션(session)은 사용자와 서버 간의 상호작용을 추적하기 위한 방법이다.
- 웹 애플리케이션에서 세션은 특정 사용자가 애플리케이션에 접속한 동안의 상태를 저장하고 관리하는 역할을 한다.
- 사용자별로 고유한 세션ID를 사용해 개별 데이터를 유지
- streamlit에서 st.session_state란? 세션 상태를 유지하기 위한 데이터 저장소이다.
* streamlit은 새로고침하면 st.session_state는 유지되지 않는다!!
4. streamlit에서 state를 유지하는 방법
1) URL parameters사용: URL에 세션ID나 데이터를 저장하고, 페이지가 새로 로드될때 이를 다시 복원
2) streamlit-cookies-manager 라이브러리를 사용해 쿠키를 설정하여 새로고침 후에도 데이터를 유지
3) 대화 기록이나 세션 상태를 외부 데이터 베이스에 저장하고, 새로고침 시 이를 다시 로드(Redis, Firebase등)
5. UUID
- UUID란? Universally Unique Identifier, 범용 고유 식별자
- 무작위로 UUID를 생성하는 라이브러리 : uuid
- 전 세계적으로 고유한 식별자를 생성하기 위한 표준
- 128비트 숫자로 구성되며, 일반적으로 36문자 길이의 하이픈(-)으로 구분된 5개 블록으로 표현됨
예) 550e8400-e29b-41d4-a716-446655440000
'AI > AI 서비스 개발' 카테고리의 다른 글
[AI 서비스 개발] 프롬프트 엔지니어링 (0) | 2024.12.06 |
---|---|
[AI 서비스 개발] Langchain의 PromptTemplate비교 (0) | 2024.11.27 |
[AI 서비스 개발] Langchain 대화 내용 기록 RunnableWithMessageHistory (2) Runnable, invoke (0) | 2024.11.27 |
[AI 서비스 개발] Langchain 대화 내용 기록 RunnableWithMessageHistory (1) Message 구조 (1) | 2024.11.27 |
[AI 서비스 개발] Langchain Agent, Tool (0) | 2024.11.26 |
- Total
- Today
- Yesterday
- 아침
- 운동
- C언어
- 오블완
- 뉴스
- 갓생
- llm
- SQL
- 다이어트
- 프로그래머스
- 미라클모닝
- 경제
- Python
- 기초
- 고득점 Kit
- 티스토리챌린지
- Ai
- 아침운동
- 오픽
- IH
- 빅데이터 분석기사
- opic
- 영어회화
- 루틴
- 줄넘기
- 30분
- 습관
- ChatGPT
- 스크랩
- 실기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |