프로코드 & 멀티 에이전트 실전 트랙

Track 4. Custom Agent Solutions

최신 Google ADK 2.3.0과 Gemini 3.6 Flash를 활용하여 실제 엔터프라이즈 도메인 로직(BigQuery 데이터 분석, Human-in-the-Loop 결재 승인, A2A 멀티 에이전트 협업)을 구축하고, Vertex AI Agent Runtime(Agent Engine) 배포 및 Gemini Enterprise 사내 앱(n26-unified)에 커스텀 에이전트로 등록하는 전 과정을 실습합니다.

예상 소요 시간 ⏱️ 약 60분
실습 대상 👥 AI 엔지니어, 풀스택 개발자, 클라우드 아키텍트
실습 난이도 ⚡ 전문가 (High-Code & Multi-Agent)
활용 도구 🛠️ Google ADK 2.3.0, Gemini 3.6 Flash, Agent Runtime, BigQuery
📦

Track 4 전체 실습 소스코드 패키지

3대 실전 에이전트 소스코드, 의존성 파일(requirements.txt), 원클릭 배포 스크립트(deploy.sh)가 모두 포함된 통합 압축 파일입니다.

🚀

실습 환경 준비 및 빠른 시작 가이드 (Quick Start)

고객사 및 실습 환경에서 압축 패키지(track4_custom_agents.zip)를 받아 즉시 실행할 수 있도록 기본 환경을 구성합니다.

1. 사전 준비 및 GCP 인증

gcloud auth login
gcloud auth application-default login
gcloud services enable aiplatform.googleapis.com discoveryengine.googleapis.com bigquery.googleapis.com

2. 패키지 해제 및 환경 변수 주입

unzip track4_custom_agents.zip && cd track4
pip install -r requirements.txt

export GOOGLE_CLOUD_PROJECT="YOUR_GCP_PROJECT_ID"
export REGION="us-central1"
export GE_APP_ID="projects/NUM/.../engines/APP_ID"
🔒 엔터프라이즈 백엔드 연동 원리 (Vertex AI vs Google AI Studio)

본 실습 코드는 GOOGLE_GENAI_USE_VERTEXAI="TRUE" 설정을 통해 개인용 AI Studio 키가 아닌 Google Cloud Vertex AI API (aiplatform.googleapis.com)를 호출합니다. 이를 통해 고객 데이터의 모델 재학습 방지, 사내 IAM 인증, VPC Service Controls 등 엔터프라이즈 보안 거버넌스가 보장됩니다.

💡 실습 진행 3단계 워크플로우
  1. 4.1 ~ 4.3 로컬 실습: 로컬 터미널에서 스크립트를 실행하고 테스트 프롬프트로 에이전트 동작을 검증합니다.
  2. 4.4 클라우드 배포: ./deploy.sh 스크립트로 Vertex AI Agent Runtime에 배포하고 사내 앱에 등록합니다.
  3. 계층형 검증: 3-Tier Inspection Pipeline(gcloud, Agent Card cURL, Cloud Console)으로 운영 상태를 점검합니다.
💬 사내 Gemini Enterprise에서 커스텀 에이전트를 사용하는 2가지 방식
  • 전용 에이전트 진입: Gemini Enterprise 웹 앱 좌측 메뉴의 Agents 탭에서 Track 4 Custom Agent를 직접 클릭해 1:1 전용 대화방에서 업무를 진행합니다.
  • 인라인 @ 멘션 호출: 일반 사내 채팅창에서 업무 도중 @Track 4 Custom Agent [지출 요청 내용]처럼 @ 태그로 에이전트를 호출하여 특정 작업만 즉시 위임할 수 있습니다 (4.2 HITL 결재 실습에서 활용).
🏛️

Track 4 엔터프라이즈 아키텍처 및 네트워크 보안 흐름

Gemini Enterprise Platform, VPC Service Controls 보안 경계, Vertex AI Agent Runtime 및 사내 BigQuery/ERP 데이터 연동의 4계층 엔드투엔드 아키텍처입니다.

Track 4 엔터프라이즈 아키텍처 및 네트워크 흐름 다이어그램
💡 4계층 보안 격리 아키텍처: Cloud Identity & SSO → Gemini Enterprise Platform → VPC-SC 보안 경계 → Vertex AI Agent Runtime & BigQuery 이미지를 클릭하면 원본 크기로 확대됩니다

4대 인프라 및 보안 영역별 기술 구조

1계층

User & Client Tier (사용자 및 신원 인증)

  • 엔드유저 접속 환경: 사내 브라우저 기반 Gemini Enterprise 웹 앱 및 Google Workspace 클라이언트.
  • 신원 및 기기 인증: Cloud Identity 및 SAML 2.0/OIDC SSO를 통해 IAM 인증 토큰을 발급받습니다.
  • Context-Aware Access (CAA): 인가된 사내 IP 대역 및 단말 보안 정책을 통과한 사용자만 플랫폼에 접근하도록 통제합니다.
2계층

Gemini Enterprise Platform (구글 관리형 플랫폼)

  • Gemini Enterprise Web App: 사내 임직원이 1:1 대화 또는 인라인 @멘션으로 에이전트를 호출하는 통합 AI 포털.
  • Agent Registry & Router: 어드민이 등록한 에이전트 메타데이터(Reasoning Engine ID, Skills) 카탈로그를 관리하고 질의를 라우팅합니다.
  • Discovery Engine API: discoveryengine.googleapis.com을 통해 에이전트 등록 및 세션 라이프사이클을 제어합니다.
3계층

Security & Network Perimeter (보안 격리 경계)

  • VPC Service Controls (VPC-SC): 고객 데이터와 AI 런타임을 서비스 경계 내에 격리하여 비인가 외부 반출을 차단합니다.
  • Vertex AI :streamQuery API: Google 사설 백본 네트워크 상에서 roles/aiplatform.user IAM 기반 상호 인증 gRPC/REST 터널로 통신합니다.
  • 종단간 암호화: 모든 요청과 응답 페이로드는 TLS 1.3 및 전송 구간 암호화(In-Transit Encryption)로 보호됩니다.
4계층

Customer GCP Project & VPC (고객 실행 및 데이터)

  • Vertex AI Agent Runtime (Reasoning Engine): 격리된 마이크로 컨테이너 환경에서 Google ADK 2.3.0 및 Gemini 3.6 Flash 모델 구동.
  • 사내 데이터 연동: BigQuery 읽기 전용 가드레일(SELECT/WITH, 스키마 탐색) 및 ERP 결재 게이트웨이(HITL 300만원 분기) 실행.
  • 감사 및 거버넌스: 도구 실행 내역이 Cloud Audit Logs에 기록되며, 고객 데이터 모델 재학습 0% 원칙이 준수됩니다.
⚡ 7단계 실시간 엔드투엔드 요청 생명주기 (Execution Lifecycle)
1
사용자 질의 입력: 임직원이 Gemini Enterprise 웹 앱에서 @Track 4 Custom Agent 지난달 매출 브리핑해줘 호출.
2
Agent Registry 카탈로그 조회: Gemini Enterprise가 프롬프트 의도를 분석하여 등록된 Reasoning Engine 리소스 식별.
3
VPC-SC 경계 통과 및 스트리밍 호출: IAM 상호 인증을 거쳐 :streamQuery 채널로 Agent Runtime 컨테이너 구동.
4
ADK 2.3.0 도구 자율 계획 (Tool Calling): 컨테이너 내부에서 Gemini 3.6 Flash 모델이 테이블 스키마 탐색 및 SQL 쿼리 생성 순서를 수립.
5
사내 리소스 조회 및 정책 실행: BigQuery 안전 읽기(4.1), HITL 300만원 전결 분기(4.2), 멀티 에이전트 순차 협업(4.3) 수행.
6
인사이트 집계 및 응답 생성: 도구 실행 결과 데이터를 집계하여 마크다운 집계 표와 3줄 핵심 인사이트(Key Takeaways) 생성.
7
실시간 스트리밍 출력: 사용자 웹 앱 화면에 분석 리포트가 점진적으로 지연 없이 실시간 출력.
4.1

BigQuery Data & SQL Analytics Agent

실제 BigQuery 테이블 스키마를 동적으로 탐색하고 읽기 전용 Standard SQL을 실행하여 경영진 브리핑 리포트를 자율 생성합니다.

1) BigQuery 테이블 연동 2단계 자율 분석 파이프라인

📋
1. Schema Discovery
get_table_schema 호출로 컬럼·타입 검증
2. Safe SQL Query
query_bigquery_table (SELECT/WITH 가드레일)
📊
3. Executive Briefing
마크다운 집계 표 & 3줄 Key Takeaways
Python ADK 2.3.0 data_agent.py (BigQuery 분석 에이전트 소스코드)
import os from typing import Optional from google.adk.agents import Agent from google.adk.apps import App from google.adk.models import Gemini from google.cloud import bigquery from google.genai import types # 최신 Vertex AI 추론 모델 지정 (Gemini 3.6 Flash) MODEL_NAME = "gemini-3.6-flash" def get_table_schema(table_id: str) -> dict: """BigQuery 테이블의 컬럼 이름, 데이터 타입, 설명 등 스키마 정보를 동적으로 조회합니다.""" # [고객 환경 설정]: 환경 변수 GOOGLE_CLOUD_PROJECT 또는 실제 GCP 프로젝트 ID 주입 project_id = os.environ.get("GOOGLE_CLOUD_PROJECT", "YOUR_GCP_PROJECT_ID") try: client = bigquery.Client(project=project_id) table = client.get_table(table_id.strip().strip("`")) fields = [ {"name": f.name, "type": f.field_type, "mode": f.mode, "description": f.description or "설명 없음"} for f in table.schema ] return {"status": "SUCCESS", "table_id": table_id, "num_rows": table.num_rows, "fields": fields} except Exception as e: return {"status": "ERROR", "message": f"테이블 스키마 조회 실패 ({table_id}): {str(e)}"} def query_bigquery_table(sql_query: str) -> dict: """BigQuery 데이터셋에서 읽기 전용 SELECT 쿼리를 실행하고 실제 테이블 레코드를 반환합니다.""" # 1. 보안 가드레일: SELECT/WITH 읽기 전용 쿼리만 허용 clean_sql = sql_query.strip().upper() if not clean_sql.startswith("SELECT") and not clean_sql.startswith("WITH"): return {"error": "보안 정책상 SELECT 및 WITH 읽기 전용 쿼리만 실행할 수 있습니다."} # 2. BigQuery 클라이언트 초기화 및 쿼리 실행 project_id = os.environ.get("GOOGLE_CLOUD_PROJECT", "YOUR_GCP_PROJECT_ID") try: client = bigquery.Client(project=project_id) job = client.query(sql_query) rows = [dict(row) for row in job.result(max_results=50)] return {"status": "SUCCESS", "row_count": len(rows), "records": rows} except Exception as e: return {"status": "ERROR", "error_detail": str(e), "guidance": "BigQuery 테이블 경로를 정확히 지정하세요."} # 3. Google ADK Agent 정의 및 도구 바인딩 root_agent = Agent( name="bigquery_data_analyst", model=Gemini(model=MODEL_NAME, retry_options=types.HttpRetryOptions(attempts=3)), instruction="""당신은 Google Cloud BigQuery 기반의 엔터프라이즈 데이터 분석 전문가입니다. [동작 원칙] 1. 테이블 스키마 파악: 특정 테이블에 대한 분석 요청이 오면 먼저 `get_table_schema`를 호출하여 정확한 컬럼명과 타입을 확인하세요. 2. 표준 SQL 작성 및 실행: 스키마를 기반으로 표준 GoogleSQL SELECT 쿼리를 작성하여 `query_bigquery_table`을 호출하세요. - 공개 데이터셋: `bigquery-public-data.thelook_ecommerce.orders` - 사내 데이터셋: `YOUR_GCP_PROJECT_ID.retail_data.sales_records` 3. 분석 및 시각화 브리핑: 반환된 실제 쿼리 레코드를 바탕으로 마크다운 표와 3줄 핵심 인사이트(Key Takeaways)를 작성하세요. 4. 보안 가드레일: 읽기 전용(SELECT/WITH) 쿼리만 생성하며 DDL/DML은 절대 실행하지 않습니다.""", tools=[get_table_schema, query_bigquery_table], ) app = App(root_agent=root_agent, name="bigquery_analytics_app")

2) 실습 테스트용 프롬프트 (Test Prompts)

아래 프롬프트를 복사하여 로컬 터미널, Cloud Shell 또는 Agent Runtime에 질의하세요.

🛒 테스트 시나리오 1: 공개 이커머스 주문 현황 분석
bigquery-public-data.thelook_ecommerce.orders 테이블의 스키마를 확인하고, 주문 상태(status)별 주문 건수 상위 5개를 집계해서 표와 3줄 핵심 인사이트로 브리핑해줘.
📈 테스트 시나리오 2: 배송 완료 주문 성별 및 구매 패턴 분석
thelook_ecommerce 데이터셋에서 배송 완료(Complete)된 주문의 성별(gender) 분포와 평균 구매 품목 수를 분석해줘.

시나리오 1. 주문 상태 집계

프롬프트 입력 화면
BigQuery 분석 프롬프트 입력 화면
주문 상태(status)별 상위 5개 집계 요청 입력
BigQuery 분석 결과
BigQuery 분석 실행 결과 화면
스키마 메타데이터 및 주문 상태별 집계 표 브리핑

시나리오 2. 배송 완료 주문 성별 분포

프롬프트 입력 화면
배송 완료 주문 분석 프롬프트 입력 화면
배송 완료 주문의 성별 분포 및 평균 구매 품목 분석 질의
성별 분포 및 인사이트
성별 분포 분석 결과 화면
남성(50.3%) / 여성(49.7%) 및 3줄 핵심 인사이트 도출
4.2

Human-in-the-Loop (HITL) ERP Approval Agent

부서별 예산 잔액을 실시간 검증하고, 전결 규정 금액(300만 원) 초과 시 자동으로 인간 관리자 결재 티켓을 발급하는 거버넌스 에이전트입니다.

Python ADK 2.3.0 hitl_agent.py (HITL ERP 결재 에이전트 소스코드)
from google.adk.agents import Agent from google.adk.apps import App from google.adk.models import Gemini from google.genai import types # 최신 Vertex AI 추론 모델 지정 (Gemini 3.6 Flash) MODEL_NAME = "gemini-3.6-flash" def check_department_budget(department: str) -> dict: """부서별 당월 잔여 예산 한도를 조회합니다 (ERP 연동).""" # 실제 환경에서는 SAP, Oracle 등 사내 ERP/DB API와 연동됩니다. budgets = { "마케팅팀": {"total": 50000000, "spent": 32000000, "remaining": 18000000}, "개발1팀": {"total": 80000000, "spent": 45000000, "remaining": 35000000}, "영업본부": {"total": 60000000, "spent": 58000000, "remaining": 2000000}, } return budgets.get(department, {"total": 30000000, "spent": 10000000, "remaining": 20000000}) def evaluate_and_request_approval(department: str, amount: int, item_name: str, reason: str) -> dict: """지출 결재를 요청하고 전결 규정에 따라 자동 승인 또는 HITL 결재 티켓을 발급합니다.""" # 전결 규정 기준 금액: 3,000,000 KRW (300만 원) APPROVAL_THRESHOLD = 3000000 budget_info = check_department_budget(department) # 1. 예산 초과 검증 (Budget Guardrail) if amount > budget_info["remaining"]: return { "status": "REJECTED_BUDGET_EXCEEDED", "message": f"잔여 예산({budget_info['remaining']:,}원) 초과로 결재가 자동 반려되었습니다." } # 2. 전결 기준 초과 시 인간 관리자 승인 분기 (HITL) if amount > APPROVAL_THRESHOLD: ticket_id = f"APPR-2026-{abs(hash(item_name + reason)) % 10000:04d}" return { "status": "REQUIRES_HUMAN_APPROVAL", "ticket_id": ticket_id, "request_amount_krw": amount, "message": f"지출 금액({amount:,}원)이 전결 기준({APPROVAL_THRESHOLD:,}원)을 초과하여 부서장 결재 티켓이 발급되었습니다.", "approval_link": f"https://erp.enterprise-corp.com/approvals/{ticket_id}" } # 3. 전결 기준 이하 시 자동 승인 (Auto-Approval) return { "status": "AUTO_APPROVED", "ticket_id": f"AUTO-{abs(hash(item_name)) % 10000:04d}", "message": f"{department}의 {item_name} 지출({amount:,}원)이 전결 규정에 따라 자동 승인되었습니다." } root_agent = Agent( name="erp_approval_bot", model=Gemini(model=MODEL_NAME, retry_options=types.HttpRetryOptions(attempts=3)), instruction="""사내 전사적 자원 관리(ERP) 지출 결재 거버넌스 에이전트입니다. 1. 사용자의 요청에서 부서, 품목, 금액, 사유를 정확히 추출하세요. 2. `check_department_budget`으로 예산 잔액을 먼저 확인하세요. 3. `evaluate_and_request_approval` 도구를 호출하여 규정 준수 여부를 검토하세요. 4. 관리자 승인이 필요한 경우 승인 링크와 티켓 번호를 강조하여 안내하세요.""", tools=[check_department_budget, evaluate_and_request_approval], ) app = App(root_agent=root_agent, name="erp_approval_app")

2) 실습 테스트용 프롬프트 (Test Prompts)

조건별 3가지 분기 시나리오를 각각 테스트하세요.

🟢 시나리오 A: 300만 원 이하 전결 자동 승인 (Auto-Approval)
마케팅팀에서 신규 디자인 소프트웨어 연간 구독료로 150만 원 지출 결재를 올려줘. 사유는 2분기 SNS 마케팅 콘텐츠 제작용이야.
🟡 시나리오 B: 300만 원 초과 관리자 결재 티켓 발급 (HITL)
개발1팀에서 고성능 AI 개발 워크스테이션 구매를 위해 750만 원 지출 승인을 요청해. 사유는 온디바이스 모델 경량화 테스트용이야.
🔴 시나리오 C: 잔여 예산 초과 자동 반려 (Budget Exceeded)
영업본부에서 글로벌 파트너사 세미나 대관비로 500만 원 지출 승인을 올려줘.

시나리오 1. 150만 원 전결 자동 승인 (@멘션)

@ 태그 멘션 호출
@멘션 호출 및 150만 원 지출 요청
사내 채팅에서 @Track 4 Custom Agent 태그로 150만 원 결재 요청
전결 자동 승인 결과
자동 승인 및 티켓 발급 화면
예산 잔액 확인 후 전결 기준 이하 자동 승인 (티켓 AUTO-4959)

시나리오 2. 750만 원 관리자 결재 티켓 발급 (@멘션)

@ 태그 멘션 호출
@멘션 호출 및 750만 원 지출 요청
750만 원 고성능 워크스테이션 지출 승인 요청
부서장 결재 티켓 발급
부서장 결재 티켓 및 링크 화면
300만 원 초과로 관리자 승인 티켓(APPR-2026-9249) 및 결재 링크 생성
4.3

Multi-Agent Collaboration Pipeline (A2A)

시장 조사 전문 에이전트와 재무 분석 전문 에이전트를 상위 총괄 디렉터(Supervisor Agent)가 조율하여 C-Level 보고서를 합성하는 멀티 에이전트 시스템입니다.

1) A2A 오케스트레이션 파이프라인 소스코드 (`multi_agent.py`)

Python ADK 2.3.0 multi_agent.py (멀티 에이전트 협업 소스코드)
from google.adk.agents import Agent from google.adk.apps import App from google.adk.models import Gemini from google.genai import types MODEL_NAME = "gemini-3.6-flash" def calculate_cagr(start_val: float, end_val: float, years: int) -> float: """초기값, 최종값, 경과 연수를 받아 연평균 복합 성장률(CAGR)을 계산합니다.""" if start_val <= 0 or years <= 0: return 0.0 return round((((end_val / start_val) ** (1.0 / years)) - 1.0) * 100.0, 2) # 1. 시장 조사 전담 서브 에이전트 (Market Researcher) researcher = Agent( name="market_researcher", model=Gemini(model=MODEL_NAME), instruction="글로벌 IT 및 클라우드 시장 동향, 경쟁 구도, 기회 요인을 구조화하여 요약하세요.", description="시장 조사 전담 서브 에이전트", ) # 2. 재무 지표 및 CAGR 계산 전담 서브 에이전트 (Financial Analyst) financial_analyst = Agent( name="financial_analyst", model=Gemini(model=MODEL_NAME), instruction="시장 데이터와 calculate_cagr 툴을 활용하여 연평균 성장률(CAGR)과 재무 지표를 계산하세요.", tools=[calculate_cagr], description="재무 및 성장성 계산 전담 서브 에이전트", ) # 3. 최상위 총괄 디렉터 (Supervisor Agent) strategy_director = Agent( name="strategy_director", model=Gemini(model=MODEL_NAME, retry_options=types.HttpRetryOptions(attempts=3)), instruction="""당신은 신사업 전략 기획 총괄 수석 디렉터입니다. 1. `market_researcher` 서브 에이전트로 시장 기회를 조사하세요. 2. `financial_analyst` 서브 에이전트로 성장률(CAGR)을 계산하세요. 3. 두 산출물을 종합하여 C-Level 보고용 '1-Page Strategy Blueprint'를 완성하세요.""", sub_agents=[researcher, financial_analyst], ) app = App(root_agent=strategy_director, name="strategy_orchestrator_app")

2) 실습 테스트용 프롬프트 (Test Prompt)

최상위 총괄 디렉터(Root Agent)에 고수준 목표를 입력하여 하위 에이전트 위임과 결과 합성을 검증하세요.

🚀 멀티 에이전트 협업: 생성형 AI 신사업 진출 1-Page 전략 기획
2026년 글로벌 생성형 AI 엔터프라이즈 솔루션 시장 진출을 위한 1-Page 신사업 전략 기획서를 작성해줘. 2024년 400억 달러에서 2028년 1,300억 달러로 성장할 때 연평균 성장률(CAGR)과 실행 로드맵을 포함해줘.

3) 파이프라인 실행 및 오케스트레이션 추적 로그 (Execution Trace)

[Pipeline Init] strategy_orchestrator_app 시작
├── [Step 1: Supervisor -> market_researcher 위임] 글로벌 AI 시장 규모 및 산업별 트렌드 조사 완료
├── [Step 2: Supervisor -> financial_analyst 위임] calculate_cagr(400.0, 1300.0, 4) -> CAGR 34.28% 반환
└── [Step 3: Supervisor 종합 합성] 마크다운 1-Page Strategy Blueprint 및 3단계 실행 로드맵 생성 완료

4) 파이프라인 실행 검증 캡처

멀티 에이전트 전략 기획서 생성 결과

프롬프트 입력 화면
멀티 에이전트 신사업 기획 프롬프트 입력
2026년 생성형 AI 신사업 진출 1-Page 전략 기획서 및 CAGR 요청
오케스트레이션 합성 결과
멀티 에이전트 1-Page 전략 보고서 합성 결과
시장 조사, CAGR(34.27%) 계산 및 실행 로드맵 표 종합 브리핑
4.4

Agent Runtime 배포 & Gemini Enterprise 사내 앱 등록

GCP 프로젝트의 Vertex AI Agent Runtime(Reasoning Engine)에 에이전트를 컨테이너로 배포하고, Gemini Enterprise 사내 앱에 커스텀 에이전트로 등록합니다.

☁️
1. Agent Runtime 배포
Vertex AI Reasoning Engine
🏢
2. Gemini Enterprise 등록
ADK Native StreamQuery
3. 사내 임직원 실사용
Gemini Enterprise 웹 앱 호출

1) 원클릭 배포 & 등록 명령어 (`deploy.sh`)

CLI Deploy & Publish deploy.sh (고객 프로젝트 배포 및 GE 등록 스크립트)
# 1. 환경 변수 설정 (고객 및 실습 프로젝트 환경에 맞게 입력) export GOOGLE_CLOUD_PROJECT="YOUR_GCP_PROJECT_ID" export REGION="us-central1" # Gemini Enterprise App 전체 리소스 ID (형식: projects/{PROJECT_NUM}/locations/global/collections/default_collection/engines/{APP_ID}) export GE_APP_ID="projects/YOUR_PROJECT_NUMBER/locations/global/collections/default_collection/engines/YOUR_APP_ID" # 2. Vertex AI Agent Runtime(Reasoning Engine) 컨테이너 배포 agents-cli deploy --project="${GOOGLE_CLOUD_PROJECT}" --region="${REGION}" --deployment-target=agent_runtime --service-name="track4-custom-agent" --no-confirm-project # 3. Gemini Enterprise 사내 앱에 ADK 네이티브 연동으로 커스텀 에이전트 등록 agents-cli publish gemini-enterprise --registration-type adk --agent-runtime-id "projects/YOUR_PROJECT_NUMBER/locations/us-central1/reasoningEngines/YOUR_REASONING_ENGINE_ID" --gemini-enterprise-app-id "${GE_APP_ID}" --display-name "Track 4 Custom Agent" --description "BigQuery 분석, HITL ERP 결재, Multi-Agent 협업 전담 커스텀 에이전트" --tool-description "BigQuery 데이터 분석, ERP 결재 승인, CAGR 성장률 계산"

2) 3단계 계층형 엔터프라이즈 검증 체계 (3-Tier Inspection Pipeline)

Layer 1. Vertex AI Agent Runtime 프로비저닝 검증 Infrastructure Probe
검증 목적: 관리형 마이크로 VM 컨테이너가 정상 프로비저닝되어 ACTIVE 상태로 서빙 중인지 gcloud CLI로 확인합니다.
터미널 실행 명령어:
gcloud ai reasoning-engines list --region=us-central1 --format="table(name,displayName,createTime,state)"
기대 출력 (Output Evidence):
NAME DISPLAY_NAME CREATE_TIME STATE projects/YOUR_PROJECT_NUM/.../reasoningEngines/YOUR_ID track4-custom-agent 2026-08-14T02:00:00Z ACTIVE
  • state 필드가 ACTIVE로 출력되는지 확인합니다.
  • 서비스 계정 service-{PROJECT_NUM}@gcp-sa-aiplatform-re.iam.gserviceaccount.com이 정상 바인딩되었는지 확인합니다.
Layer 2. A2A Agent Card 표준 메타데이터 계약 검증 Protocol & Contract Probe
검증 목적: 배포된 에이전트가 W3C/A2A 표준 스펙에 따라 툴(BigQuery/ERP)과 입출력 스키마를 외부에 정상 노출하는지 cURL 엔드포인트를 프로브합니다.
터미널 실행 명령어:
curl -s -H "Authorization: Bearer $(gcloud auth print-access-token)" https://us-central1-aiplatform.googleapis.com/reasoningEngines/v1/projects/${GOOGLE_CLOUD_PROJECT}/locations/us-central1/reasoningEngines/${REASONING_ENGINE_ID}/api/a2a/app/.well-known/agent-card.json | jq .
기대 출력 (JSON Schema Response):
{ "name": "track4-custom-agent", "description": "BigQuery Data Analyst & ERP Approval Bot", "protocolVersion": "0.3.0", "capabilities": { "streaming": true, "tools": ["get_table_schema", "query_bigquery_table"] }, "authentication": { "type": "iam_token" } }
  • HTTP 200 OK 응답과 함께 tools 배열에 정의한 도구들이 모두 포함되었는지 확인합니다.
  • IAM 인증이 필수 적용되어 비인가 외부 요청이 차단되는지 검증합니다.
Layer 3. Gemini Enterprise 사내 앱 등록 및 IAM 바인딩 검증 Enterprise Registry Probe
검증 목적: Gemini Enterprise 앱의 Agent Registry에 에이전트가 바인딩되어 사내 Gemini Enterprise 웹 앱에서 즉시 사용 가능한지 확인합니다.
  • 콘솔 경로: Cloud Console > Gemini Enterprise > 엔진 관리 > Assistants > Custom Agents
  • 등록 모드: adk (Native StreamQuery IAM 직접 연결) 상태 확인
  • 사내 가시성: 사내 Gemini 채팅창의 에이전트 선택 드롭다운에 Track 4 Custom Agent가 표시되는지 확인

3) Gemini Enterprise 콘솔 등록 단계별 가이드

./deploy.sh 스크립트 실행 후 또는 수동 등록 시, 관리자 콘솔(Cloud Console > Gemini Enterprise > Agents)에서 에이전트를 사내 앱으로 등록하는 3단계 UI 워크플로우입니다.

1단계: + Add agent 클릭
어드민 콘솔 Add agent 클릭
사내 Agents 관리 테이블에서 우측 상단 + Add agent 버튼을 클릭합니다.
2단계: 등록 유형 선택
등록 유형 선택 화면
Custom agent via Agent Runtime 또는 Custom agent via A2A를 선택합니다.
3단계: Agent Card 검증
Agent Card JSON 임포트 및 Preview
배포된 Agent Card JSON 규약을 확인하고 에이전트 기능(Skills)과 URL을 승인합니다.

4) 최종 등록 완료 및 서비스 개시 화면

관리자 콘솔 (Admin View)
Cloud Console의 Gemini Enterprise 에이전트 목록 등록 화면
Cloud Console > Gemini Enterprise > Agents table에 Track 4 Custom Agent가 Agent Engine 유형으로 정상 등록된 모습
사용자 진입 화면 (User View)
Gemini Enterprise 사내 에이전트 첫 진입 화면
사내 임직원이 Gemini Enterprise 웹 앱 좌측 Agents 목록에서 Track 4 Custom Agent를 클릭하여 진입한 초기 대기 화면
💡 ADK 등록 방식(ADK Registration)의 동작 원리
Cloud Run의 A2A HTTP Webhook 호출 방식과 달리, Agent Runtime의 ADK 네이티브 등록은 Gemini Enterprise가 Vertex AI의 :streamQuery 엔드포인트를 통해 IAM 엔드투엔드 보안 인증으로 에이전트를 직접 스트리밍 호출합니다. 이를 통해 사내 인가 및 개인화 컨텍스트가 안전하게 에이전트로 전달됩니다.
1단계: + Add agent 클릭 1 / 3
확대 단계 화면
× 확대 이미지