گزینه‌های پیکربندی برای تجربه‌های تلفیقی در برنامه‌های 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 است، باید به‌طور صریح مدل میزبانی‌شده در فضای ابری را برای استفاده مشخص کنید. «کیت توسعه نرم‌افزار» مدل میزبانی‌شده در فضای ابری پیش‌فرض ندارد.

    • نام مدل را برای همه مدل‌های Gemini پشتیبانی‌شده با میزبانی ابری پیدا کنید.

  • مدل درون‌دستگاهی را مشخص کنید:

    • اگر حالت استنباط شما PREFER_ON_DEVICE، PREFER_IN_CLOUD، یا ONLY_ON_DEVICE است، می‌توانید اختیاری در onDeviceConfig «دسته‌ای» از مدل درون‌دستگاهی را برای استفاده مشخص کنید. دسته‌ها ترکیبی از مرحله انتشار و ویژگی‌های عملکرد هستند.

    • مقادیر دسته پشتیبانی‌شده در زیر فهرست شده است.
      ‫AICore به‌طور خودکار مدل درون‌دستگاهی را که شرایط دسته مشخص‌شده را برآورده می‌کند و دستگاه از آن پشتیبانی می‌کند انتخاب می‌کند. برای مثال، اگر PREVIEW را مشخص کنید و دستگاه Pixel 9 باشد، Gemini Nano 4 Full [پیش‌نمایش] (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_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_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 کلیک کنید تا محتوا و کد مختص ارائه‌دهنده را در این صفحه ببینید.

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

  • مدل‌های میزبانی‌شده در ابر: پیکربندی را بااستفاده از generationConfig (Kotlin | Java) تنظیم کنید. با پارامترهای دردسترس آشنا شوید.

  • مدل‌های درون‌دستگاهی: پیکربندی را بااستفاده از onDeviceConfig (Kotlin | Java) تنظیم کنید. درباره پارامترهای دردسترس (Kotlin | Java) بیشتر بدانید.

پیکربندی برای طول عمر نمونه حفظ می‌شود. اگر می‌خواهید از پیکربندی دیگری استفاده کنید، نمونه GenerativeModel جدیدی با آن پیکربندی ایجاد کنید.

در اینجا نمونه‌ای ارائه شده است که پیکربندی‌های مدل‌های میزبانی‌شده در فضای ابری و درون‌دستگاهی را تنظیم می‌کند که درصورت تنظیم شدن حالت استنباط PREFER_ON_DEVICE می‌توانند استفاده شوند:

Kotlin

// Config for cloud-hosted model
val generationConfig = generationConfig {
    maxOutputTokens = 200
    stopSequences = listOf("red")
}

// Config for on-device model
val onDeviceConfig = OnDeviceConfig(
    mode = InferenceMode.PREFER_ON_DEVICE,
    maxOutputTokens = 200
)

val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel(
        modelName = "CLOUD_MODEL_NAME",
        generationConfig = generationConfig,
        onDeviceConfig = onDeviceConfig
    )

Java

// Config for cloud-hosted model
GenerationConfig generationConfig = new GenerationConfig.Builder()
    .setMaxOutputTokens(200)
    .setStopSequences(List.of("red"))
    .build();

// Config for on-device model
OnDeviceConfig onDeviceConfig = new OnDeviceConfig(
    /* mode = */ InferenceMode.PREFER_ON_DEVICE,
    /* maxOutputTokens = */ 200,
    /* temperature = */ null,
    /* topK = */ null,
    /* seed = */ null,
    /* candidateCount = */ 1,
    /* modelOption = */ null
);

GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
        "CLOUD_MODEL_NAME",
        generationConfig,
        /* safetySettings = */ null,
        /* tools = */ null,
        /* toolConfig = */ null,
        /* systemInstruction = */ null,
        /* requestOptions = */ new RequestOptions(),
        onDeviceConfig
    );

GenerativeModelFutures model = GenerativeModelFutures.from(ai);


درباره تجربه‌تان با Firebase AI Logic بازخورد ارائه دهید