이 페이지에서는 Android 프로젝트를 설정하고, genai-agent 라이브러리를 구성하고, 첫 번째 기기 내 에이전트를 만드는 방법을 설명합니다.
기본 요건
Gemini Nano로 에이전트 워크플로를 빌드하기 전에 환경이 다음 요구사항을 충족하는지 확인하세요.
- Android 버전: AICore 개발자 프리뷰 프로그램에 등록된 Android 14 (API 수준 34) 이상
- 지원되는 기기: 지원되는 기기 및 Gemini Nano 모델 버전 목록은 커스텀 생성 및 에이전트 기기 지원을 참고하세요.
- 최소 SDK:
minSdk 26이상 - Kotlin: Kotlin 2.3 이상
프로젝트 구성
모듈의 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 통합에서 이벤트를 스트리밍하고 대화형 채팅 풍선을 렌더링합니다.