Інтеграція Google ADK (Agent Development Kit)
Google Agent Development Kit (ADK) — фреймворк для побудови мульти-агентних систем на базі моделей Google (Gemini). ADK надає ієрархічну модель агентів: оркестратори (LlmAgent) координують субагентів, які можуть бути LLM-агентами, послідовними/паралельними workflow або кастомними агентами. Вбудована інтеграція з Vertex AI, Google Cloud та сервісами Search Grounding.
Базова структура ADK
# pip install google-adk
from google.adk.agents import LlmAgent, SequentialAgent, ParallelAgent
from google.adk.tools import google_search, FunctionTool
from google.adk.runners import Runner
from google.adk.sessions import InMemorySessionService
import asyncio
# Інструмент через FunctionTool
def get_stock_price(ticker: str) -> dict:
"""Отримати поточну ціну акції.
Args:
ticker: Тікер акції (наприклад, GOOGL, AAPL)
Returns:
dict з ціною, змінами та обсягом торгів
"""
data = finance_api.get_quote(ticker)
return {
"ticker": ticker,
"price": data["price"],
"change_percent": data["change_percent"],
"volume": data["volume"],
}
stock_tool = FunctionTool(func=get_stock_price)
# Базовий LLM-агент
research_agent = LlmAgent(
name="market_researcher",
model="gemini-2.0-flash",
instruction="""Ти — аналітик фінансового ринку.
Дослідж ринкові дані та надай структурований аналіз.
Завжди використовуй інструменти для отримання актуальних даних.""",
tools=[google_search, stock_tool],
output_key="research_result", # Ключ для передачі результату наступному агенту
)
# Запуск агента
session_service = InMemorySessionService()
runner = Runner(
agent=research_agent,
app_name="financial_analysis",
session_service=session_service,
)
SequentialAgent: Пайплайн обробки
from google.adk.agents import SequentialAgent, LlmAgent
from google.adk.tools import FunctionTool
# Послідовний пайплайн: дослідження → аналіз → звіт
research_step = LlmAgent(
name="researcher",
model="gemini-2.0-flash",
instruction="Дослідж тему, збери факти та дані.",
tools=[google_search, stock_tool],
output_key="raw_research",
)
analysis_step = LlmAgent(
name="analyst",
model="gemini-2.0-flash",
instruction="""Проаналізуй дані дослідження.
Дані доступні як: {raw_research}""",
output_key="analysis",
)
report_step = LlmAgent(
name="writer",
model="gemini-2.0-flash",
instruction="""Створи фінальний звіт на основі аналізу.
Аналіз: {analysis}""",
output_key="final_report",
)
pipeline = SequentialAgent(
name="analysis_pipeline",
sub_agents=[research_step, analysis_step, report_step],
)
ParallelAgent: Паралельне виконання
from google.adk.agents import ParallelAgent
# Паралельні незалежні завдання
financial_analyzer = LlmAgent(
name="financial",
model="gemini-2.0-flash",
instruction="Аналізуй фінансові показники компанії.",
tools=[get_financial_data],
output_key="financial_analysis",
)
market_analyzer = LlmAgent(
name="market",
model="gemini-2.0-flash",
instruction="Аналізуй ринкове положення та конкурентів.",
tools=[google_search, get_market_data],
output_key="market_analysis",
)
risk_analyzer = LlmAgent(
name="risk",
model="gemini-2.0-flash",
instruction="Оцінь ризики та загрози.",
tools=[google_search, get_regulatory_data],
output_key="risk_analysis",
)
# Паралельний аналіз трьох напрямків
parallel_analysis = ParallelAgent(
name="due_diligence_parallel",
sub_agents=[financial_analyzer, market_analyzer, risk_analyzer],
)
# Синтезатор результатів
synthesizer = LlmAgent(
name="synthesizer",
model="gemini-2.0-pro",
instruction="""Синтезуй результати паралельного аналізу в єдиний звіт.
Фінанси: {financial_analysis}
Ринок: {market_analysis}
Ризики: {risk_analysis}""",
output_key="dd_report",
)
# Повний пайплайн DD
dd_pipeline = SequentialAgent(
name="due_diligence",
sub_agents=[parallel_analysis, synthesizer],
)
Ієрархічний мульти-агент (Orchestrator)
from google.adk.agents import LlmAgent
# Оркестратор із субагентами
orchestrator = LlmAgent(
name="coordinator",
model="gemini-2.0-flash",
instruction="""Ти — координатор завдань.
Делегуй завдання спеціалізованим агентам за їх призначенням.
Не виконуй завдання сам — завжди використовуй субагентів.""",
# Субагенти стають інструментами оркестратора
sub_agents=[research_step, financial_analyzer, report_step],
)
# ADK автоматично створює інструменти transfer_to_{agent_name}
# Оркестратор викликає їх через function calling
Search Grounding з Vertex AI
from google.adk.tools import GroundingTool
from google.adk.tools.grounding import GoogleSearchRetrieval, VertexAISearchRetrieval
# Grounding через Google Search (актуальні дані)
search_grounding = GroundingTool(
google_search_retrieval=GoogleSearchRetrieval()
)
# Grounding через Vertex AI Search (корпоративні документи)
enterprise_grounding = GroundingTool(
vertex_ai_search_retrieval=VertexAISearchRetrieval(
datastore="projects/my-project/locations/global/collections/default/dataStores/my-datastore"
)
)
grounded_agent = LlmAgent(
name="grounded_analyst",
model="gemini-2.0-flash",
instruction="Відповідай на питання, використовуючи актуальні дані з корпоративної бази.",
tools=[enterprise_grounding],
)
Розгортання на Vertex AI Agent Builder
# ADK агенти розгортаються нативно на Vertex AI
from google.adk.cli import deploy_to_vertex
# Структура проекту
# my_agent/
# __init__.py
# agent.py # містить root_agent = LlmAgent(...)
# tools.py
# agent.py
from google.adk.agents import LlmAgent
from .tools import get_data, process_data
root_agent = LlmAgent(
name="production_agent",
model="gemini-2.0-flash",
instruction="...",
tools=[get_data, process_data],
)
# Розгортання: adk deploy --project my-gcp-project --region us-central1
Практичний кейс: система мониторингу конкурентів
Компанія: FMCG, відділ маркетингової аналітики. Моніторинг 15 конкурентів вимагав 3 аналітиків на повну ставку.
Архітектура ADK:
# Паралельний збір даних по кожному конкуренту
competitor_agents = [
LlmAgent(
name=f"monitor_{company}",
model="gemini-2.0-flash",
instruction=f"Монітори активність {company}: новини, зміни цін, запуски продуктів.",
tools=[google_search, web_scraper, price_tracker],
output_key=f"data_{company}",
)
for company in competitors
]
parallel_monitor = ParallelAgent(name="parallel_monitor", sub_agents=competitor_agents)
trend_analyzer = LlmAgent(
name="trend_analyzer",
model="gemini-2.0-pro",
instruction="Аналізуй зібрані дані, виявляй паттерни та тренди.",
output_key="trends",
)
report_generator = LlmAgent(
name="reporter",
model="gemini-2.0-flash",
instruction="Створи тижневий дайджест для CMO. Формат: executive summary + деталі.",
output_key="weekly_report",
)
monitoring_pipeline = SequentialAgent(
name="competitive_intelligence",
sub_agents=[parallel_monitor, trend_analyzer, report_generator],
)
Результати:
- Охоплення конкурентів: 15 → 32 компанії
- Час підготовки тижневого звіту: 3 дні → 40 хвилин
- Швидкість реакції на зміни цін конкурентів: 3 дні → 2 години
- Аналітики переорієнтовані на стратегічні рішення
Часові рамки
- Базовий LlmAgent з інструментами: 2–3 дні
- Sequential/Parallel пайплайни: 3–5 днів
- Ієрархічний оркестратор: 1–2 тижні
- Розгортання на Vertex AI: 3–5 днів
- Production-ready з моніторингом: +1 тиждень







