Các lựa chọn cấu hình cho trải nghiệm kết hợp trong ứng dụng Android


Trang này mô tả các tuỳ chọn cấu hình sau đây cho trải nghiệm kết hợp:

Hãy đảm bảo rằng bạn đã hoàn tất hướng dẫn bắt đầu xây dựng trải nghiệm kết hợp.

Đặt chế độ suy luận

Các ví dụ trong hướng dẫn bắt đầu sử dụng chế độ PREFER_ON_DEVICE, nhưng đây chỉ là một trong 4 chế độ suy luận hiện có.

Dưới đây là các chế độ suy luận hiện có:

  • PREFER_ON_DEVICE: Thử sử dụng mô hình trên thiết bị nếu mô hình đó có sẵn và hỗ trợ loại yêu cầu. Nếu không, hãy ghi lại lỗi trên thiết bị rồi tự động chuyển về mô hình được lưu trữ trên đám mây.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.PREFER_ON_DEVICE)
    

    Java

    InferenceMode mode = InferenceMode.PREFER_ON_DEVICE;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • ONLY_ON_DEVICE: Thử sử dụng mô hình trên thiết bị nếu mô hình đó có sẵn và hỗ trợ loại yêu cầu. Nếu không, hãy gây ra ngoại lệ.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.ONLY_ON_DEVICE)
    

    Java

    InferenceMode mode = InferenceMode.ONLY_ON_DEVICE;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • PREFER_IN_CLOUD: Thử sử dụng mô hình được lưu trữ trên đám mây nếu thiết bị trực tuyến và mô hình đó có sẵn. Nếu thiết bị ngoại tuyến, hãy chuyển về mô hình trên thiết bị. Trong tất cả các trường hợp lỗi khác, hãy gây ra ngoại lệ.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.PREFER_IN_CLOUD)
    

    Java

    InferenceMode mode = InferenceMode.PREFER_IN_CLOUD;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • ONLY_IN_CLOUD: Thử sử dụng mô hình được lưu trữ trên đám mây nếu thiết bị trực tuyến và mô hình đó có sẵn. Nếu không, hãy gây ra ngoại lệ.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.ONLY_IN_CLOUD)
    

    Java

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

Xác định xem bạn đã sử dụng tính năng suy luận trên thiết bị hay trong đám mây

Nếu chế độ suy luận của bạn là PREFER_ON_DEVICE hoặc PREFER_IN_CLOUD, thì bạn nên biết chế độ nào đã được sử dụng cho các yêu cầu nhất định. Thông tin này được cung cấp bởi thuộc tính inferenceSource của mỗi câu trả lời.

Khi bạn truy cập vào thuộc tính này, giá trị trả về sẽ là ON_DEVICE hoặc 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());

Chỉ định mô hình cần sử dụng

Nhấp vào nhà cung định Gemini API để xem nội dung dành riêng cho nhà cung cấp và mã trên trang này.

Bạn có thể chỉ định mô hình cần sử dụng khi tạo thực thể generativeModel (Kotlin | Java).

  • Chỉ định mô hình được lưu trữ trên đám mây:

    • Nếu chế độ suy luận của bạn là PREFER_ON_DEVICE, PREFER_IN_CLOUD hoặc ONLY_IN_CLOUD, thì bạn phải chỉ định rõ ràng mô hình được lưu trữ trên đám mây để sử dụng. SDK không có mô hình được lưu trữ trên đám mây mặc định.

    • Tìm tên mô hình cho tất cả các mô hình được lưu trữ trên đám mây được hỗ trợ Gemini.

  • Chỉ định mô hình trên thiết bị:

    • Nếu chế độ suy luận của bạn là PREFER_ON_DEVICE, PREFER_IN_CLOUD hoặc ONLY_ON_DEVICE, thì bạn có thể tuỳ ý chỉ định trong onDeviceConfig "danh mục" mô hình trên thiết bị để sử dụng. Danh mục là sự kết hợp giữa giai đoạn phát hành và đặc điểm hiệu suất.

    • Các giá trị danh mục được hỗ trợ được liệt kê bên dưới.
      AICore tự động chọn mô hình trên thiết bị đáp ứng các điều kiện của danh mục đã chỉ định và được thiết bị hỗ trợ. Ví dụ: nếu bạn chỉ định PREVIEW và thiết bị là Pixel 9, thì Gemini Nano 4 Full [Preview] (nano-v4-full) có thể sẽ được tự động chọn.

      • STABLE: Mô hình ổn định mới nhất trên thiết bị.

        • Đã được kiểm thử đầy đủ và có trên các thiết bị tiêu dùng.

        • Ví dụ: Gemini Nano 3 (nano-v3) hoặc Gemini Nano 2 (nano-v2).

        • Chế độ cài đặt mặc định cho mô hình trên thiết bị nếu không chỉ định OnDeviceModelOption.

      • PREVIEW: Mô hình bản dùng thử mới nhất trên thiết bị với các chức năng hiệu suất đầy đủ.

        • Được thiết kế để có khả năng suy luận cao hơn và thực hiện các công việc phức tạp.

        • Ví dụ: Gemini Nano 4 Full [Preview] (nano-v4-full, dựa trên Gemma 4 E4B).

      • PREVIEW_FAST: Mô hình bản dùng thử mới nhất trên thiết bị nhanh.

        • Được tối ưu hoá để có tốc độ tối đa và độ trễ thấp hơn.

        • Ví dụ: Gemini Nano 4 Fast [Preview] (nano-v4-fast, dựa trên 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);

Sử dụng cấu hình mô hình để kiểm soát câu trả lời

Nhấp vào nhà cung định Gemini API để xem nội dung dành riêng cho nhà cung cấp và mã trên trang này.

Trong mỗi yêu cầu gửi đến mô hình, bạn có thể gửi kèm theo cấu hình mô hình để kiểm soát cách mô hình tạo câu trả lời. Mô hình được lưu trữ trên đám mây và mô hình trên thiết bị cung cấp các tuỳ chọn cấu hình khác nhau (tham số trên đám mây so với tham số trên thiết bị ).

Đối với các mô hình được lưu trữ trên đám mây, hãy đặt cấu hình trực tiếp trong cấu hình của mô hình. Tuy nhiên, đối với các mô hình trên thiết bị, hãy đặt cấu hình trong an onDeviceConfig.

Cấu hình được duy trì trong suốt thời gian tồn tại của thực thể. Nếu bạn muốn sử dụng cấu hình khác, hãy tạo thực thể GenerativeModel mới bằng cấu hình đó.

Sau đây là ví dụ về cách đặt cấu hình cho các mô hình được lưu trữ trên đám mây và mô hình trên thiết bị có thể được sử dụng nếu bạn đặt chế độ suy luận 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);