📌 Session이란?
- 사용자의 하나의 대화 흐름을 추적하는 객체
- 다음 요소들을 포함:
- id: 세션 고유 식별자
- app_name: 해당 대화를 처리하는 에이전트 앱의 이름
- user_id: 사용자 식별자
- events: 사용자/에이전트의 메시지, 툴 호출 등 대화 히스토리
- state: 이 세션 내에서만 유효한 임시 상태 값들
- last_update_time: 마지막 상호작용 시간
🧪 Session 예시 (Python)
🔁 Session의 생명 주기 (Lifecycle)
단계설명
1️⃣ 생성 |
사용자의 첫 요청으로 create_session() 실행 |
2️⃣ 재개 |
이후 요청은 session_id로 get_session() 호출 |
3️⃣ 처리 |
Agent가 사용자 입력을 분석, 상태/히스토리 참고 |
4️⃣ 응답 생성 |
응답 + 상태 변경 → Event로 포장됨 |
5️⃣ 저장 |
append_event(session, event) 호출 → state와 events 갱신 |
6️⃣ 다음 요청 대기 |
세션은 그대로 저장되어, 다음 요청에 재사용 가능 |
7️⃣ 종료 (선택) |
대화 종료 시 delete_session()으로 세션 삭제 가능 |
🛠️ SessionService: 세션을 다루는 매니저
✳️ 주요 기능
- create_session(): 새 대화 생성
- get_session(): 기존 대화 불러오기
- append_event(): 대화 및 상태 저장
- list_sessions(): 사용자별 대화 목록 조회
- delete_session(): 대화 삭제
🧩 SessionService 구현체 비교
구현체특징영속성용도
InMemorySessionService |
메모리 기반 저장 |
❌ (앱 재시작 시 소실) |
개발/로컬 테스트 |
VertexAiSessionService |
GCP Vertex AI 기반 저장 |
✅ |
실제 배포 환경 (GCP 사용 시) |
DatabaseSessionService |
DB(SQL) 기반 저장 |
✅ |
자체 인프라 운영 시 |
✔️ session_id를 통해 대화를 지속하거나 구분할 수 있음
🧠 정리 요약
항목설명
Session |
개별 대화를 추적하는 객체 (이벤트, 상태, 사용자 ID 포함) |
SessionService |
세션의 생성/조회/저장/삭제를 담당하는 매니저 |
Events |
대화 중 발생한 사용자 입력, 응답, 툴 호출 등 기록 객체 |
State |
세션 내 임시 데이터 저장소 |
last_update_time |
최근 대화 시점을 기록해 세션 관리에 활용 가능 |
💬 실전에서 어떻게 쓰이나?
- 사용자가 웹에서 대화를 시작할 때:
- 매 요청마다 session_id를 포함시켜
- 에이전트는 세션의 상태와 기록을 기반으로
- 종료 시 세션 삭제 가능 (선택)