Erste Schritte mit Agentic Workflows

Auf dieser Seite wird beschrieben, wie Sie Ihr Android-Projekt einrichten, die genai-agent-Bibliothek konfigurieren und Ihren ersten On-Device-Agenten erstellen.

Vorbereitung

Bevor Sie agentische Workflows mit Gemini Nano erstellen, müssen Sie dafür sorgen, dass Ihre Umgebung die folgenden Anforderungen erfüllt:

Projekt konfigurieren

Fügen Sie der Datei build.gradle.kts Ihres Moduls die Abhängigkeit genai-agent hinzu:

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")
}

Ersten KI-Agenten erstellen

Ein Agent besteht aus zwei Hauptkomponenten:

  • Definition des KI-Agenten: Anweisungen und Schutzmaßnahmen, die das Verhalten des KI-Agenten konfigurieren.
  • Agent Runner: Die Ausführungs-Engine, die mit AICore kommuniziert und Unterhaltungen verwaltet.

1. Agent und Runner konfigurieren

Im folgenden Codebeispiel wird gezeigt, wie Sie Ihren Agenten mit Systemanweisungen definieren und die Klasse AgentRunner initialisieren:

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. Unterhaltung führen

Bei Multi-Turn-Unterhaltungen wird der Dialogverlauf über mehrere Runden hinweg mithilfe einer AgentSession-Instanz beibehalten. Verpacken Sie den Prompt-Text in ein Content-Objekt und erfassen Sie die gestreamte Antwort:

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)
        }
}

Für einmalige Abfragen, bei denen Sie den Unterhaltungsverlauf nicht beibehalten müssen, können Sie die Methode runner.runSingleTurnAsync(prompt) direkt aufrufen:

lifecycleScope.launch {
    runner.runSingleTurnAsync(prompt)
        .textTokens()
        .collect { token ->
            Log.d("Agent", token)
        }
}

3. Ressourcen bereinigen

Die Klasse AgentRunner implementiert die Schnittstelle AutoCloseable. Wenn die Komponente ViewModel oder Activity gelöscht wird, schließen Sie den Runner, um aktive Sitzungen freizugeben und Hintergrund-Coroutinen abzubrechen:

runner.close()

Nächste Schritte

  • Funktionen über Tools hinzufügen: Sie können Ihrem Agenten die Möglichkeit geben, Aktionen auszuführen oder App-Daten mithilfe von Android AppFunctions abzufragen. Weitere Informationen finden Sie unter Tools definieren.
  • Sitzungen bei Drehung beibehalten: Informationen zum Beibehalten der AgentSession-Instanz in einer ViewModel-Klasse bei Konfigurationsänderungen finden Sie unter Sitzungen und Lebenszyklus verwalten.
  • Mit Compose verbinden: Ereignisse streamen und interaktive Chat-Bubbles in Ereignisse streamen und UI-Integration rendern.