Оптимизация с учетом ресурсов позволяет интеллектуальным агентам динамически отслеживать и управлять вычислительными, временными и финансовыми ресурсами во время работы. Это отличается от простого планирования, которое в основном фокусируется на последовательности действий. Оптимизация с учетом ресурсов требует от агентов принятия решений относительно выполнения действий для достижения целей в рамках заданных бюджетов ресурсов или для оптимизации эффективности. Это включает выбор между более точными, но дорогими моделями и более быстрыми, менее затратными, или принятие решения о выделении дополнительных вычислительных ресурсов для более точного ответа по сравнению с быстрым, менее подробным ответом.
Например, рассмотрим агента, которому поручено анализировать большой набор данных для финансового аналитика. Если аналитику немедленно требуется предварительный отчет, агент может использовать более быструю и доступную модель для быстрого суммирования ключевых тенденций. Однако, если аналитику требуется высокоточный прогноз для критически важного инвестиционного решения, и у него есть больший бюджет и больше времени, агент выделит больше ресурсов для использования мощной, более медленной, но более точной прогностической модели. Ключевой стратегией в этой категории является механизм отката (fallback), который действует как защита, когда предпочтительная модель недоступна из-за перегрузки или дросселирования. Для обеспечения плавной деградации система автоматически переключается на модель по умолчанию или более доступную, поддерживая непрерывность обслуживания вместо полного сбоя.
Практические варианты использования включают:
Интеллектуальная система для ответов на вопросы пользователей может оценивать сложность каждого вопроса. Для простых запросов она использует экономичную языковую модель, такую как Gemini Flash. Для сложных запросов рассматривается более мощная, но дорогая языковая модель (например, Gemini Pro). Решение об использовании более мощной модели также зависит от доступности ресурсов, в частности, от бюджетных и временных ограничений. Эта система динамически выбирает подходящие модели.
Например, рассмотрим планировщик путешествий, построенный с использованием иерархического агента. Высокоуровневое планирование, которое включает понимание сложного запроса пользователя, разбиение его на многоэтапный маршрут и принятие логических решений, будет управляться сложной и более мощной LLM, такой как Gemini Pro. Это агент «планировщик», который требует глубокого понимания контекста и способности к рассуждению.
Однако, как только план установлен, отдельные задачи в этом плане, такие как поиск цен на авиабилеты, проверка наличия мест в отелях или поиск отзывов о ресторанах, по сути являются простыми, повторяющимися веб-запросами. Эти «вызовы функций инструмента» могут быть выполнены более быстрой и доступной моделью, такой как Gemini Flash. Легче представить, почему доступная модель может использоваться для этих простых веб-поисков, в то время как сложная фаза планирования требует большей интеллектуальности более продвинутой модели для обеспечения связного и логичного плана путешествия.
Google ADK поддерживает этот подход через свою многоагентную архитектуру, которая позволяет создавать модульные и масштабируемые приложения. Различные агенты могут обрабатывать специализированные задачи. Гибкость модели позволяет напрямую использовать различные модели Gemini, включая как Gemini Pro, так и Gemini Flash, или интегрировать другие модели через LiteLLM. Возможности оркестровки ADK поддерживают динамическую, управляемую LLM маршрутизацию для адаптивного поведения. Встроенные функции оценки позволяют систематически оценивать производительность агента, что может быть использовано для усовершенствования системы (см. Главу об оценке и мониторинге).
Далее будут определены два агента с идентичной настройкой, но использующие разные модели и затраты.
codePython
from google.adk.agents import Agent
# from google.adk.models.lite_llm import LiteLlm
# (если используются модели, не поддерживаемые напрямую по умолчанию ADK Agent)
# Агент, использующий более дорогую Gemini Pro 2.5
gemini_pro_agent = Agent(
name="GeminiProAgent",
model="gemini-2.5-pro", # Заглушка для фактического имени модели, если отличается
description="Высокопроизводительный агент для сложных запросов.",
instruction="Вы эксперт-помощник для решения сложных проблем."
)
# Агент, использующий менее дорогую Gemini Flash 2.5
gemini_flash_agent = Agent(
name="GeminiFlashAgent",
model="gemini-2.5-flash", # Заглушка для фактического имени модели, если отличается
description="Быстрый и эффективный агент для простых запросов.",
instruction="Вы быстрый помощник для простых вопросов."
)
Агент-маршрутизатор (Router Agent) может направлять запросы на основе простых метрик, таких как длина запроса, где более короткие запросы направляются к менее дорогим моделям, а более длинные — к более мощным. Однако более сложный Агент-маршрутизатор может использовать LLM или ML-модели для анализа нюансов и сложности запроса. Этот LLM-маршрутизатор может определить, какая последующая языковая модель наиболее подходит. Например, запрос, требующий фактического ответа, направляется к модели Flash, в то время как сложный запрос, требующий глубокого анализа, направляется к модели Pro.
Методы оптимизации могут дополнительно повысить эффективность LLM-маршрутизатора. Настройка промптов (Prompt tuning) включает создание промптов для направления LLM-маршрутизатора к более эффективным решениям маршрутизации. Тонкая настройка LLM-маршрутизатора на наборе данных запросов и оптимальных вариантов моделей повышает его точность и эффективность. Эта динамическая возможность маршрутизации балансирует качество ответа с экономической эффективностью.