ADK(Agent Development Kit) 관련

ADK - Sessions & Memory : Session

alienbuddy 2025. 7. 14. 12:23

📌 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 최근 대화 시점을 기록해 세션 관리에 활용 가능
 

💬 실전에서 어떻게 쓰이나?

  • 사용자가 웹에서 대화를 시작할 때:
    • 새로운 세션 생성 or 기존 세션 재사용
  • 매 요청마다 session_id를 포함시켜
    • 문맥 연속성을 유지
  • 에이전트는 세션의 상태와 기록을 기반으로
    • 응답을 만들고 상태를 업데이트
  • 종료 시 세션 삭제 가능 (선택)

'ADK(Agent Development Kit) 관련' 카테고리의 다른 글

ADK - Sessions & Memory : Memory  (0) 2025.07.16
ADK - Sessions & Memory : State  (0) 2025.07.15
ADK - Sessions & Memory  (2) 2025.07.12
ADK Runtime - RunConfig  (2) 2025.07.11
ADK - Runtime  (4) 2025.07.09