На этой странице описано, как настроить проект для Android, сконфигурировать библиотеку genai-agent и создать своего первого локального агента.
Требования
Прежде чем создавать агентные рабочие процессы с помощью Gemini Nano, убедитесь, что ваша среда соответствует следующим требованиям:
- Версия Android. Android 14 (уровень API 34) или более поздняя версия, зарегистрированная в программе предварительной версии AICore для разработчиков.
- Поддерживаемые устройства. Список поддерживаемых устройств и версий модели Gemini Nano, которые на них используются, можно найти в статье Поддержка устройств для агентов и пользовательских моделей.
- Минимальная версия SDK:
minSdk 26или выше. - Kotlin Kotlin 2.3 или более поздней версии.
Настройте проект
Добавьте зависимость genai-agent в файл build.gradle.kts модуля:
dependencies {
// Gemini Nano agentic workflows
implementation("com.google.mlkit:genai-agent:1.0.0-alpha1")
// Optional: Only required when defining tools using Android AppFunctions
implementation("androidx.appfunctions:appfunctions:1.0.0-alpha13")
ksp("androidx.appfunctions:appfunctions-compiler:1.0.0-alpha13")
}
Как создать первого агента
У агента есть два основных компонента:
- Определение агента. Инструкции и ограничения, определяющие поведение агента.
- Исполнитель агента. Механизм выполнения, который взаимодействует с AICore и управляет разговорами.
1. Настройте агент и исполнитель
В следующем примере кода показано, как определить агента с помощью системных инструкций и инициализировать класс AgentRunner:
import com.google.mlkit.genai.agent.Agent
import com.google.mlkit.genai.agent.AgentRunner
// 1. Build the agent configuration
val agent = Agent.builder()
.setName("Assistant")
.setInstructions("You are a helpful on-device assistant.")
.build()
// 2. Initialize the runner
val runner = AgentRunner(agent)
2. Как вести разговор
В многоэтапных разговорах история диалога сохраняется между этапами с помощью экземпляра AgentSession. Оберните текст запроса в объект Content и соберите потоковый ответ:
import android.util.Log
import androidx.lifecycle.lifecycleScope
import com.google.mlkit.genai.agent.textTokens
import com.google.mlkit.genai.prompt.Content
import kotlinx.coroutines.launch
// Create or retrieve a conversation session
val session = runner.getOrCreateSession("chat_session")
val prompt = Content.builder()
.text("Hello! Can you help me organize my day?")
.build()
// Collect streamed tokens in a coroutine
lifecycleScope.launch {
session.runAsync(prompt)
.textTokens()
.collect { token ->
Log.d("Agent", token)
}
}
Для разовых запросов, когда вам не нужно сохранять историю разговоров, вы можете вызвать метод runner.runSingleTurnAsync(prompt) напрямую:
lifecycleScope.launch {
runner.runSingleTurnAsync(prompt)
.textTokens()
.collect { token ->
Log.d("Agent", token)
}
}
3. Удаление ресурсов
Класс AgentRunner реализует интерфейс AutoCloseable. Когда компонент ViewModel или Activity уничтожается, закройте средство запуска, чтобы освободить активные сеансы активности и отменить фоновые сопрограммы:
runner.close()
Дальнейшие действия
- Добавьте возможности с помощью инструментов. Предоставьте агенту возможность выполнять действия или запрашивать данные приложения с помощью Android AppFunctions. Подробнее об определении инструментов…
- Сохранение сеансов при повороте экрана. Узнайте, как сохранить экземпляр
AgentSessionв классеViewModelпри изменении конфигурации, в разделе Управление сеансами и жизненным циклом. - Подключение к Compose. Передавайте события и показывайте интерактивные сообщения в интеграции событий и интерфейса Stream.