Temsilci tabanlı iş akışlarını kullanmaya başlama

Bu sayfada, Android projenizi nasıl oluşturacağınız, genai-agent kitaplığını nasıl yapılandıracağınız ve ilk cihaz üzerinde temsilcinizi nasıl oluşturacağınız açıklanmaktadır.

Ön koşullar

Gemini Nano ile temsilci tabanlı iş akışları oluşturmadan önce ortamınızın aşağıdaki koşulları karşıladığından emin olun:

Projenizi yapılandırın

Modülünüzün build.gradle.kts dosyasına genai-agent bağımlılığını ekleyin:

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

İlk temsilcinizi oluşturma

Bir temsilcinin iki ana bileşeni vardır:

  • Temsilci tanımı: Temsilcinin davranışını yapılandıran talimatlar ve güvenlik önlemleri.
  • Temsilci çalıştırıcı: AICore ile iletişim kuran ve görüşmeleri yöneten yürütme motoru.

1. Temsilciyi ve çalıştırıcıyı yapılandırma

Aşağıdaki kod örneğinde, temsilcinizi sistem talimatlarıyla nasıl tanımlayacağınız ve AgentRunner sınıfını nasıl başlatacağınız gösterilmektedir:

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. Sohbet başlatma

Çok aşamalı sohbetler, AgentSession örneği kullanarak aşamalar arasında diyalog geçmişini korur. İstem metninizi bir Content nesnesine sarmalayın ve akış yanıtını toplayın:

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

Sohbet geçmişini saklamanız gerekmeyen tek seferlik sorgular için runner.runSingleTurnAsync(prompt) yöntemini doğrudan çağırabilirsiniz:

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

3. Kaynakları temizleme

AgentRunner sınıfı, AutoCloseable arayüzünü uygular. ViewModel veya Activity bileşeniniz yok edildiğinde, etkin oturumları serbest bırakmak ve arka plan eş yordamlarını iptal etmek için çalıştırıcıyı kapatın:

runner.close()

Sonraki adımlar