Android 앱의 하이브리드 환경 구성 옵션


이 페이지에서는 하이브리드 환경의 다음 구성 옵션을 설명합니다.

하이브리드 환경 빌드 시작 가이드를 완료했는지 확인하세요.

추론 모드 설정

시작 가이드의 예에서는 PREFER_ON_DEVICE 모드를 사용하지만 이는 사용 가능한 4가지 추론 모드 중 하나일 뿐입니다.

사용 가능한 추론 모드는 다음과 같습니다.

  • PREFER_ON_DEVICE: 온디바이스 모델이 사용 가능하고 요청 유형을 지원하는 경우 온디바이스 모델을 사용해 봅니다. 그렇지 않으면 기기에 오류를 로깅한 후 자동으로 클라우드 호스팅 모델로 대체 합니다.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.PREFER_ON_DEVICE)
    

    Java

    InferenceMode mode = InferenceMode.PREFER_ON_DEVICE;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • ONLY_ON_DEVICE: 온디바이스 모델이 사용 가능하고 요청 유형을 지원하는 경우 온디바이스 모델을 사용해 봅니다. 그렇지 않으면 예외를 발생 시킵니다.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.ONLY_ON_DEVICE)
    

    Java

    InferenceMode mode = InferenceMode.ONLY_ON_DEVICE;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • PREFER_IN_CLOUD: 기기가 온라인 상태이고 모델을 사용할 수 있는 경우 클라우드 호스팅 모델을 사용해 봅니다. 기기가 오프라인 상태인 경우 온디바이스 모델로 대체 합니다. 다른 모든 실패 사례에서는 예외를 발생 시킵니다.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.PREFER_IN_CLOUD)
    

    Java

    InferenceMode mode = InferenceMode.PREFER_IN_CLOUD;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • ONLY_IN_CLOUD: 기기가 온라인 상태이고 모델을 사용할 수 있는 경우 클라우드 호스팅 모델을 사용해 봅니다. 그렇지 않으면 예외를 발생 시킵니다.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.ONLY_IN_CLOUD)
    

    Java

    InferenceMode mode = InferenceMode.ONLY_IN_CLOUD;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    

온디바이스 추론 또는 클라우드 내 추론이 사용되었는지 확인

추론 모드가 PREFER_ON_DEVICE 또는 PREFER_IN_CLOUD인 경우 특정 요청에 사용된 모드를 아는 것이 유용할 수 있습니다. 이 정보는 각 응답의 inferenceSource 속성에서 제공됩니다.

이 속성에 액세스하면 반환되는 값은 ON_DEVICE 또는 IN_CLOUD입니다.

Kotlin

// ...

print("You used: ${result.response.inferenceSource}")

print(result.response.text)

Java

// ...

System.out.println("You used: " + result.getResponse().getInferenceSource());

System.out.println(result.getResponse().getText());

사용할 모델 지정

Gemini API 제공업체를 클릭하여 이 페이지에서 제공업체별 콘텐츠 및 코드를 확인합니다.

`generativeModel` 인스턴스 (Kotlin | Java)를 만들 때 사용할 모델을 지정할 수 있습니다.

  • 클라우드 호스팅 모델 지정:

  • 온디바이스 모델 지정:

    • 추론 모드가 PREFER_ON_DEVICE, PREFER_IN_CLOUD 또는 ONLY_ON_DEVICE인 경우 사용할 온디바이스 모델의 '카테고리'를 onDeviceConfig에서 선택적으로 지정할 수 있습니다. 카테고리는 출시 단계와 성능 특성의 조합입니다.

    • 지원되는 카테고리 값은 아래에 나와 있습니다.
      AICore는 지정된 카테고리의 조건을 충족하고 기기에서 지원되는 온디바이스 모델을 자동으로 선택합니다. 예를 들어 PREVIEW를 지정하고 기기가 Pixel 9인 경우 Gemini Nano 4 Full [미리보기] (nano-v4-full)가 자동으로 선택될 가능성이 높습니다.

      • STABLE: 최신 안정적인 온디바이스 모델입니다.

        • 완전히 테스트되었으며 소비자 기기에 있습니다.

        • 예를 들어 Gemini Nano 3 (nano-v3) 또는 Gemini Nano 2 (nano-v2)입니다.

        • OnDeviceModelOption이 지정되지 않은 경우 온디바이스 모델의 기본 설정입니다.

      • PREVIEW: 전체 성능 기능을 갖춘 최신 미리보기 온디바이스 모델입니다.

        • 더 높은 추론 능력과 복잡한 작업을 위해 설계되었습니다.

        • 예를 들어 Gemini Nano 4 Full [미리보기] (nano-v4-full, Gemma 4 E4B 기반)입니다.

      • PREVIEW_FAST: 빠른 최신 미리보기 온디바이스 모델입니다.

        • 최대 속도와 짧은 지연 시간을 위해 최적화되었습니다.

        • 예를 들어 Gemini Nano 4 Fast [미리보기] (nano-v4-fast, Gemma 4 E2B 기반)입니다.

Kotlin

val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel(
        // Specify a cloud-hosted model.
        // Required for `PREFER_ON_DEVICE`, `PREFER_IN_CLOUD`, and `ONLY_IN_CLOUD` inference modes.
        modelName = "CLOUD_HOSTED_MODEL_NAME",
        onDeviceConfig = OnDeviceConfig(
            mode = InferenceMode.INFERENCE_MODE,
            // (Optional) Specify an on-device model category.
            // AICore will auto-select an on-device model based on this category.
            // If not specified, AICore will auto-select the default stable on-device model.
            modelOption = OnDeviceModelOption.ON-DEVICE_MODEL_CATEGORY)
    )

Java

GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
        // Specify a cloud-hosted model.
        // Required for `PREFER_ON_DEVICE`, `PREFER_IN_CLOUD`, and `ONLY_IN_CLOUD` inference modes.
        "CLOUD_HOSTED_MODEL_NAME",
        /* config = */ null,
        /* safetySettings = */ null,
        /* tools = */ null,
        /* toolConfig = */ null,
        /* systemInstruction = */ null,
        /* requestOptions = */ new RequestOptions(),
        new OnDeviceConfig(
                /* mode = */ InferenceMode.INFERENCE_MODE,
                /* maxOutputTokens = */ null,
                /* temperature = */ null,
                /* topK = */ null,
                /* seed = */ null,
                /* candidateCount = */ 1,
                // (Optional) Specify an on-device model category.
                // AICore will auto-select an on-device model based on this category.
                // If not specified, AICore will auto-select the default stable on-device model.
                /* modelOption = */ OnDeviceModelOption.ON-DEVICE_MODEL_CATEGORY)
    );

GenerativeModelFutures model = GenerativeModelFutures.from(ai);

모델 구성을 사용하여 응답 제어

Gemini API 제공업체를 클릭하여 이 페이지에서 제공업체별 콘텐츠 및 코드를 확인합니다.

모델에 대한 각 요청에서 모델 구성을 함께 전송하여 모델의 응답 생성 방식을 제어할 수 있습니다. 클라우드 호스팅 모델과 온디바이스 모델은 서로 다른 구성 옵션(클라우드 vs 온디바이스 매개변수)을 제공합니다.

클라우드 호스팅 모델의 경우 모델 구성에서 직접 구성을 설정합니다. 하지만 온디바이스 모델의 경우 구성은 내에서 onDeviceConfig 설정합니다.

구성은 인스턴스의 수명 동안 유지됩니다. 다른 구성을 사용하려면 해당 구성으로 새 GenerativeModel 인스턴스를 만듭니다.

PREFER_ON_DEVICE 추론 모드가 설정된 경우 사용할 수 있는 클라우드 호스팅 모델과 온디바이스 모델의 구성을 설정하는 예는 다음과 같습니다.

Kotlin

val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel("MODEL_NAME",
        // Config for cloud-hosted model
        generationConfig = generationConfig {
          temperature = 0.8f,
          topK = 10
        },
        // Config for on-device model
        onDeviceConfig = onDeviceConfig {
          mode = InferenceMode.PREFER_ON_DEVICE,
          temperature = 0.8f,
          topK = 5
        })

Java

// Config for cloud-hosted model
GenerationConfig generationConfig = new GenerationConfig.Builder()
    .setTemperature(0.8f)
    .setTopK(10)
    .build();

// Config for on-device model
OnDeviceConfig onDeviceConfig = new OnDeviceConfig.Builder()
    .setMode(InferenceMode.PREFER_ON_DEVICE)
    .setTemperature(0.8f)
    .setTopK(5)
    .build();

GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
        "MODEL_NAME",
        generationConfig,
        onDeviceConfig
    );

GenerativeModelFutures model = GenerativeModelFutures.from(ai);