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 lựa chọn cấu hình sau đây cho trải nghiệm kết hợp:

Đả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 dùng chế độ PREFER_ON_DEVICE, nhưng đây chỉ là một trong bốn chế độ suy luận có sẵn.

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

  • PREFER_ON_DEVICE: Thử sử dụng mô hình trên thiết bị nếu có 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 quay lại 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 có và hỗ trợ loại yêu cầu. Nếu không, hãy gửi một 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ử dùng mô hình được lưu trữ trên đám mây nếu thiết bị đang trực tuyến và nếu mô hình có sẵn. Nếu thiết bị không kết nối mạng, 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ửi một 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ử dùng mô hình được lưu trữ trên đám mây nếu thiết bị đang trực tuyến và nếu mô hình có sẵn. Nếu không, hãy gửi một 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 đã dùng suy luận trên thiết bị hay suy luận trên đá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 dùng cho các yêu cầu nhất định. Thông tin này do thuộc tính inferenceSource của mỗi phản hồi cung cấp.

Khi bạn truy cập vào thuộc tính này, giá trị được 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 cấp Gemini API để xem nội dung và mã dành riêng cho nhà cung cấp trên trang này.

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

  • Chỉ định một 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ột mô hình được lưu trữ trên đám mây để sử dụng. SDK không có mô hình mặc định được lưu trữ trên đám mây.

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

  • Chỉ định một 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ể không bắt buộc chỉ định trong onDeviceConfig "danh mục" của 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 [Bản dùng thử] (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 tra đầ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: Bản xem trước mới nhất của mô hình trên thiết bị với các chức năng đầy đủ về hiệu suất.

        • Được thiết kế để có khả năng suy luận cao hơn và giải quyết các nhiệm vụ phức tạp.

        • Ví dụ: Gemini Nano 4 Full [Bản xem trước] (nano-v4-full, dựa trên Gemma 4 E4B).

      • PREVIEW_FAST: Bản xem trước mới nhất của mô hình trên thiết bị có tốc độ nhanh.

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

        • Ví dụ: Gemini Nano 4 Fast [Bản xem trước] (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 cấp Gemini API để xem nội dung và mã dành riêng cho nhà cung cấp trên trang này.

Trong mỗi yêu cầu gửi đến một mô hình, bạn có thể gửi kèm theo một cấu hình mô hình để kiểm soát cách mô hình tạo ra phản hồi. Các 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 lựa chọn cấu hình khác nhau (các tham số đám mây so với trên thiết bị).

Đối với các mô hình được lưu trữ trên đám mây, hãy thiết lập cấu hình của các mô hình đó ngay 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 thiết lập cấu hình của chúng trong onDeviceConfig.

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

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