گزینه‌های پیکربندی برای تجربیات ترکیبی در برنامه‌های اندروید


این صفحه گزینه‌های پیکربندی زیر را برای تجربیات ترکیبی شرح می‌دهد:

مطمئن شوید که راهنمای شروع به کار برای ساخت تجربیات ترکیبی را تکمیل کرده‌اید.

تنظیم حالت استنتاج

مثال‌های موجود در راهنمای شروع به کار از حالت 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());

مدل مورد استفاده را مشخص کنید

برای مشاهده محتوا و کد مخصوص ارائه‌دهنده در این صفحه، روی ارائه‌دهنده API Gemini خود کلیک کنید.

می‌توانید هنگام ایجاد نمونه generativeModel ( کاتلین | جاوا ) یک مدل برای استفاده مشخص کنید.

  • یک مدل میزبانی ابری مشخص کنید :

    • اگر حالت استنتاج شما 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 Full [Preview] ( nano-v4-full ) به طور خودکار انتخاب می‌شود.

      • STABLE : جدیدترین مدل پایدار روی دستگاه.

        • کاملاً آزمایش شده و روی دستگاه‌های مصرف‌کننده.

        • برای مثال، جمینی نانو ۳ ( nano-v3 ) یا جمینی نانو ۲ ( 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);

استفاده از پیکربندی مدل برای کنترل پاسخ‌ها

برای مشاهده محتوا و کد مخصوص ارائه‌دهنده در این صفحه، روی ارائه‌دهنده API Gemini خود کلیک کنید.

در هر درخواست به یک مدل، می‌توانید پیکربندی مدل را برای کنترل نحوه تولید پاسخ توسط مدل ارسال کنید. مدل‌های میزبانی شده توسط ابر و مدل‌های روی دستگاه، گزینه‌های پیکربندی متفاوتی (پارامترهای ابری در مقابل پارامترهای روی دستگاه ) ارائه می‌دهند.

برای مدل‌های میزبانی‌شده توسط ابر، پیکربندی آنها را مستقیماً در پیکربندی مدل تنظیم کنید. با این حال، برای مدل‌های روی دستگاه، پیکربندی آنها را در یک 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);