Na tej stronie dowiesz się, jak skonfigurować projekt aplikacji na Androida, skonfigurować bibliotekę genai-agent i utworzyć pierwszego agenta na urządzeniu.
Wymagania wstępne
Zanim utworzysz przepływy pracy oparte na agentach za pomocą Gemini Nano, upewnij się, że Twoje środowisko spełnia te wymagania:
- Wersja Androida: Android 14 (poziom interfejsu API 34) lub nowszy zarejestrowany w programie wersji przedpremierowej AICore dla deweloperów.
- Obsługiwane urządzenia: listę obsługiwanych urządzeń i wersji modelu Gemini Nano znajdziesz w artykule Obsługa niestandardowego generowania i agentów na urządzeniach.
- Minimalna wersja pakietu SDK:
minSdk 26lub nowsza. - Kotlin Kotlin 2.3 lub nowszy.
Skonfiguruj projekt
Dodaj zależność genai-agent do pliku build.gradle.kts modułu:
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")
}
Tworzenie pierwszego agenta
Agent składa się z 2 głównych komponentów:
- Definicja agenta: instrukcje i ograniczenia konfigurujące zachowanie agenta.
- Agent runner: silnik wykonawczy, który komunikuje się z AICore i zarządza rozmowami.
1. Konfigurowanie agenta i modułu uruchamiającego
Poniższy przykładowy kod pokazuje, jak zdefiniować agenta za pomocą instrukcji systemowych i zainicjować klasę 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. Prowadzenie rozmowy
Rozmowy wieloetapowe zachowują historię dialogu między etapami za pomocą instancji AgentSession. Umieść tekst prompta w obiekcie Content i zbierz odpowiedź przesyłaną strumieniowo:
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)
}
}
W przypadku jednorazowych zapytań, gdy nie musisz zachowywać historii rozmów, możesz bezpośrednio wywołać metodę runner.runSingleTurnAsync(prompt):
lifecycleScope.launch {
runner.runSingleTurnAsync(prompt)
.textTokens()
.collect { token ->
Log.d("Agent", token)
}
}
3. Czyszczenie zasobów
Klasa AgentRunner implementuje interfejs AutoCloseable. Gdy komponent ViewModel lub Activity zostanie zniszczony, zamknij runnera, aby zwolnić aktywne sesje i anulować współprogramy działające w tle:
runner.close()
Dalsze kroki
- Dodawanie funkcji za pomocą narzędzi: daj agentowi możliwość podejmowania działań lub wysyłania zapytań o dane aplikacji za pomocą funkcji aplikacji na Androida. Więcej informacji znajdziesz w sekcji Definiowanie narzędzi.
- Zachowywanie sesji podczas rotacji: dowiedz się, jak zachować instancję
AgentSessionw klasieViewModelpodczas zmian konfiguracji w sekcji Zarządzanie sesjami i cyklem życia. - Połączenie z Compose: przesyłanie strumieniowe zdarzeń i renderowanie interaktywnych dymków czatu w sekcji Przesyłanie strumieniowe zdarzeń i integracja interfejsu.