전체 글 221

21. Session/Memory/Artifact [10]- VertexAiMemoryBankService(2/2)

6. 5단계: Agent 객체 생성이제 에이전트를 만드는 코드입니다.memory_agent = Agent( model=os.getenv("GOOGLE_MODEL", "gemini-3.5-flash"), name="memory_agent", instruction=( "당신은 질문에 성실히 답하는 도움되는 에이전트이며, " "질문과 대답은 모두 한글로만 해야 한다." ), tools=[load_memory], after_agent_callback=add_session_to_memory,)하나씩 살펴보겠습니다.6-1. modelmodel=os.getenv("GOOGLE_MODEL", "gemini-3.5-flash")에이전트가 사용할 LLM을 지정합니다..

20. Session/Memory/Artifact [9]- VertexAiMemoryBankService(1/2)

지금까지 공부한 ADK의 메모리 서비스가 한 단계 발전하는 중요한 과정입니다. 앞서 InMemoryMemoryService와 VertexAiSessionService를 실습했다면, 이번에는 에이전트가 대화한 내용을 Google Cloud의 Vertex AI Memory Bank에 저장하고, 다음 대화에서 다시 검색해 활용하는 구조를 배우는 것입니다. 단순히 로컬 메모리를 클라우드 메모리로 바꾸는 것 이상의 의미가 있습니다.이번 실습을 이해하려면 다음 세 가지를 명확하게 구분해야 합니다.Agent Engine: Google Cloud에 메모리를 저장하고 관리할 클라우드 측 리소스입니다.VertexAiMemoryBankService: 로컬 ADK 에이전트가 클라우드의 Memory Bank를 이용하도록 연결하..

19. Session/Memory/Artifact [8]- InMemoryMemoryService

이번 코드는 앞서 성공한 VertexAiSessionService 실습에서 한 단계 더 나아가, 대화 세션을 기억으로 저장하고, 나중에 그 기억을 검색해 활용하는 구조를 테스트하려는 코드입니다.먼저 가장 중요한 결론부터 말씀드리겠습니다.1. 어떤 명령어로 실행해야 할까요?이번 코드의 목적이 InMemoryMemoryService 테스트라면, 우선 다음 명령어로 실행하는 것이 맞습니다.adk web --port 8080다만, 이 명령어만으로 InMemoryMemoryService가 자동으로 설정되는 것은 아닙니다. ADK가 사용하는 기본 서비스 설정과 에이전트 실행 환경에 따라 실제로 어떤 Memory Service가 연결되는지 확인해야 합니다. 두 명령어의 차이는 다음과 같습니다. 실행 명령어 주요 목..

18. Session/Memory/Artifact [7]- VertexAiSessionService(3/3)

이번 실습은 단순히 VertexAiSessionService를 실행한 정도가 아니라, 로컬에서 실행하는 ADK 에이전트에 Google Cloud의 관리형 세션 서비스를 연결하고, 서버를 재시작한 뒤에도 대화 맥락이 유지되는 것을 검증한 것입니다. 특히 "오늘 서울 날씨 어때?"라고 질문한 다음 로컬 웹 서버를 종료하고 다시 실행한 뒤 "내일은?"이라고 물어 정상적으로 답변을 받았다면, 중요한 검증을 통과하신 것입니다.1. 이번 실습에서 확인한 핵심 ① Agent Engine 인스턴스 생성 및 ID 확보 Google Cloud에 생성한 Agent Engine 인스턴스 ID를 확인하고 세션 서비스에 전달했습니다. ② VertexAiSessionService 연결 기존의 InMemorySessi..

17. Session/Memory/Artifact [6]- VertexAiSessionService(2/3)

이제 에이전트 엔진 인스턴스를 생성하고, 코드를 실행하여 Google Cloud Resource Name이 표시되는지 확인합니다.1. STAGING_BUCKET의 버킷명은 어디서 확인할까요?STAGING_BUCKET = "gs://"은 Google Cloud Storage에 있는 Cloud Storage 버킷의 주소를 지정하는 부분입니다.여기서 버킷(bucket)은 파일을 담는 최상위 저장 공간이라고 이해하시면 됩니다. 이번 실습에서는 Agent Engine을 생성할 때 필요한 배포 패키지 등의 파일을 임시로 올려 두는 용도로 사용합니다. Google 공식 문서에서도 Agent Engine 생성 설정의 staging_bucket은 gs://로 시작하는 Cloud Storage 버킷이어야 한다고 안내합니다..

16. Session/Memory/Artifact [5]- VertexAiSessionService(1/3)

실습 전 준비 → Google Cloud 설정 → Agent Engine 생성 → ID 확인 → ADK Web 연결 → 서버 재시작 검증 → 최종 정리 순서로 정리하겠습니다. 목표는 로컬 PC에서 실행하는 Google ADK 에이전트에 Google Cloud의 관리형 세션 서비스를 연결하여, 웹 서버를 종료하고 다시 실행해도 기존 대화 맥락을 유지할 수 있는지 검증하는 것입니다. 핵심 질문은 다음과 같습니다.로컬에서 adk web으로 실행하는 에이전트가 대화 세션을 Google Cloud에 저장하면, 서버를 재시작한 뒤에도 이전 대화의 맥락을 이어갈 수 있을까?이를 확인하기 위해 기존의 InMemorySessionService 대신 VertexAiSessionService를 사용했습니다. 1. 먼저 결론..

15. Session/Memory/Artifact [4] - DatabaseSessionService 활용Google ADK + PostgreSQL 정리(2/2)

Google ADK 날씨 에이전트 코드 상세 정리합니다. 이번에는 코드를 단순히 한 줄씩 번역하는 데 그치지 않고, 왜 이 코드를 작성했는지, Python이 어떻게 실행하는지, Google ADK가 어디에 관여하는지, PostgreSQL에 저장한 사용자 상태와 어떻게 연결되는지까지 정리합니다. 특히 이번 코드에서 가장 중요한 개념은 세 가지입니다.도구(Tool): 날씨 데이터를 조회하고 결과를 반환하는 Python 함수상태(State): 사용자가 마지막으로 물어본 도시를 기억하는 정보에이전트(Agent): 사용자의 질문을 해석하고 적절한 도구를 선택하는 AI1. 코드 전체 구조 먼저 보기여기서 꼭 구분해야 할 점이 있습니다. WEATHER_DB는 Python 코드 안에 있는 날씨 데이터이고, Postgr..

14. Session/Memory/Artifact [3] - DatabaseSessionService 활용Google ADK + PostgreSQL 정리(1/2)

Python 날씨 에이전트의 사용자 상태를 DB에 저장하고, 재시작 후에도 기억하는 과정입니다. 이번 실습의 목표는 단순히 날씨를 알려주는 AI 에이전트를 만드는 것이 아닌, Python으로 에이전트를 작성하고, PostgreSQL을 연결하고, ADK가 대화 상태를 데이터베이스에 저장하도록 만든 다음, 실제로 도시명이 저장되는지 검증하는 것이 핵심입니다. 이번에 성공한 환경을 기준으로 처음부터 다시 따라 할 수 있도록 정리하겠습니다. 코드 작성 순서와 실행·검증 절차에 집중하겠습니다.[전체 흐름 한눈에 보기]1. Python 날씨 에이전트 작성 오늘 날씨 / 내일 날씨 / 마지막 도시 상태 관리2. Python 패키지와 DB 드라이버 설치 Google ADK · SQLAlchemy · asyn..

13. Session/Memory/Artifact [2] - 세션 스테이트(session.state)를 활용한 핵심정보 선별적 관리(단기 기억)

앞서 살펴본 session.events(대화 기록 전체를 뒤져서 찾는 방식)와는 다르게, Google ADK의 session.state라는 명시적인 상태 저장소(Key-Value 딕셔너리 형태)를 활용해 단기 기억을 관리하는 예제입니다. 이 코드의 상세한 해설과 함께, 함수들을 tools 리스트에 등록하기만 하면 LLM이 이해할 수 있는 스키마(Schema)가 자동으로 생성되는 마법 같은 원리에 대해서도 아주 친절하게 설명해 드리겠습니다.1. 코드 라인별 상세 해설① 가상 날씨 데이터 준비 (WEATHER_DB)WEATHER_DB = { "서울": {"today": "맑음, 22도", "tomorrow": "비, 18도"}, "대전": {"today": "흐림, 20도", "tomorrow":..

12. Session/Memory/Artifact [1] - 세션 이벤트(session.events)를 활용한 대화 맥락(단기 기억)

아래 코드는 Google ADK 환경에서 세션 이벤트(session.events)를 활용해 대화 맥락(단기 기억)을 유지하고 활용하는 핵심 메커니즘을 구현한 예제입니다.사용자가 "서울 날씨 어때?"라고 물은 뒤, 바로 이어서 도시 이름 없이 "그럼 내일은?"이라고 물었을 때, 에이전트가 이전 대화 기록에서 "서울"이라는 단어를 스스로 찾아내어 정상적으로 답변할 수 있게 해주는 멋진 코드입니다.🕊️코드 요약 및 핵심 의미제목: 세션 이벤트(Session Events) 기반의 대화 맥락 기억 및 날씨 조회 에이전트핵심 의미:LLM은 기본적으로 이전 대화에서 언급된 특정 단어(도시명 등)를 도구(Tool) 파라미터로 매번 완벽하게 전달하지 못할 수 있습니다.이 코드에서는 tool_context.events라..