Gemini Nano 테스트 액세스 시작하기

Gemini Nano 실험용 액세스는 첨단 온디바이스 AI 기능으로 앱 개선사항을 테스트하려는 개발자를 위해 설계되었습니다. 이 가이드에서는 자체 앱에서 Google AI Edge SDK를 사용하여 Gemini Nano를 실험하는 방법을 자세히 설명합니다.

샘플 앱 가져오기

준비된 데모를 따라 하려면 GitHub의 샘플 앱을 확인하세요.

기본 요건

Gemini Nano를 실험하려면 Pixel 9 시리즈 기기가 필요합니다. 계속하기 전에 기기가 준비되어 있는지, 테스트에 사용할 계정으로만 로그인했는지 확인하세요.

  1. aicore-experimental Google 그룹에 가입합니다.
  2. Android AICore 테스트 프로그램을 선택합니다.

이 단계를 완료하면 Play 스토어(앱 및 기기 관리 아래)의 앱 이름이 'Android AICore'에서 'Android AICore (베타)'로 변경됩니다.

APK 업데이트 및 바이너리 다운로드

  1. AICore APK를 업데이트합니다.
    1. 오른쪽 상단에서 프로필 아이콘을 탭합니다.
    2. 앱 및 기기 관리 > 관리를 탭합니다.
    3. Android AICore를 탭합니다.
    4. 사용 가능한 업데이트가 있는 경우 업데이트를 탭합니다.
  2. 비공개 컴퓨팅 서비스 APK를 업데이트합니다.
    1. 오른쪽 상단에서 프로필 아이콘을 탭합니다.
    2. 앱 및 기기 관리 > 관리를 탭합니다.
    3. 프라이빗 컴퓨트 서비스를 탭합니다.
    4. 사용 가능한 업데이트가 있는 경우 업데이트를 탭합니다.
    5. 앱 정보 탭에서 버전을 확인하고 앱 버전이 1.0.release.658389993 이상인지 확인합니다.
  3. 기기를 다시 시작하고 테스트 등록이 적용될 때까지 몇 분 정도 기다립니다.
  4. Play 스토어의 '앱 정보' 탭에서 AICore APK 버전을 확인하여 0.thirdpartyeap로 시작하는 지 확인합니다.

gradle 구성

build.gradle 구성의 종속 항목 블록에 다음을 추가합니다.


implementation("com.google.ai.edge.aicore:aicore:0.0.1-exp01")

build.gradle 구성에서 최소 SDK 타겟을 31로 설정합니다.

defaultConfig {
    ...
    minSdk = 31
    ...
}

AICore 가져오기 및 추론 실행

모델이 추론을 실행하는 방식에 관한 속성을 맞춤설정하는 매개변수가 있는 GenerationConfig 객체를 만듭니다.

매개변수는 다음과 같습니다.

  • 온도: 무작위성을 제어합니다. 값이 클수록 다양성이 증가합니다.
  • Top K: 가장 높은 순위의 토큰 중 고려할 토큰 수
  • 후보 수: 반환할 최대 응답 수입니다.
  • 최대 출력 토큰: 응답의 길이
  • 작업자 실행자: 백그라운드 작업을 실행해야 하는 ExecutorService
  • 콜백 실행자: 콜백을 호출해야 하는 Executor입니다.

Kotlin

val generationConfig = generationConfig {
  context = ApplicationProvider.getApplicationContext() // required
  temperature = 0.2f
  topK = 16
  maxOutputTokens = 256
}

자바

GenerationConfig.Builder configBuilder = GenerationConfig.Companion.builder();
    configBuilder.setContext(context);
    configBuilder.setTemperature(0.2f);
    configBuilder.setTopK(16);
    configBuilder.setMaxOutputTokens(256);

선택사항인 downloadCallback를 만듭니다. 모델 다운로드에 사용되는 콜백 함수입니다. 반환된 메시지는 디버깅 목적으로 사용됩니다.

이전에 만든 생성 및 선택적 다운로드 구성으로 GenerativeModel 객체를 만듭니다.

Kotlin

val downloadConfig = DownloadConfig(downloadCallback)
val model = GenerativeModel(
   generationConfig = generationConfig,
   downloadConfig = downloadConfig // optional
)

자바

GenerativeModel model = new GenerativeModel(
   generationConfig,
   downloadConfig = DownloadConfig(downloadCallback) // optional
);

모델을 사용하여 추론을 실행하고 프롬프트를 전달합니다. GenerativeModel.generateContent()는 정지 함수이므로 시작하려면 올바른 코루틴 범위에 있어야 합니다.

Kotlin

scope.launch {
  // Single string input prompt
  val input = "I want you to act as an English proofreader. I will provide you
    texts, and I would like you to review them for any spelling, grammar, or
    punctuation errors. Once you have finished reviewing the text, provide me
    with any necessary corrections or suggestions for improving the text: These
    arent the droids your looking for."
  val response = generativeModel.generateContent(input)
  print(response.text)

  // Or multiple strings as input
  val response = generativeModel.generateContent(
  content {
    text("I want you to act as an English proofreader. I will provide you texts
      and I would like you to review them for any spelling, grammar, or
      punctuation errors.")
    text("Once you have finished reviewing the text, provide me with any
      necessary corrections or suggestions for improving the text:")
    text("These arent the droids your looking for.")
    }
  )
  print(response.text)
}

자바

Futures.addCallback(
    String input = "I want you to act as an English proofreader. I will
    provide you texts, and I would like you to review them for any
    spelling, grammar, or punctuation errors. Once you have finished
    reviewing the text, provide me with any necessary corrections or
    suggestions for improving the text:
    These aren't the droids you're looking for."
    modelFutures.generateContent(input),
    new FutureCallback<GenerateContentResponse>() {
      @Override
      public void onSuccess(GenerateContentResponse result) {
        // generation successful
      }

      @Override
      public void onFailure(Throwable t) {
        // generation failed
      }
    },
    ContextCompat.getMainExecutor(this));

Google AI Edge SDK에 관한 의견이나 Google팀에 전달할 다른 의견이 있으면 티켓을 제출하세요.

프롬프트 도움말

프롬프트 설계는 언어 모델에서 최적의 응답을 유도하는 프롬프트를 만드는 프로세스입니다. 체계적인 메시지 작성은 언어 모델의 정확하고 고품질 응답을 보장하는 데 필수적인 부분입니다. Gemini Nano의 일반적인 사용 사례를 시작할 수 있도록 몇 가지 예시를 포함했습니다. 자세한 내용은 Gemini 프롬프트 전략을 참고하세요.

재작성의 경우:

I want you to act as an English proofreader. I will provide you texts, and I
would like you to review them for any spelling, grammar, or punctuation errors.
Once you have finished reviewing the text, provide me with any necessary
corrections or suggestions for improving the text: These arent the droids your
looking for

스마트 답장 사용 사례:

Prompt: Predict up to 5 emojis as a response to a text chat message. The output
should only include emojis.

input: The new visual design is blowing my mind 🤯
output: ➕,💘, ❤‍🔥

input: Well that looks great regardless
output: 💗,🪄

input: Unfortunately this won't work
output: 💔,😔

input: sounds good, I'll look into that
output: 🙏,👍

input: 10hr cut of jeff goldblum laughing URL
output: 😂,💀,⚰️

input: Woo! Launch time!
Output:

요약의 경우:

Summarize this text as bullet points of key information.
Text: A quantum computer exploits quantum mechanical phenomena to perform
  calculations exponentially faster than any modern traditional computer. At
  very tiny scales, physical matter acts as both particles and as waves, and
  quantum computing uses specialized hardware to leverage this behavior. The
  operating principles of quantum devices are beyond the scope of classical
  physics. When deployed at scale, quantum computers could be used in a wide
  variety of applications such as: in cybersecurity to break existing encryption
  methods while helping researchers create new ones, in meteorology to develop
  better weather forecasting etc. However, the current state-of-the-art quantum
  computers are still largely experimental and impractical.