Создавайте агентные рабочие процессы с помощью Gemini Nano

Агентные рабочие процессы ML Kit (com.google.mlkit:genai-agent, альфа-версия) позволяют создавать автономные многоэтапные разговорные интерфейсы на устройстве на базе Gemini Nano и системного сервиса Android AICore.

Класс AgentRunner, созданный на основе класса GenerativeModel (прямой доступ к модели), автоматизирует полные, ориентированные на цель циклы агентов непосредственно в вашем приложении: наблюдает за контекстом, рассуждает о входных данных пользователя, действует с помощью типизированных инструментов Kotlin и оценивает обратную связь до тех пор, пока не будет выполнено условие завершения.

Распространенные паттерны агентов

Агентные рабочие процессы на устройстве оптимизированы для целенаправленных детерминированных циклов рассуждений, в которых намерение пользователя преобразуется в структурированные действия приложения. Распространенные шаблоны включают:

Графический ключ

Пример

Выполнение действий в приложении и ярлыки

Перевод запросов на естественном языке в команды для приложений, например для редактирования фотографий, изменения настроек воспроизведения или переключения параметров приложения.

Структурированный поиск и локальные вычисления

получение определенной записи по идентификатору (например, состояние заказа или баланс аккаунта) и выполнение многоэтапных математических расчетов (например, амортизация кредита или фитнес-показатели).

Фильтрация и отбор в режиме диалога

Интерактивные запросы и уточнение элементов локального приложения, например поиск по локальному списку задач, фильтрация плейлиста или сортировка элементов каталога на основе критериев пользователя.

Пошаговый ввод данных

Пошаговое руководство по вводу структурированных данных с проверкой промежуточных входных данных с помощью локальных инструментов перед окончательной отправкой.

Производительность и конфиденциальность на устройстве

Агентные рабочие процессы выполняются в Android AICore, что обеспечивает конфиденциальность и высокую скорость работы прямо на устройстве пользователя.

  • Локальные рассуждения и конфиденциальность запросов. Рассуждения и планирование модели выполняются полностью на устройстве без задержек в сети. Данные запросов пользователей остаются конфиденциальными на устройстве. Однако отдельные инструменты, реализованные в вашем приложении, могут выполнять сетевые вызовы или запрашивать облачные API, если для вашего сценария использования требуются внешние данные.
  • Управляемые многоэтапные сеансы. Интерфейс AgentSession сохраняет историю разговора в памяти на протяжении всех этапов, поэтому вам не нужно управлять расшифровками вручную. Вы можете освободить память в любой момент, используя методы session.close(), deleteSession(sessionId) или clearAllSessions().
  • Ограничения на выполнение. В конфигурациях агента задается максимальное количество реплик (maxTurns, по умолчанию 10) в качестве условия завершения, чтобы предотвратить бесконечные циклы выполнения, сэкономить заряд батареи и обеспечить отзывчивость устройства.

Выбирайте между пользовательской генерацией, агентами и API для конкретных задач

В ML Kit возможности генеративного ИИ на устройстве разделены по уровню настройки и оркестрации, которые требуются для вашей функции:

  • Пользовательская генерация и агенты. Работайте напрямую с базовой моделью Gemini Nano, если для вашей функции требуются пользовательские инструкции или логика, специфичная для домена. Выберите рабочие процессы с агентами (с использованием класса AgentRunner, созданного на основе класса GenerativeModel), если вам нужны управляемые многоэтапные сеансы и автоматизированные циклы вызова инструментов. Если же вам нужны настраиваемые запросы, типизированные структурированные выходные данные или управляемая клиентом история многоэтапных сеансов, выберите прямой доступ к модели (с использованием класса GenerativeModel).
  • Речь и аудио. Используйте специальные модели речи и генеративного ИИ (например, распознавание речи), чтобы преобразовывать голосовое аудио в текст.
  • Задачи с текстом и изображениями. Используйте предварительно настроенные типы функций для конкретных задач и оптимизированные адаптеры LoRA поверх общей базовой модели (например, описание изображения, краткий пересказ, проверка правописания и переписывание) для готовых сценариев использования зрения и письма без подготовки запросов.

В таблице ниже сравниваются эти подходы.

готовность;

Рабочие процессы с агентами (AgentRunner)

Прямой доступ к модели (GenerativeModel)

API для задач с текстом и изображениями

Архитектура

Высокоуровневый уровень оркестрации, построенный на основе GenerativeModel.

Прямой интерфейс к базовой модели Gemini Nano для пользовательских запросов.

Типы функций для конкретных задач, поддерживаемые оптимизированными адаптерами LoRA, которые работают на основе общей базовой модели.

Контекст многоэтапного диалога

Управляемые многоэтапные сеансы (AgentSession). Автоматически сохраняет историю разговора в памяти на всех этапах, поэтому вам не нужно вручную управлять расшифровками (также поддерживается кратковременное одноэтапное выполнение).

Контекст нескольких ходов, управляемый клиентом. GenerateContentRequest поддерживает многоэтапные разговоры (роли List<Content> и USERMODEL ) и sessionId для разработчиков, которые хотят управлять историей чата напрямую.

Вызовы задач без сохранения состояния и с одним вводом.

Вызов инструментов и действия

Автоматический цикл вызова инструментов. Обнаруживает зарегистрированные функции Android AppFunctions, выполняет вызовы, выбранные моделью, и автоматически передает результаты обратно в модель.

Декларации инструментов, управляемых клиентом. GenerateContentRequest принимает схемы инструментов и отправляет запросы на вызов функций, которые ваше приложение должно выполнить и вернуть вручную.

Неприменимо (фиксированный конвейер задач).

Когда использовать

Используйте, если вам нужна автоматическая оркестрация для многоэтапного выполнения инструментов и управляемых многоэтапных сеансов в памяти.

Используйте для собственных запросов, мультимодального распознавания изображений, типизированных структурированных выходных данных (@Generable) или когда вы хотите напрямую управлять собственной историей чата или отправкой инструментов.

Используйте, если ваша функция соответствует стандартной задаче по написанию текста или распознаванию изображений и вы хотите получить готовое качество от настроенных LoRA с минимальной настройкой.

Дальнейшие действия