Mulai menggunakan Agentic Workflows

Halaman ini menjelaskan cara menyiapkan project Android, mengonfigurasi library genai-agent, dan membuat agen di perangkat pertama Anda.

Prasyarat

Sebelum membangun Agentic Workflows dengan Gemini Nano, pastikan lingkungan Anda memenuhi persyaratan berikut:

Mengonfigurasi project Anda

Tambahkan dependensi genai-agent ke file build.gradle.kts modul Anda:

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

Membangun agen pertama Anda

Agen memiliki dua komponen utama:

  • Definisi agen: Petunjuk dan guardrail yang mengonfigurasi perilaku agen.
  • Runner agen: Mesin eksekusi yang berkomunikasi dengan AICore dan mengelola percakapan.

1. Mengonfigurasi agen dan runner

Contoh kode berikut menunjukkan cara menentukan agen Anda dengan petunjuk sistem dan menginisialisasi class 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. Menjalankan percakapan

Percakapan multi-giliran mempertahankan histori dialog di seluruh giliran menggunakan instance AgentSession. Gabungkan teks perintah Anda dalam objek Content dan kumpulkan respons yang di-streaming:

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

Untuk kueri satu kali yang tidak memerlukan penyimpanan histori percakapan, Anda dapat memanggil metode runner.runSingleTurnAsync(prompt) secara langsung:

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

3. Membersihkan resource

Class AgentRunner mengimplementasikan antarmuka AutoCloseable. Saat komponen ViewModel atau Activity dihancurkan, tutup runner untuk merilis sesi aktif dan membatalkan coroutine latar belakang:

runner.close()

Langkah berikutnya

  • Menambahkan kemampuan dengan alat: Beri agen Anda kemampuan untuk mengambil tindakan atau membuat kueri data aplikasi menggunakan AppFunctions Android. Lihat Menentukan alat.
  • Mempertahankan sesi saat rotasi: Pelajari cara mempertahankan instance AgentSession di dalam class ViewModel saat terjadi perubahan konfigurasi di Mengelola sesi dan siklus proses.
  • Menghubungkan ke Compose: Melakukan streaming peristiwa dan merender balon percakapan interaktif di Streaming peristiwa dan integrasi UI.