ML Kit의 에이전트 워크플로 (com.google.mlkit:genai-agent, 알파)를 사용하면 Gemini Nano 및 Android AICore 시스템 서비스로 구동되는 자율적인 멀티턴 온디바이스 대화형 환경을 빌드할 수 있습니다.
GenerativeModel 클래스 (직접 모델 액세스)를 기반으로 빌드된 AgentRunner 클래스는 앱 내에서 직접 목표 중심의 완전한 에이전트 루프를 자동화합니다. 즉, 컨텍스트를 관찰하고, 사용자 입력을 추론하고, 유형이 지정된 Kotlin 도구를 통해 작동하고, 종료 조건이 충족될 때까지 피드백을 평가합니다.
일반적인 에이전트 패턴
온디바이스 에이전트 워크플로는 사용자 의도가 구조화된 앱 작업으로 변환되는 집중적이고 결정론적인 추론 루프에 최적화되어 있습니다. 일반적인 패턴은 다음과 같습니다.
패턴 |
예 |
인앱 액션 실행 및 바로가기 |
자연어 요청을 특정 앱 명령어로 변환합니다(예: 편집 캔버스에 사진 조정 적용, 재생 설정 수정, 앱 환경설정 전환). |
구조화된 조회 및 로컬 계산 |
ID로 특정 레코드 (예: 주문 상태 또는 계정 잔액)를 가져오고 다단계 수학적 계산 (예: 대출 상환 또는 피트니스 측정항목)을 수행합니다. |
대화형 필터링 및 선별 |
로컬 작업 목록 검색, 재생목록 필터링, 사용자 기준에 따른 카탈로그 항목 정렬과 같은 로컬 앱 항목을 대화형으로 쿼리하고 미세 조정합니다. |
단계별 입력 안내 |
구조화된 데이터 입력을 단계별로 안내하고 최종 제출 전에 로컬 도구로 중간 입력을 검증합니다. |
온디바이스 성능 및 개인 정보 보호
에이전트형 워크플로는 Android AICore에서 실행되어 사용자의 기기에서 직접 비공개적이고 반응성이 뛰어난 실행을 제공합니다.
- 로컬 추론 및 프롬프트 개인 정보 보호: 모델 추론 및 계획 루프가 네트워크 지연 시간 없이 완전히 기기 내에서 실행됩니다. 사용자 프롬프트 데이터는 기기에 비공개로 유지됩니다. 하지만 사용 사례에 외부 데이터가 필요한 경우 앱에 구현된 개별 도구는 여전히 네트워크 호출을 하거나 Cloud API를 쿼리할 수 있습니다.
- 관리형 멀티턴 세션:
AgentSession인터페이스는 여러 턴에 걸쳐 인메모리 대화 기록을 유지하므로 스크립트를 수동으로 관리할 필요가 없습니다.session.close(),deleteSession(sessionId)또는clearAllSessions()메서드를 사용하여 언제든지 메모리를 회수할 수 있습니다. - 실행 가드레일: 에이전트 구성은 제어되지 않는 실행 루프를 방지하고 배터리를 절약하며 기기 응답성을 보호하기 위해 리소스 종료 조건으로 최대 차례 제한(
maxTurns제한, 기본값은 10)을 적용합니다.
커스텀 생성, 에이전트, 작업별 API 중에서 선택
ML Kit는 기능에 필요한 맞춤설정 및 조정의 정도에 따라 기기 내 생성형 AI 기능을 구성합니다.
- 커스텀 생성 및 에이전트: 기능에 커스텀 안내 또는 도메인별 로직이 필요한 경우 Gemini Nano 파운데이션 모델을 직접 사용합니다. 관리형 멀티턴 세션과 자동화된 도구 호출 루프를 원하는 경우 에이전트형 워크플로(
GenerativeModel클래스를 기반으로 빌드된AgentRunner클래스 사용)를 선택하고, 커스텀 프롬프팅, 유형이 지정된 구조화된 출력 또는 클라이언트 관리형 멀티턴 기록을 원하는 경우 직접 모델 액세스(GenerativeModel클래스 사용)를 선택합니다. - 음성 및 오디오: 전용 음성 및 생성형 AI 모델(예: 음성 인식)을 사용하여 대답 읽어주기를 텍스트로 변환합니다.
- 텍스트 및 이미지 태스크: 공유 기본 모델(예: 이미지 설명, 요약, 교정, 다시 작성) 위에 사전 구성된 태스크별 특성 유형과 미세 조정된 LoRA 어댑터를 사용하여 프롬프트 엔지니어링 없이 턴키 비전 및 작성 사용 사례를 지원합니다.
다음 표에서는 이러한 접근 방식을 비교합니다.
구매 고려도 |
에이전트 워크플로 ( |
직접 모델 액세스 ( |
텍스트 및 이미지 작업 API |
아키텍처 |
|
커스텀 프롬프트를 위한 Gemini Nano 파운데이션 모델의 직접 인터페이스입니다. |
공유 기본 모델을 기반으로 미세 조정된 LoRA 어댑터에서 지원하는 작업별 기능 유형입니다. |
멀티턴 컨텍스트 |
관리형 멀티턴 세션 ( |
클라이언트 관리 멀티턴 컨텍스트.
|
스테이트리스(Stateless) 단일 입력 작업 호출 |
도구 호출 및 작업 |
자동화된 도구 호출 루프. 등록된 Android AppFunction을 검색하고, 모델에서 선택한 호출을 실행하고, 결과를 모델에 자동으로 다시 제공합니다. |
클라이언트 관리 도구 선언.
|
해당 사항 없음 (고정 태스크 파이프라인) |
용도 |
다단계 도구 실행 및 관리형 인메모리 멀티턴 세션에 자동화된 조정을 사용하려는 경우에 사용합니다. |
커스텀 프롬프팅, 멀티모달 이미지 이해, 유형이 지정된 구조화된 출력 ( |
기능이 표준 작성 또는 비전 작업과 일치하고 최소한의 설정으로 미세 조정된 LoRA에서 즉시 사용 가능한 품질을 원하는 경우에 사용합니다. |
다음 단계
- 프로젝트를 설정하고 첫 번째 에이전트를 빌드하려면 에이전트 워크플로 시작하기를 참조하세요.
- 에이전트에 인앱 함수를 노출하는 방법은 도구 정의를 참고하세요.
- Android 수명 주기 전반에서 멀티턴 세션과 메모리를 관리하려면 세션 및 수명 주기 관리를 참고하세요.
- 스트리밍 응답을 수집하고 UI를 업데이트하려면 스트림 이벤트 및 UI 통합을 참고하세요.