반응형
여행의 모든 걸 도와주는 스마트 AI 비서를 ADK로 만들어볼 시간입니다. 이번 글에서는 3개의 전문 Agent와 이를 오케스트레이션하는 TravelPlannerAgent를 만들어, 목적지 추천부터 날씨 확인, 짐 리스트 제안까지 연결되는 AI 팀워크를 구성합니다.
🧠 목표
- 목적지 추천 Agent, 날씨 Agent, 짐 리스트 Agent를 각각 정의
- SequentialAgent를 이용해 순차적인 워크플로우 구현
- 사용자의 단 한마디에 모든 Agent가 협업하는 시스템 완성
👥 전체 에이전트 구성
Agent 이름 | 역할 | 설명 |
destination_agent | 목적지 추천 | 계절, 날씨, 유럽/아시아 여부 기반 추천 |
weather_agent | 날씨 확인 | 이전 글에서 만든 도구 기반 Agent |
packing_agent | 짐 리스트 생성 | 날씨 기반으로 짐 리스트 제안 |
travel_planner | 종합 오케스트레이터 | 위 세 Agent를 순차적으로 호출 후 결과 통합 |
🛠 Step 1. 목적지 추천 Agent
def recommend_destination(region: str, season: str) -> str:
"""여행 추천 도시 반환"""
if region == "유럽" and season == "봄":
return "파리"
elif region == "아시아" and season == "여름":
return "오사카"
else:
return "바르셀로나"
from google.adk.agents import Agent
from google.genai import types
destination_agent = Agent(
model="gemini-2.0-flash-001",
name="destination_agent",
description="계절과 지역에 따라 여행 목적지를 추천합니다.",
instruction="유럽, 아시아 등의 지역과 계절(봄, 여름 등)을 받아 여행지를 추천해 주세요.",
generate_content_config=types.GenerateContentConfig(temperature=0.5),
tools=[recommend_destination],
)
🌤 Step 2. 날씨 Agent
Part 2에서 만든 weather_agent를 그대로 사용합니다.
2025.04.20 - [분류 전체보기] - [AI 에이전트 프로젝트] 🌤️ Part 2. 날씨 전문가 Agent 만들기: 도구를 사용하는 Google ADK 실전 예제
Tool: get_weather(city: str)
🧳 Step 3. 짐 리스트 생성 Agent
def suggest_packing_items(weather: str) -> str:
"""날씨에 따라 짐 목록을 추천합니다."""
if "비" in weather:
return "우산, 방수 신발, 얇은 자켓"
elif "맑음" in weather:
return "선크림, 선글라스, 반팔 옷"
else:
return "가벼운 겉옷, 긴팔 셔츠, 여분의 신발"
packing_agent = Agent(
model="gemini-2.0-flash-001",
name="packing_agent",
description="날씨에 따라 필요한 여행 짐을 추천합니다.",
instruction="날씨 설명(맑음, 비 등)을 입력받아 알맞은 짐 리스트를 추천하세요.",
generate_content_config=types.GenerateContentConfig(temperature=0.5),
tools=[suggest_packing_items],
)
🧭 Step 4. 여행 플래너 Agent (멀티에이전트 오케스트레이터)
from google.adk.agents import SequentialAgent
travel_planner = SequentialAgent(
name="travel_planner_agent",
description="사용자의 여행 조건을 바탕으로 목적지 추천 → 날씨 확인 → 짐 준비 리스트를 종합해서 응답합니다.",
sub_agents=[destination_agent, weather_agent, packing_agent],
)
⚙️ Step 5. Runner 설정 및 사용자 질의 함수
from google.adk.runners import Runner
from google.adk.sessions import InMemorySessionService
from google.adk.artifacts import InMemoryArtifactService
from google.genai import types
session_service = InMemorySessionService()
artifact_service = InMemoryArtifactService()
runner = Runner(
app_name="travel_planner_app",
agent=travel_planner,
artifact_service=artifact_service,
session_service=session_service,
)
def ask_travel_planner(query: str):
session = session_service.create_session(app_name="travel_planner_app", user_id="user")
content = types.Content(role="user", parts=[types.Part(text=query)])
events = runner.run(user_id="user", session_id=session.id, new_message=content)
for event in events:
if event.is_final_response():
print("📦 최종 응답:", event.content.parts[0].text)
if event.get_function_calls():
for fn in event.get_function_calls():
print(f"🔧 함수 호출: {fn.name}({fn.args})")
if event.get_function_responses():
for fr in event.get_function_responses():
print(f"✅ 함수 응답: {fr.name} → {fr.response}")
🧪 예시 실행
ask_travel_planner("이번 봄에 유럽 어디로 여행 가면 좋을까요?")
🔄 예상 흐름
- destination_agent: “파리 추천”
- weather_agent: “맑음, 최고 21도”
- packing_agent: “선크림, 반팔, 선글라스”
- travel_planner: 모든 결과 종합하여 응답
요약
지금까지 우리는 Google ADK로 다음을 구현했습니다:
- 각 역할별 Agent 정의
- Python 함수 기반 Tool 연결
- SequentialAgent로 에이전트 팀 오케스트레이션
- 전체 여행 플로우 자동화
반응형
'AI 공부 > AI 에이전트 (AI Agents)' 카테고리의 다른 글
구글 ADK 🔧 Google Cloud로 나만의 AI 에이전트를 만드는 방법 (1) | 2025.04.21 |
---|---|
🤖 🧠 Agentic RAG 에이전트 RAG 란 무엇인가? (1) | 2025.04.21 |
[AI 에이전트 프로젝트] ✈️ Part 1. 여행비서의 탄생: Google ADK로 나만의 AI Agent 만들기 (2) | 2025.04.20 |
🤖 AI끼리 말이 안 통해? 구글 A2A가 해결한다! 📡 (1) | 2025.04.14 |
⚙️ Sampling과 Root — 서버가 모델을 호출하고, 파일에 접근하는 법 (0) | 2025.04.04 |