Начало работы с агентными рабочими процессами

На этой странице описано, как настроить проект для Android, сконфигурировать библиотеку genai-agent и создать своего первого локального агента.

Требования

Прежде чем создавать агентные рабочие процессы с помощью Gemini Nano, убедитесь, что ваша среда соответствует следующим требованиям:

Настройте проект

Добавьте зависимость 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()

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