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

val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel(
        modelName = "MODEL_NAME",
        onDeviceConfig = OnDeviceConfig(mode = InferenceMode.PREFER_ON_DEVICE)
    )

Java

GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
        "MODEL_NAME",
        new OnDeviceConfig(InferenceMode.PREFER_ON_DEVICE)
    );

GenerativeModelFutures model = GenerativeModelFutures.from(ai);

지원되는 모든 Gemini 모델의 모델 이름을 찾습니다.

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

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);