ADK, Agent Engine, AlloyDB를 사용한 멀티 에이전트 앱

ADK, Agent Engine, AlloyDB를 사용한 멀티 에이전트 앱

이 Codelab 정보

subject최종 업데이트: 6월 16, 2025
account_circle작성자: Author: Abirami Sukumaran

1. 개요

에이전트는 AI 모델과 소통하면서 보유한 도구와 컨텍스트를 사용해 목표 기반 작업을 수행하는 자율 프로그램으로, 진실에 기반한 자율적 의사 결정을 할 수 있습니다.

애플리케이션에 여러 에이전트가 있으며 각 에이전트가 독립적으로 지식을 보유하고 특정 관심 분야에 대한 책임을 지며 애플리케이션의 더 큰 목적을 충족하기 위해 필요에 따라 자율적으로 함께 작동하는 경우 애플리케이션은 멀티 에이전트 시스템이 됩니다.

에이전트 개발 키트 (ADK)

에이전트 개발 키트 (ADK)는 AI 에이전트를 개발하고 배포하기 위한 유연하고 모듈식 프레임워크입니다. ADK는 여러 개의 고유한 에이전트 인스턴스를 멀티 에이전트 시스템 (MAS)으로 구성하여 정교한 애플리케이션 빌드를 지원합니다.

ADK에서 멀티 에이전트 시스템은 계층 구조를 형성하는 경우가 많은 여러 에이전트가 협력하거나 조정하여 더 큰 목표를 달성하는 애플리케이션입니다. 이렇게 애플리케이션을 구성하면 향상된 모듈성, 전문성, 재사용성, 유지보수성, 전용 워크플로 에이전트를 사용하여 구조화된 제어 흐름을 정의하는 기능 등 상당한 이점을 얻을 수 있습니다.

멀티 에이전트 시스템에 유의해야 할 사항

첫째, 각 상담사의 전문 분야를 올바르게 이해하고 추론하는 것이 중요합니다. — '어떤 문제에 특정 하위 상담사가 필요한지 알고 계신가요?'라는 질문을 먼저 해결합니다.

둘째, 루트 에이전트와 함께 가져와 각 응답을 라우팅하고 이해하는 방법

세 번째, 이 문서에서 확인할 수 있는 여러 유형의 상담사 라우팅이 있습니다. 애플리케이션의 흐름에 맞는 방법을 선택하세요. 또한 멀티 에이전트 시스템의 흐름 제어에 필요한 다양한 컨텍스트와 상태는 무엇인가요?

빌드할 항목

주방 리노베이션을 처리하는 멀티 에이전트 시스템을 빌드해 보겠습니다. 이제 에이전트 3개로 시스템을 빌드해 보겠습니다.

  1. 리노베이션 제안서 상담사
  2. 허가 및 규정 준수 확인 상담사
  3. 주문 상태 확인 상담사

Renovation Proposal Agent: 주방 리노베이션 제안서 문서를 생성합니다.

허가 및 규정 준수 상담사: 허가 및 규정 준수 관련 작업을 처리합니다.

Order Status Check Agent: AlloyDB에 설정된 주문 관리 데이터베이스를 통해 자재의 주문 상태를 확인합니다.

요구사항에 따라 이러한 에이전트를 조정하는 루트 에이전트가 있습니다.

요구사항

  • 브라우저(Chrome 또는 Firefox 등)
  • 결제가 사용 설정된 Google Cloud 프로젝트.

2. 시작하기 전에

프로젝트 만들기

  1. Google Cloud 콘솔의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.
  2. Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요 .

또한 이 글을 읽고 Google Cloud를 시작하고 ADK를 사용하는 데 도움이 되는 크레딧을 받고 싶다면 이 링크를 사용하여 크레딧을 사용하세요. 여기의 안내에 따라 혜택을 사용하실 수 있습니다. 이 링크는 5월 말까지만 사용할 수 있습니다.

  1. 링크를 클릭하여 Cloud Shell을 활성화합니다. Cloud Shell에서 해당 버튼을 클릭하여 Cloud Shell 터미널 (클라우드 명령어 실행용)과 편집기 (프로젝트 빌드용) 간에 전환할 수 있습니다.
  2. Cloud Shell에 연결되면 다음 명령어를 사용하여 이미 인증되었는지, 프로젝트가 프로젝트 ID로 설정되어 있는지 확인합니다.
gcloud auth list
  1. Cloud Shell에서 다음 명령어를 실행하여 gcloud 명령어가 프로젝트를 알고 있는지 확인합니다.
gcloud config list project
  1. 프로젝트가 설정되지 않은 경우 다음 명령어를 사용하여 설정합니다.
gcloud config set project <YOUR_PROJECT_ID>
  1. Python 3.9 이상이 설치되어 있어야 합니다.
  2. 다음 명령어를 실행하여 다음 API를 사용 설정합니다.
gcloud services enable artifactregistry.googleapis.com \cloudbuild.googleapis.com \run.googleapis.com \aiplatform.googleapis.com
  1. gcloud 명령어 및 사용법은 문서를 참조하세요.

3. 프로토타입

프로젝트에 'Gemini 2.5 Pro' 모델을 사용하려는 경우 이 단계를 건너뛸 수 있습니다.

Google AI Studio로 이동합니다. 프롬프트에 입력을 시작합니다. 프롬프트는 다음과 같습니다.

I want to renovate my kitchen, basically just remodel it. I don't know where to start. So I want to use Gemini to generate a plan. For that I need a good prompt. Give me a short yet detailed prompt that I can use.

최적의 응답을 얻으려면 오른쪽에 있는 매개변수를 조정하고 구성합니다.

이 간단한 설명을 바탕으로 Gemini가 리노베이션을 시작할 수 있도록 매우 자세한 프롬프트를 제공했습니다. Google은 Gemini를 사용하여 AI 스튜디오와 Google 모델에서 더 나은 대답을 얻고 있습니다. 사용 사례에 따라 사용할 모델을 선택할 수도 있습니다.

Gemini 2.5 Pro를 선택했습니다. 이는 사고 모델이므로 긴 형식의 분석과 상세한 문서에 대해 더 많은 출력 토큰(이 경우 최대 65,000개)을 얻을 수 있습니다. Gemini 사고 상자는 네이티브 추론 기능이 있고 긴 컨텍스트 요청을 받을 수 있는 Gemini 2.5 Pro를 사용 설정하면 제공됩니다.

아래에서 응답 스니펫을 확인하세요.

a80d4bad4b3864f7.png

AI 스튜디오가 데이터를 분석하여 캐비닛, 카운터탑, 백플래시, 바닥재, 세면대, 일관성, 색상 팔레트, 재료 선택 등 모든 항목을 생성했습니다. Gemini에서 출처를 언급하기도 합니다.

결과가 만족스러울 때까지 다른 모델을 선택하여 반복합니다. 하지만 Gemini 2.5가 있으면 그렇게까지 할 필요가 없습니다. :)

이제 다른 프롬프트로 아이디어를 실현해 보세요.

Add flat and circular light accessories above the island area for my current kitchen in the attached image.

현재 주방의 이미지 (또는 샘플 주방 이미지) 링크를 첨부합니다. 이미지를 생성할 수 있도록 모델을 'Gemini 2.0 Flash 미리보기 이미지 생성'으로 변경합니다.

다음과 같은 출력이 표시되었습니다.

b5b1e83fcada28f5.png

이것이 바로 Gemini의 장점입니다.

동영상 이해부터 기본 이미지 생성, Google 검색으로 실제 정보에 그라운딩하는 작업까지 Gemini로만 가능한 작업이 있습니다.

AI 스튜디오에서 이 프로토타입을 가져와 API 키를 가져온 후 Vertex AI ADK의 기능을 사용하여 전체 에이전트 애플리케이션으로 확장할 수 있습니다.

4. ADK 설정

  1. 가상 환경 만들기 및 활성화 (권장)

Cloud Shell 터미널에서 가상 환경을 만듭니다.

python -m venv .venv

가상 환경을 활성화합니다.

source .venv/bin/activate
  1. ADK 설치
pip install google-adk

5. 프로젝트 구조

  1. Cloud Shell 터미널에서 원하는 프로젝트 위치에 디렉터리를 만듭니다.
mkdir agentic-apps
cd agentic
-apps
mkdir renovation
-agent
  1. Cloud Shell 편집기로 이동하여 파일을 만들어 다음과 같은 프로젝트 구조를 만듭니다 (처음에는 비어 있음).
renovation-agent/
        __init__
.py
        agent
.py
       
.env
        requirements
.txt

6. 소스 코드

  1. 'init.py'로 이동하여 다음 콘텐츠로 업데이트합니다.
from . import agent
  1. agent.py로 이동하여 다음 경로의 다음 콘텐츠로 파일을 업데이트합니다.
https://github.com/AbiramiSukumaran/adk-renovation-agent/blob/main/agent.py

agent.py에서는 필요한 종속 항목을 가져오고, .env 파일에서 구성 매개변수를 가져오고, 이 애플리케이션에서 만들기로 한 세 개의 하위 에이전트를 조정하는 root_agent를 정의합니다. 이러한 하위 상담사의 핵심 기능과 지원 기능에 도움이 되는 여러 도구가 있습니다.

  1. Cloud Storage 버킷이 있는지 확인

상담사가 생성하는 제안서 문서를 저장하기 위함입니다. Vertex AI로 만든 멀티 에이전트 시스템이 액세스할 수 있도록 만들고 액세스 권한을 제공합니다. 방법은 다음과 같습니다.

https://cloud.google.com/storage/docs/creating-buckets#console

버킷 이름을 'next-demo-store'로 지정합니다. 다른 이름을 지정하는 경우 ENV 변수 설정 단계에서 .env 파일의 STORAGE_BUCKET 값을 업데이트해야 합니다.

  1. 버킷에 대한 액세스 권한을 설정하려면 Cloud Storage 콘솔로 이동하여 스토리지 버킷으로 이동합니다 (이 경우 버킷 이름은 'next-demo-storage'임: https://console.cloud.google.com/storage/browser/next-demo-storage).

'권한 -> 주 구성원 보기 -> 액세스 권한 부여'로 이동합니다. 'allUsers'를 'Principals'로, 'Storage Object User'를 'Role'로 선택합니다.

Make sure to not enable "prevent public access". Since this is a demo/study application we are going with a public bucket. Remember to configure permission settings appropriately when you are building your application.
  1. 종속 항목 목록 만들기

requirements.txt에 모든 종속 항목을 나열합니다. 저장소에서 복사할 수 있습니다.

멀티 에이전트 시스템 소스 코드 설명

agent.py 파일은 에이전트 개발 키트 (ADK)를 사용하여 주방 리노베이션 멀티 에이전트 시스템의 구조와 동작을 정의합니다. 주요 구성요소를 살펴보겠습니다.

상담사 정의

RenovationProposalAgent

이 상담사는 주방 리모델링 제안서 문서를 작성합니다. 원하는 경우 주방 크기, 원하는 스타일, 예산, 고객 선호도와 같은 입력 매개변수를 사용합니다. 이 정보를 바탕으로 대규모 언어 모델 (LLM) Gemini 2.5를 사용하여 자세한 제안서를 생성합니다. 그러면 생성된 제안서가 Google Cloud Storage 버킷에 저장됩니다.

PermitsAndComplianceCheckAgent

이 상담사는 리노베이션 프로젝트가 현지 건축법규 및 규정을 준수하는지 확인하는 데 중점을 둡니다. 제안된 리노베이션 (예: 구조 변경, 전기 작업, 배관 수정)에 관한 정보를 수신하고 LLM을 사용하여 허가 요구사항 및 규정 준수 여부를 확인합니다. 상담사는 외부 API에 액세스하여 관련 규정을 수집하도록 맞춤설정할 수 있는 지식 베이스의 정보를 사용합니다.

OrderingAgent

이 에이전트는 리노베이션에 필요한 자재 및 장비의 주문 상태를 확인합니다(지금 구현하고 싶지 않은 경우 주석 처리할 수 있음). 이 기능을 사용 설정하려면 설정 단계에 설명된 대로 Cloud Run 함수를 만들어야 합니다. 그러면 상담사가 이 Cloud Run 함수를 호출하며, 이 함수는 주문 정보가 포함된 AlloyDB 데이터베이스와 상호작용합니다. 실시간 데이터를 추적하기 위해 데이터베이스 시스템과 통합하는 방법을 보여줍니다.

루트 에이전트 (Orchestrator)

root_agent는 멀티 에이전트 시스템의 중앙 조정자 역할을 합니다. 초기 리노베이션 요청을 수신하고 요청의 요구사항에 따라 호출할 하위 에이전트를 결정합니다. 예를 들어 요청에 허가 요건 확인이 필요한 경우 PermitsAndComplianceCheckAgent가 호출됩니다. 사용자가 주문 상태를 확인하려고 하면 OrderingAgent가 호출됩니다 (사용 설정된 경우).

그런 다음 root_agent는 하위 에이전트의 응답을 수집하고 이를 결합하여 사용자에게 포괄적인 응답을 제공합니다. 여기에는 제안서 요약, 필수 허가 목록, 주문 상태 업데이트 제공이 포함될 수 있습니다.

데이터 흐름 및 주요 개념

사용자가 ADK 인터페이스 (터미널 또는 웹 UI)를 통해 요청을 시작합니다.

  1. root_agent에서 요청을 수신합니다.
  2. root_agent는 요청을 분석하고 적절한 하위 에이전트로 라우팅합니다.
  3. 하위 에이전트는 LLM, 기술 자료, API, 데이터베이스를 사용하여 요청을 처리하고 응답을 생성합니다.
  4. 하위 에이전트는 응답을 root_agent에 반환합니다.
  5. root_agent는 응답을 결합하고 사용자에게 최종 출력을 제공합니다.

LLM (대규모 언어 모델)

에이전트는 텍스트를 생성하고, 질문에 답변하고, 추론 작업을 실행하는 데 LLM을 많이 사용합니다. LLM은 상담사가 사용자 요청을 이해하고 응답하는 기능의 '두뇌'입니다. 이 애플리케이션에서는 Gemini 2.5를 사용합니다.

Google Cloud Storage

생성된 리노베이션 제안서 문서를 저장하는 데 사용됩니다. 버킷을 만들고 상담사가 액세스하는 데 필요한 권한을 부여해야 합니다.

Cloud Run (선택사항)

OrderingAgent는 Cloud Run 함수를 사용하여 AlloyDB와 상호작용합니다. Cloud Run은 HTTP 요청에 대한 응답으로 코드를 실행하는 서버리스 환경을 제공합니다.

AlloyDB

OrderingAgent를 사용하는 경우 주문 정보를 저장할 AlloyDB 데이터베이스를 설정해야 합니다. 자세한 내용은 다음 섹션인 '데이터베이스 설정'에서 살펴보겠습니다.

.env 파일

.env 파일에는 API 키, 데이터베이스 사용자 인증 정보, 버킷 이름과 같은 민감한 정보가 저장됩니다. 이 파일을 안전하게 보관하고 저장소에 커밋하지 않는 것이 중요합니다. 또한 상담사 및 Google Cloud 프로젝트의 구성 설정을 저장합니다. root_agent 또는 지원 함수는 일반적으로 이 파일에서 값을 읽습니다. .env 파일에서 모든 필수 변수가 올바르게 설정되어 있는지 확인합니다. 여기에는 Cloud Storage 버킷 이름이 포함됩니다.

7. 데이터베이스 설정

ordering_agent에서 사용하는 도구 중 하나인 'check_status'에서 AlloyDB 주문 데이터베이스에 액세스하여 주문 상태를 가져옵니다. 이 섹션에서는 AlloyDB 데이터베이스 클러스터와 인스턴스를 설정합니다.

클러스터 및 인스턴스 만들기

  1. Cloud 콘솔에서 AlloyDB 페이지로 이동합니다. Cloud Console에서 대부분의 페이지를 찾는 가장 쉬운 방법은 콘솔의 검색창을 사용하는 것입니다.
  2. 이 페이지에서 클러스터 만들기를 선택합니다.

f76ff480c8c889aa.png

  1. 아래와 같은 화면이 표시됩니다. 다음 값으로 클러스터 및 인스턴스를 만듭니다 (저장소에서 애플리케이션 코드를 클론하는 경우 값이 일치하는지 확인).
  • 클러스터 ID: 'vector-cluster'
  • 비밀번호: "alloydb"
  • PostgreSQL 15 / 최신 버전 권장
  • 지역: "us-central1"
  • 네트워킹: 'default'

538dba58908162fb.png

  1. 기본 네트워크를 선택하면 아래와 같은 화면이 표시됩니다.

연결 설정을 선택합니다.
7939bbb6802a91bf.png

  1. 여기에서 '자동으로 할당된 IP 범위 사용'을 선택하고 계속을 클릭합니다. 정보를 검토한 후 '연결 만들기'를 선택합니다. 768ff5210e79676f.png
  2. 네트워크가 설정되면 클러스터를 계속 만들 수 있습니다. 클러스터 만들기를 클릭하여 아래와 같이 클러스터 설정을 완료합니다.

e06623e55195e16e.png

인스턴스 ID (클러스터 / 인스턴스 구성 시 확인 가능)를 다음으로 변경해야 합니다.

vector-instance. 변경할 수 없는 경우 향후 모든 참조에서 인스턴스 ID를 사용해야 합니다.

클러스터를 만드는 데 약 10분이 소요됩니다. 완료되면 방금 만든 클러스터의 개요를 보여주는 화면이 표시됩니다.

데이터 수집

이제 매장 데이터가 포함된 표를 추가하겠습니다. AlloyDB로 이동하여 기본 클러스터를 선택한 다음 AlloyDB Studio를 선택합니다.

847e35f1bf8a8bd8.png

인스턴스 생성이 완료될 때까지 기다려야 할 수 있습니다. 클러스터가 생성되면 클러스터를 만들 때 만든 사용자 인증 정보를 사용하여 AlloyDB에 로그인합니다. PostgreSQL에 인증할 때 다음 데이터를 사용합니다.

  • 사용자 이름 : 'postgres'
  • 데이터베이스 : 'postgres'
  • 비밀번호 : 'alloydb'

AlloyDB 스튜디오에 성공적으로 인증하면 편집기에 SQL 명령어가 입력됩니다. 마지막 창 오른쪽에 있는 더하기 기호를 사용하여 여러 편집기 창을 추가할 수 있습니다.

91a86d9469d499c4.png

필요에 따라 실행, 형식 지정, 지우기 옵션을 사용하여 편집기 창에 AlloyDB 명령어를 입력합니다.

테이블 만들기

AlloyDB Studio에서 아래 DDL 문을 사용하여 테이블을 만들 수 있습니다.

-- Table DDL for Procurement Material Order Status

CREATE TABLE material_order_status (
    order_id VARCHAR(50) PRIMARY KEY,
    material_name VARCHAR(100) NOT NULL,
    supplier_name VARCHAR(100) NOT NULL,
    order_date DATE NOT NULL,
    estimated_delivery_date DATE,
    actual_delivery_date DATE,
    quantity_ordered INT NOT NULL,
    quantity_received INT,
    unit_price DECIMAL(10, 2) NOT NULL,
    total_amount DECIMAL(12, 2),
    order_status VARCHAR(50) NOT NULL, -- e.g., "Ordered", "Shipped", "Delivered", "Cancelled"
    delivery_address VARCHAR(255),
    contact_person VARCHAR(100),
    contact_phone VARCHAR(20),
    tracking_number VARCHAR(100),
    notes TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    quality_check_passed BOOLEAN,  -- Indicates if the material passed quality control
    quality_check_notes TEXT,        -- Notes from the quality control check
    priority VARCHAR(20),            -- e.g., "High", "Medium", "Low"
    project_id VARCHAR(50),          -- Link to a specific project
    receiver_name VARCHAR(100),        -- Name of the person who received the delivery
    return_reason TEXT,               -- Reason for returning material if applicable
    po_number VARCHAR(50)             -- Purchase order number
);

레코드 삽입

위에 언급된 database_script.sql 스크립트에서 insert 쿼리 문을 편집기에 복사합니다.

실행을 클릭합니다.

이제 데이터 세트가 준비되었으므로 상태를 추출할 Java Cloud Run Functions 애플리케이션을 만들어 보겠습니다.

Java로 Cloud Run 함수를 만들어 주문 상태 정보를 추출합니다.

  1. 여기에서 Cloud Run 함수를 만듭니다. https://console.cloud.google.com/run/create?deploymentType=function
  2. 함수 이름을 'check-status'로 설정하고 'Java 17'을 런타임으로 선택합니다.
  3. 데모 애플리케이션이므로 인증을 '인증되지 않은 호출 허용'으로 설정할 수 있습니다.
  4. 런타임으로 Java 17을, 소스 코드의 인라인 편집기로 Java 17을 선택합니다.
  5. 이때 자리표시자 코드가 편집기에 로드됩니다.

자리표시자 코드 교체

  1. Java 파일의 이름을 'ProposalOrdersTool.java'로, 클래스 이름을 'ProposalOrdersTool'로 변경합니다.
  2. ProposalOrdersTool.java 및 pom.xml의 자리표시자 코드를 이 저장소의 'Cloud Run 함수' 폴더에 있는 각 파일의 코드로 바꿉니다.
  3. ProposalOrdersTool.java에서 다음 코드 줄을 찾아 자리표시자 값을 구성의 값으로 바꿉니다.
String ALLOYDB_INSTANCE_NAME = "projects/<<YOUR_PROJECT_ID>>/locations/us-central1/clusters/<<YOUR_CLUSTER>>/instances/<<YOUR_INSTANCE>>";
  1. '만들기'를 클릭합니다.
  2. Cloud Run 함수가 생성되고 배포됩니다.

중요 단계:

배포가 완료되면 Cloud 함수가 AlloyDB 데이터베이스 인스턴스에 액세스할 수 있도록 VPC 커넥터를 만듭니다.

배포가 완료되면 Google Cloud Run Functions 콘솔에서 함수를 볼 수 있습니다. 새로 만든 함수 (check-status)를 검색하여 클릭한 다음 새 버전 수정 및 배포 (Cloud Run Functions 콘솔 상단의 수정 아이콘 (펜)으로 표시됨)를 클릭하고 다음을 변경합니다.

  1. 네트워킹 탭으로 이동합니다.

828cd861864d99ea.png

  1. '아웃바운드 트래픽을 위해 VPC에 연결'을 선택한 다음 '서버리스 VPC 액세스 커넥터 사용'을 선택합니다.
  2. 네트워크 드롭다운 설정에서 네트워크 드롭다운을 클릭하고 기본을 아직 구성하지 않은 경우 '새 VPC 커넥터 추가' 옵션을 선택하고 팝업되는 대화상자에 표시되는 안내를 따릅니다.

6559ccfd10e597f2.png

  1. VPC 커넥터의 이름을 지정하고 리전이 인스턴스와 동일한지 확인합니다. 네트워크 값은 기본값으로 두고 서브넷을 맞춤 IP 범위로 설정하여 IP 범위를 10.8.0.0으로 설정하거나 사용 가능한 유사한 값을 설정합니다.
  2. '확장 설정 표시'를 펼치고 구성이 다음과 정확히 일치하는지 확인합니다.

199b0ccd80215004.png

  1. 만들기를 클릭하면 이 커넥터가 이그레스 설정에 표시됩니다.
  2. 새로 만든 커넥터를 선택합니다.
  3. 모든 트래픽이 이 VPC 커넥터를 통해 라우팅되도록 선택합니다.
  4. 다음을 클릭한 후 배포를 클릭합니다.
  5. 업데이트된 Cloud 함수가 배포되면 생성된 엔드포인트가 표시됩니다.
  6. Cloud Run Functions 콘솔 상단의 테스트 버튼을 클릭하고 결과 명령어를 Cloud Shell 터미널에서 실행하여 테스트할 수 있습니다.
  7. 배포된 엔드포인트는 .env 변수 CHECK_ORDER_STATUS_ENDPOINT에서 업데이트해야 하는 URL입니다.

8. 모델 설정

사용자 요청을 이해하고 응답을 생성하는 상담사의 기능은 대규모 언어 모델 (LLM)을 기반으로 합니다. 에이전트는 인증 사용자 인증 정보가 필요한 이 외부 LLM 서비스를 안전하게 호출해야 합니다. 유효한 인증이 없으면 LLM 서비스에서 에이전트의 요청을 거부하고 에이전트가 작동하지 않습니다.

  1. Google AI Studio에서 API 키를 가져옵니다.
  2. .env 파일을 설정하는 다음 단계에서 <<your API KEY>>를 실제 API 키 값으로 바꿉니다.

9. ENV 변수 설정

  1. 저장소의 템플릿 .env 파일에서 매개변수 값을 설정합니다. 제 경우에는 .env에 다음과 같은 변수가 있습니다.
GOOGLE_GENAI_USE_VERTEXAI=FALSE
GOOGLE_API_KEY=<<your API KEY>>
GOOGLE_CLOUD_LOCATION=us-central1 <<or your region>>
GOOGLE_CLOUD_PROJECT=<<your project id>>
PROJECT_ID=<<your project id>>
GOOGLE_CLOUD_REGION=us-central1 <<or your region>>
STORAGE_BUCKET=next-demo-store <<or your storage bucket name>>
CHECK_ORDER_STATUS_ENDPOINT=<<YOUR_ENDPOINT_TO_CLOUD FUNCTION_TO_READ_ORDER_DATA_FROM_ALLOYDB>>

자리표시자를 값으로 바꿉니다.

10. 에이전트 실행

  1. 터미널을 사용하여 상위 디렉터리로 이동합니다.
cd renovation-agent
  1. 모든 종속 항목 설치
pip install -r requirements.txt
  1. Cloud Shell 터미널에서 다음 명령어를 실행하여 에이전트를 실행할 수 있습니다.
adk run .
  1. 다음을 실행하여 ADK 프로비저닝된 웹 UI에서 실행할 수 있습니다.
adk web
  1. 다음 프롬프트를 사용하여 테스트합니다.
user>> 

Hello. Generate Proposal Document for the kitchen remodel requirement. I have no other specification.

12. Agent Engine에 배포

이제 멀티 에이전트 시스템이 제대로 작동하는지 테스트했으므로 누구나 / 어떤 애플리케이션이든 클라우드에서 서버리스로 사용할 수 있도록 만들어 보겠습니다. 저장소의 agent.py에서 아래 코드 스니펫의 주석 처리를 삭제하면 멀티 에이전트 시스템을 배포할 수 있습니다.

# Agent Engine Deployment:
# Create a remote app for our multiagent with agent Engine.
# This may take 1-2 minutes to finish.
# Uncomment the below segment when you're ready to deploy.

app = AdkApp(
    agent=root_agent,
    enable_tracing=True,
)

vertexai.init(
    project=PROJECT_ID,
    location=GOOGLE_CLOUD_LOCATION,
    staging_bucket=STAGING_BUCKET,
)

remote_app = agent_engines.create(
    app,
    requirements=[
        "google-cloud-aiplatform[agent_engines,adk]>=1.88",
        "google-adk",
        "pysqlite3-binary",
        "toolbox-langchain==0.1.0",
        "pdfplumber",
        "google-cloud-aiplatform",
        "cloudpickle==3.1.1",
        "pydantic==2.10.6",
        "pytest",
        "overrides",
        "scikit-learn",
        "reportlab",
        "google-auth",
        "google-cloud-storage",
    ],
)
# Deployment to Agent Engine related code ends

다음 명령어를 사용하여 프로젝트 폴더 내에서 이 agent.py를 다시 실행합니다.

>> cd adk-renovation-agent

>> python agent.py

이 코드가 완료되는 데 몇 분 정도 걸립니다. 완료되면 다음과 같은 엔드포인트가 표시됩니다.

'projects/123456789/locations/us-central1/reasoningEngines/123456'

새 파일 'test.py'를 추가하여 다음 코드로 배포된 에이전트를 테스트할 수 있습니다.

import vertexai
from vertexai.preview import reasoning_engines
from vertexai import agent_engines
import os
import warnings
from dotenv import load_dotenv
load_dotenv()


GOOGLE_CLOUD_PROJECT = os.environ["GOOGLE_CLOUD_PROJECT"]
GOOGLE_CLOUD_LOCATION = os.environ["GOOGLE_CLOUD_LOCATION"]
GOOGLE_API_KEY = os.environ["GOOGLE_API_KEY"]
GOOGLE_GENAI_USE_VERTEXAI=os.environ["GOOGLE_GENAI_USE_VERTEXAI"]
AGENT_NAME = "adk_renovation_agent"
MODEL_NAME = "gemini-2.5-pro-preview-03-25"
warnings.filterwarnings("ignore")
PROJECT_ID = GOOGLE_CLOUD_PROJECT

reasoning_engine_id = "<<YOUR_DEPLOYED_ENGINE_ID>>"

vertexai.init(project=PROJECT_ID, location="us-central1")
agent = agent_engines.get(reasoning_engine_id)
print("**********************")
print(agent)
print("**********************")


for event in agent.stream_query(
   
user_id="test_user",
   
message="I want you to check order status.",
):
   
print(event)

위 코드에서 자리표시자 '<<YOUR_DEPLOYED_ENGINE_ID>>'의 값을 바꾸고 'python test.py' 명령어를 실행하면 됩니다. 그러면 에이전트 엔진이 배포된 멀티 에이전트 시스템과 상호작용하고 주방을 리모델링할 준비가 됩니다.

13. 한 줄 배포 옵션

이제 배포된 멀티 에이전트 시스템을 테스트했으므로 이전 단계에서 수행한 배포 단계를 추상화하는 더 간단한 메서드인 한 줄 배포 옵션을 알아보겠습니다.

  1. Cloud Run으로:

구문:

adk deploy cloud_run \
--project=<<YOUR_PROJECT_ID>> \
--region=us-central1 \
--service_name=<<YOUR_SERVICE_NAME>> \
--app_name=<<YOUR_APP_NAME>> \
--with_ui \
./<<YOUR_AGENT_PROJECT_NAME>>

이 경우에는 다음과 같습니다.

adk deploy cloud_run \
--project=<<YOUR_PROJECT_ID>> \
--region=us-central1 \
--service_name=renovation-agent \
--app_name=renovation-app \
--with_ui \
./renovation-agent

다운스트림 통합에 배포된 엔드포인트를 사용할 수 있습니다.

  1. Agent Engine:

구문:

adk deploy agent_engine \
  --project <your-project-id> \
  --region us-central1 \
  --staging_bucket gs://<your-google-cloud-storage-bucket> \
  --trace_to_cloud \
  path/to/agent/folder

이 경우에는 다음과 같습니다.

adk deploy agent_engine --project <<YOUR_PROJECT_ID>> --region us-central1 --staging_bucket gs://<<YOUR_BUCKET_NAME>> --trace_to_cloud renovation-agent

Google Cloud 콘솔의 Agent Engine UI에 새 에이전트가 표시됩니다. 자세한 내용은 이 블로그를 참고하세요.

14. 삭제

이 게시물에서 사용한 리소스의 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.
  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력하고 종료를 클릭하여 프로젝트를 삭제합니다.

15. 축하합니다

축하합니다. ADK를 사용하여 첫 번째 상담사를 만들고 상호작용했습니다.