Интеграция 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 → analysis → report
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 аналитика full-time.
Архитектура 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 неделя







