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


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

하이브리드 환경 빌드 시작 가이드를 완료해야 합니다.

추론 모드 설정

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

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

  • 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_IN_CLOUD인 경우 사용할 클라우드 호스팅 모델을 명시적으로 지정해야 합니다. SDK에는 기본 클라우드 호스팅 모델이 없습니다.

    • 지원되는 클라우드 호스팅 Gemini 모델의 모델 이름을 모두 찾습니다.

  • 온디바이스 모델 지정:

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

    • 지원되는 카테고리 값은 아래에 나열되어 있습니다.
      AICore는 지정된 카테고리의 조건을 충족하고 기기에서 지원하는 온디바이스 모델을 자동으로 선택합니다. 예를 들어 PREVIEW를 지정하고 기기가 Pixel 9인 경우 Gemini Nano 4 전체 [미리보기] (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 제공업체를 클릭하여 이 페이지에서 제공업체별 콘텐츠와 코드를 확인합니다.

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

클라우드 호스팅 모델의 경우 모델의 구성에서 직접 구성을 설정합니다. 하지만 온디바이스 모델의 경우 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);