에이전트형 워크플로 시작하기

이 페이지에서는 Android 프로젝트를 설정하고, genai-agent 라이브러리를 구성하고, 첫 번째 기기 내 에이전트를 만드는 방법을 설명합니다.

기본 요건

Gemini Nano로 에이전트 워크플로를 빌드하기 전에 환경이 다음 요구사항을 충족하는지 확인하세요.

프로젝트 구성

모듈의 build.gradle.kts 파일에 genai-agent 종속 항목을 추가합니다.

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

다음 단계

  • 도구로 기능 추가: Android AppFunctions를 사용하여 에이전트가 작업을 실행하거나 앱 데이터를 쿼리할 수 있는 기능을 제공합니다. 도구 정의를 참고하세요.
  • 회전 시 세션 유지: 세션 및 수명 주기 관리에서 구성 변경 시 ViewModel 클래스 내에 AgentSession 인스턴스를 유지하는 방법을 알아봅니다.
  • Compose에 연결: 이벤트 스트리밍 및 UI 통합에서 이벤트를 스트리밍하고 대화형 채팅 풍선을 렌더링합니다.