전체 글 224

24. Session/Memory/Artifact [13] - 통합형 Intelligence Agent

이번에는 단순히 load_artifact()와 list_artifacts()를 추가하는 수준을 넘어, GCS에 축적된 과거 보고서를 검색하고, 읽고, 요약하고, 서로 비교하는 통합형 Weather Intelligence Agent로 만드는 것이 좋겠습니다.이번 단계는 지금까지 공부한 ADK의 여러 기능을 하나로 연결하는 상당히 좋은 종합 실습입니다.이번 실습 목표: WeatherBot 2.0 – GCS Artifact 기반 보고서 관리·분석 에이전트 사용자 요청 에이전트가 수행할 작업 서울 날씨 보고서를 만들어 줘새 보고서 생성 및 GCS 저장지난번 서울 보고서를 보여줘GCS에서 과거 보고서 검색 및 조회지금까지 서울 보고서 목록을 보여줘Artifact 목록 조회서울 보고서 중 가장 최근 것을 읽어줘최신..

23. Session/Memory/Artifact [12]- ADK ArtifactService(2) : 에이전트가 생성한 파일(Artifact)을 Google Cloud Storage(GCS)에 영구적으로 저장하는 구

이번 실습은 지금까지 진행해 온 ADK의 세션(Session)과 메모리(Memory) 실습에서 한 단계 더 나아가는 중요한 과정입니다.이번에는 에이전트가 생성한 파일(Artifact)을 Google Cloud Storage(GCS)에 영구적으로 저장하는 구조를 이해하는 것이 핵심입니다.특히 이번 실습을 통해 다음과 같은 개념을 확실히 구분할 수 있어야 합니다.Agent: 사용자의 요청을 이해하고 작업을 수행하는 주체Tool: 실제 날씨 보고서를 생성하는 함수Artifact: 에이전트가 생성한 파일이나 결과물ArtifactService: Artifact를 저장하고 조회하는 서비스GcsArtifactService: Artifact를 Google Cloud Storage에 저장하는 서비스ToolContext:..

22. Session/Memory/Artifact [11]- ADK ArtifactService(1) : 파일 생성, 저장, 조회 및 관리 구조 이해하기

이번 실습은 앞서 공부한 SessionService, MemoryService에 이어 ADK의 세 번째 데이터 관리 서비스인 ArtifactService를 이해하는 과정입니다. 이번 코드는 단순히 날씨를 조회하는 에이전트를 만드는 것이 아닙니다.에이전트가 외부 정보를 수집하고, 그 결과를 문서 파일로 가공한 다음, ADK의 ArtifactService에 저장하는 전체 과정을 구현한 것입니다. 앞서 공부한 두 서비스와 비교하면 이해하기 쉽습니다. 서비스 관리 대상 핵심 역할 SessionService대화 이벤트사용자와 나눈 대화 관리MemoryService장기 기억과거 대화에서 중요한 정보 기억ArtifactService파일 및 산출물문서, 이미지, 데이터 파일 저장 및 조회예를 들어 AI 에이전트를 업..

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..