إنشاء تجارب مختلطة في تطبيقات Android باستخدام نماذج مستضافة على الجهاز ونماذج مستضافة على السحابة الإلكترونية


يمكنك إنشاء تطبيقات وميزات Android مستندة إلى الذكاء الاصطناعي باستخدام الاستدلال المختلط من خلال Firebase AI Logic. يتيح الاستنتاج المختلط تشغيل الاستنتاج باستخدام النماذج على الجهاز فقط عندما تكون متاحة، والرجوع بسلاسة إلى النماذج المستضافة على السحابة الإلكترونية في الحالات الأخرى (والعكس صحيح).

توضّح هذه الصفحة كيفية بدء استخدام حزمة تطوير البرامج (SDK) للعميل. بعد إكمال عملية الإعداد العادية هذه، يمكنك الاطّلاع على خيارات وإمكانات الضبط الإضافية.

يُرجى العِلم أنّ الاستدلال على الجهاز فقط من خلال "Firebase AI Logic" متاح لتطبيقات Android التي تستخدم الإصدار 17.10.0 أو إصدار أحدث من حزمة تطوير البرامج (SDK) لـ "Firebase AI Logic" (الإصدار 34.10.0 أو إصدار أحدث من "BoM") والتي تعمل على أجهزة معيّنة. وتخضع لبنود حزمة تعلّم الآلة، بالإضافة إلى البنود الخاصة بجوانب الذكاء الاصطناعي التوليدي في حزمة تعلّم الآلة.

الانتقال إلى أمثلة الرموز

حالات الاستخدام والإمكانات المتوافقة

بناءً على حالات استخدام تطبيقك، يمكنك الاستفادة من عدة مزايا للتجارب على الجهاز فقط أو التجارب المختلطة:

  • مزايا استخدام نموذج على الجهاز فقط للاستدلال:

    • خصوصية محسّنة
    • السياق المحلي
    • الاستدلال بدون تكلفة
    • وظائف بلا إنترنت
  • مزايا استخدام النهج المختلط:

    • تقديم تجربة تطبيق مماثلة، بغض النظر عن جهاز المستخدم النهائي
    • تحسين مدى توفّر الميزات المستندة إلى الذكاء الاصطناعي التوليدي، بغض النظر عن الاتصال بالإنترنت أو حدود الحصة أو إمكانات الجهاز

إمكانات الاستدلال المتوافقة على الجهاز فقط

لا يتيح الاستنتاج على الجهاز إلا إنشاء نص من جولة واحدة (وليس محادثة) (مع إخراج بث أو غير بث)، وتحديدًا الإمكانات التالية:

يُرجى مراجعة قائمة الميزات غير المتاحة بعد للاستنتاج المختلط أو على الجهاز فقط في أسفل هذه الصفحة.

واجهات برمجة التطبيقات والأجهزة المتوافقة

توضّح الأقسام التالية واجهات برمجة التطبيقات المتوافقة، بالإضافة إلى الأجهزة المتوافقة (ونماذجها على الجهاز فقط).

واجهات برمجة التطبيقات المتوافقة للاستنتاج في السحابة الإلكترونية مقابل الاستنتاج على الجهاز فقط

أجهزة Android المتوافقة ونماذجها على الجهاز فقط

بالنسبة إلى الاستدلال على الجهاز فقط (الذي يستخدم Prompt API من "حزمة تعلّم الآلة")، يمكنك العثور على قائمة بالأجهزة المتوافقة ونماذجها على الجهاز فقط في مستندات "حزمة تعلّم الآلة".

البدء

توضّح خطوات البدء هذه الإعدادات العامة المطلوبة لأي طلب موجَّه تريد إرساله.

الخطوة 1: إعداد مشروع Firebase وربط تطبيقك بـ Firebase

  1. سجِّل الدخول إلى وحدة تحكّم Firebase، ثم اختَر مشروعك على Firebase.

  2. في وحدة تحكّم Firebase، انتقِل إلى خدمات الذكاء الاصطناعي > AI Logic.

  3. انقر على البدء لإطلاق سير عمل موجَّه يساعدك في إعداد واجهات برمجة التطبيقات المطلوبة والموارد لمشروعك.

  4. اتّبِع التعليمات الظاهرة على الشاشة لتسجيل تطبيقك وإضافة إعدادات Firebase إليه، إذا طُلب منك ذلك.

  5. عندما يُطلب منك اختيار "مقدّم خدمة Gemini API"، ننصحك باختيار Gemini Developer API، الذي يتيح لك البدء بسرعة بدون أي تكلفة.

    يمكنك في أي وقت لاحق إعداد Agent Platform Gemini API (formerly Vertex AI) (ومتطلباته للفوترة).

  6. يُرجى المتابعة في سير العمل لإعداد واجهات برمجة التطبيقات المطلوبة والخدمات المرتبطة بها لـ "Firebase AI Logic".

    تفرض هذه المرحلة من سير العمل تلقائيًا استخدام Firebase App Check في AI Logic، وهي خدمة مهمة للمساعدة في حماية Gemini API عند الوصول إليها مباشرةً من تطبيقك. كجزء من عملية البدء (راجِع الخطوات الواردة لاحقًا في هذا الدليل)، ستحتاج إلى ضبط App Check مقدّم خدمة تصحيح الأخطاء للتطوير المحلي عند فرض استخدام App Check.

  7. انتقِل إلى الخطوة التالية في هذا الدليل لإضافة حزم تطوير البرامج (SDK) المطلوبة إلى تطبيقك.

الخطوة 2: إضافة حزم تطوير البرامج (SDK) المطلوبة

تتيح حزمة تطوير البرامج (SDK) لـ Firebase AI Logic على Android (firebase-ai) بالإضافة إلى حزمة تطوير البرامج (SDK) لـ Firebase AI Logic On-Device (firebase-ai-ondevice) الوصول إلى واجهات برمجة التطبيقات للتفاعل مع النماذج التوليدية.

في ملف Gradle للوحدة (على مستوى التطبيق) (مثل <project>/<app-module>/build.gradle.kts)، أضِف التبعيات لمكتبتَي Firebase AI Logic وApp Check لنظام التشغيل Android:

Kotlin

dependencies {
  // ... other androidx dependencies

  // Add the dependencies for the Firebase AI Logic and App Check libraries
  // Note that the on-device SDK is not yet included in the Firebase Android BoM
  implementation("com.google.firebase:firebase-ai:18.1.0")
  implementation("com.google.firebase:firebase-ai-ondevice:16.0.0-beta07")
  implementation("com.google.firebase:firebase-appcheck-debug:20.0.0")
}

Java

بالنسبة إلى Java، عليك إضافة مكتبتَين إضافيتَين.

dependencies {
  // ... other androidx dependencies

  // Add the dependencies for the Firebase AI Logic and App Check libraries
  // Note that the on-device SDK is not yet included in the Firebase Android BoM
  implementation("com.google.firebase:firebase-ai:18.1.0")
  implementation("com.google.firebase:firebase-ai-ondevice:16.0.0-beta07")
  implementation("com.google.firebase:firebase-appcheck-debug:20.0.0")

  // Required for one-shot operations (to use `ListenableFuture` from Guava Android)
  implementation("com.google.guava:guava:31.0.1-android")

  // Required for streaming operations (to use `Publisher` from Reactive Streams)
  implementation("org.reactivestreams:reactive-streams:1.0.4")
}

الخطوة 3: ضبط مقدّم خدمة تصحيح الأخطاء في App Check للتطوير المحلي

في إطار سير عمل الإعداد الموجَّه لـ "AI Logic" في وحدة التحكّم، يتم فرض "Firebase App Check" تلقائيًا لحماية Gemini API. للتطوير على الجهاز، عليك ضبط App Check مقدّم خدمة تصحيح الأخطاء لتجاوز عملية التحقّق مع مواصلة فرض App Check.

  1. في الإصدار المخصّص لتصحيح الأخطاء، اضبط App Check لاستخدام مصنع مقدّم خدمة تصحيح الأخطاء:

    Kotlin

    Firebase.initialize(context = this)
    Firebase.appCheck.installAppCheckProviderFactory(
        DebugAppCheckProviderFactory.getInstance(),
    )
    

    Java

    FirebaseApp.initializeApp(/*context=*/ this);
    FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
    firebaseAppCheck.installAppCheckProviderFactory(
            DebugAppCheckProviderFactory.getInstance());
    
  2. احصل على الرمز المميّز لتصحيح الأخطاء:

    1. شغِّل تطبيقك في المحاكي أو على جهازك الاختباري.

    2. ابحث عن الرمز المميّز لتصحيح الأخطاء App Check في سجلّاتك. على سبيل المثال:

      D DebugAppCheckProvider: Enter this debug secret into the allow list
      in the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678
      
    3. انسخ الرمز المميّز (على سبيل المثال، 123a4567-b89c-12d3-e456-789012345678).

  3. سجِّل رمز تصحيح الأخطاء باستخدام App Check:

    1. في وحدة تحكّم Firebase، انتقِل إلى الأمان > فحص التطبيقات > علامة التبويب التطبيقات.

    2. ابحث عن تطبيقك، وانقر على القائمة الكاملة ()، ثم اختَر إدارة الرموز المميّزة لتصحيح الأخطاء.

    3. اتّبِع التعليمات الظاهرة على الشاشة لتسجيل الرمز المميّز لتصحيح الأخطاء.

لمعرفة تفاصيل حول مقدّم خدمة تصحيح الأخطاء (بما في ذلك كيفية الحصول على رمز مميّز جديد لتصحيح الأخطاء)، يُرجى الاطّلاع على مستندات App Check الرسمية.

الخطوة 4: التحقّق من توفّر النموذج على الجهاز

باستخدام FirebaseAIOnDevice، تحقَّق مما إذا كان النموذج المتوفّر على الجهاز متاحًا، ونزِّله إذا لم يكن متاحًا.

بعد تنزيل النموذج، ستحافظ ميزة AICore على تحديثه تلقائيًا. يمكنك الاطّلاع على الملاحظات بعد المقتطف لمزيد من التفاصيل حول AICore وإدارة عملية تنزيل النموذج على الجهاز فقط.

Kotlin

val status = FirebaseAIOnDevice.checkStatus()
when (status) {
  OnDeviceModelStatus.UNAVAILABLE -> {
    Log.w(TAG, "On-device model is unavailable")
  }

  OnDeviceModelStatus.DOWNLOADABLE -> {
    FirebaseAIOnDevice.download().collect { status ->
      when (status) {
        is DownloadStatus.DownloadStarted ->
          Log.w(TAG, "Starting download - ${status.bytesToDownload}")

        is DownloadStatus.DownloadInProgress ->
          Log.w(TAG, "Download in progress ${status.totalBytesDownloaded} bytes downloaded")

        is DownloadStatus.DownloadCompleted ->
          Log.w(TAG, "On-device model download complete")

        is DownloadStatus.DownloadFailed ->
          Log.e(TAG, "Download failed ${status}")
      }
    }
  }
  OnDeviceModelStatus.DOWNLOADING -> {
    Log.w(TAG, "On-device model is being downloaded")
  }

  OnDeviceModelStatus.AVAILABLE -> {
    Log.w(TAG, "On-device model is available")
  }
}

Java

Checking for, downloading, and warming up the model is not yet available for Java.

However, all other APIs and interactions in this guide are available for Java.

يُرجى ملاحظة ما يلي بشأن تنزيل النموذج على الجهاز فقط:

  • يعتمد الوقت المستغرَق لتنزيل النموذج على الجهاز فقط على عدة عوامل، بما في ذلك شبكتك.

  • إذا كان الرمز البرمجي يستخدم نموذجًا على الجهاز فقط للاستنتاج الأساسي أو الاحتياطي، يُرجى التأكّد من تنزيل النموذج في وقت مبكر من مراحل نشاط تطبيقك ليكون النموذج على الجهاز فقط متاحًا قبل أن يواجه المستخدمون النهائيون الرمز البرمجي في تطبيقك.

  • إذا كان النموذج على الجهاز فقط غير متاح عند تقديم طلب استنتاج على الجهاز فقط، لن تبدأ حزمة تطوير البرامج (SDK) تلقائيًا عملية تنزيل النموذج على الجهاز فقط. ستعود حزمة SDK إلى النموذج المستضاف على السحابة الإلكترونية أو ستعرض استثناءً (يمكنك الاطّلاع على تفاصيل حول سلوك أوضاع الاستنتاج).

  • AICore (خدمة تابعة لنظام التشغيل Android) تدير لك النموذج والإصدار الذي يتم تنزيله، وتحافظ على تحديث النموذج، وما إلى ذلك. يُرجى ملاحظة أن الجهاز سيحتوي على نموذج واحد فقط تم تنزيله، لذلك إذا نجح تطبيق آخر على الجهاز في تنزيل النموذج على الجهاز فقط من قبل، فسيؤدي هذا التحقق إلى إرجاع أن النموذج متاح.

تحسين وقت الاستجابة

لتحسين طلب الاستدلال الأول، يمكنك جعل تطبيقك يطلب onDeviceExtension?.warmUp() (متاح حاليًا للغة Kotlin فقط). يؤدي ذلك إلى تحميل النموذج على الجهاز فقط في الذاكرة وتهيئة مكوّنات وقت التشغيل.

الخطوة 5: إعداد الخدمة وإنشاء مثيل للنموذج

انقر على مزوّد خدمة Gemini API للاطّلاع على المحتوى والرمز البرمجي الخاصَّين بمزوّد الخدمة على هذه الصفحة.

يجب إعداد ما يلي قبل إرسال طلب إلى النموذج.

  1. ابدأ الخدمة لمقدّم واجهة برمجة التطبيقات الذي اخترته.

  2. أنشئ مثيل GenerativeModel، واضبط mode على أحد الخيارات التالية. الأوصاف هنا عامة جدًا، ولكن يمكنك الاطّلاع على تفاصيل حول سلوك هذه الأوضاع في ضبط وضع الاستنتاج.

    • PREFER_ON_DEVICE: محاولة استخدام النموذج المتوفّر على الجهاز فقط، وإلا يتم استخدام النموذج المستضاف على السحابة الإلكترونية

    • ONLY_ON_DEVICE: محاولة استخدام النموذج على الجهاز فقط؛ وإلا سيتم طرح استثناء.

    • PREFER_IN_CLOUD: محاولة استخدام النموذج المستضاف على السحابة الإلكترونية، وإلا يتم الرجوع إلى النموذج المتوفّر على الجهاز فقط

    • ONLY_IN_CLOUD: محاولة استخدام النموذج المستضاف على السحابة الإلكترونية، وإلا يتم طرح استثناء.

Kotlin

// Using this SDK to access on-device inference is an Experimental release and requires opt-in
@OptIn(PublicPreviewAPI::class)

// ...

// Initialize the Gemini Developer API backend service
// Create a GenerativeModel instance with a model that supports your use case
// Set the inference mode (like PREFER_ON_DEVICE to use the on-device model if available)
val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel(
        modelName = "CLOUD_MODEL_NAME",
        onDeviceConfig = OnDeviceConfig(mode = InferenceMode.PREFER_ON_DEVICE)
    )

Java

// Initialize the Gemini Developer API backend service
// Create a GenerativeModel instance with a model that supports your use case
// Set the inference mode (like PREFER_ON_DEVICE to use the on-device model if available)
GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
        "CLOUD_MODEL_NAME",
        new OnDeviceConfig(InferenceMode.PREFER_ON_DEVICE)
    );

// Use the GenerativeModelFutures Java compatibility layer which offers
// support for ListenableFuture and Publisher APIs
GenerativeModelFutures model = GenerativeModelFutures.from(ai);

الخطوة 6: إرسال طلب إلى نموذج

يوضّح لك هذا القسم كيفية إرسال أنواع مختلفة من الإدخالات لإنشاء أنواع مختلفة من المخرجات، بما في ذلك:

إذا أردت إنشاء مخرجات منظَّمة (مثل JSON أو التعدادات)، استخدِم أحد أمثلة "نصّ من إنشاء الذكاء الاصطناعي" التالية واضبط النموذج أيضًا للردّ وفقًا لمخطط محدّد.

إنشاء نصّ من إنشاء الذكاء الاصطناعي من إدخال نصي فقط

قبل تجربة هذا النموذج، تأكَّد من إكمال قسم البدء في هذا الدليل.

يمكنك استخدام generateContent() لإنشاء نصّ من إنشاء الذكاء الاصطناعي من طلب يتضمّن نصًا:

Kotlin

// Imports + initialization of Gemini API backend service + creation of model instance

// Provide a prompt that contains text
val prompt = "Write a story about a magic backpack."

// To generate text output, call generateContent with the text input
val response = model.generateContent(prompt)
print(response.text)

Java

// Imports + initialization of Gemini API backend service + creation of model instance

// Provide a prompt that contains text
Content prompt = new Content.Builder()
    .addText("Write a story about a magic backpack.")
    .build();

// To generate text output, call generateContent with the text input
ListenableFuture<GenerateContentResponse> response = model.generateContent(prompt);
Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
    @Override
    public void onSuccess(GenerateContentResponse result) {
        String resultText = result.getText();
        System.out.println(resultText);
    }

    @Override
    public void onFailure(Throwable t) {
        t.printStackTrace();
    }
}, executor);

يُرجى العِلم أنّ Firebase AI Logic يتيح أيضًا بث الردود النصية باستخدام generateContentStream (بدلاً من generateContent).

إنشاء نصّ من إنشاء الذكاء الاصطناعي من إدخال نص وصورة (متعدد الوسائط)

قبل تجربة هذا النموذج، تأكَّد من إكمال قسم البدء في هذا الدليل.

يمكنك استخدام generateContent() لإنشاء نصّ من إنشاء الذكاء الاصطناعي من طلب يحتوي على نص وملف صورة واحد كحد أقصى (صورة نقطية فقط)، وذلك من خلال توفير mimeType لكل ملف إدخال والملف نفسه.

Kotlin

// Imports + initialization of Gemini API backend service + creation of model instance

// Loads an image from the app/res/drawable/ directory
val bitmap: Bitmap = BitmapFactory.decodeResource(resources, R.drawable.sparky)

// Provide a prompt that includes the image specified above and text
val prompt = content {
  image(bitmap)
  text("What developer tool is this mascot from?")
}

// To generate text output, call generateContent with the prompt
val response = model.generateContent(prompt)
print(response.text)

Java

// Imports + initialization of Gemini API backend service + creation of model instance

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.sparky);

// Provide a prompt that includes the image specified above and text
Content content = new Content.Builder()
        .addImage(bitmap)
        .addText("What developer tool is this mascot from?")
        .build();

// To generate text output, call generateContent with the prompt
ListenableFuture<GenerateContentResponse> response = model.generateContent(content);
Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
    @Override
    public void onSuccess(GenerateContentResponse result) {
        String resultText = result.getText();
        System.out.println(resultText);
    }

    @Override
    public void onFailure(Throwable t) {
        t.printStackTrace();
    }
}, executor);

يُرجى العِلم أنّ Firebase AI Logic يتيح أيضًا بث الردود النصية باستخدام generateContentStream (بدلاً من generateContent).

ما هي المهام الأخرى التي يمكنني تنفيذها؟

يمكنك استخدام خيارات وإمكانات ضبط إضافية مختلفة لتجاربك المختلطة:

الميزات غير المتاحة بعد

بما أنّ هذا الإصدار تجريبي، لا تتوفّر بعض إمكانات النماذج المستضافة على السحابة الإلكترونية أو حزمة تطوير البرامج (SDK) الخاصة بـ Firebase AI Logic للاستنتاج المختلط أو على الجهاز فقط.

الميزات غير المتاحة بعد لعمليات التنفيذ المختلطة

لا يمكن استخدام الميزات التالية مع عمليات التنفيذ المختلطة (سواء على الجهاز أو من خلال الاحتياطي السحابي):

  • Gemini Live API: لا يتوفّر البث المباشر الثنائي الاتجاه في الوقت الفعلي.

  • نماذج الطلبات على الخادم: لا تتوفّر نماذج الطلبات على الخادم المُدار.

  • احتساب الرموز المميّزة: يجب عدم الاعتماد على احتساب الرموز المميّزة لأنّ العدد سيختلف بين النماذج المستضافة على السحابة الإلكترونية والنماذج على الجهاز، لذا لا يتوفّر خيار احتياطي بديهي.

الميزات غير المتاحة بعد للاستنتاج على الجهاز فقط

الميزات التالية غير متاحة بعد للاستنتاج على الجهاز فقط، ولكنّها متاحة للنماذج المستضافة على السحابة الإلكترونية.

  • جارٍ إنشاء الصور

    • يمكن الرجوع إلى النموذج المستضاف على السحابة الإلكترونية، ولكن سيؤدي وضع ONLY_ON_DEVICE إلى ظهور استثناء.
  • إنشاء نصّ من إنشاء الذكاء الاصطناعي من أنواع ملفات الصور غير Bitmap (صورة تم تحميلها في الذاكرة)

    • يمكن الرجوع إلى النموذج المستضاف على السحابة الإلكترونية، ولكن سيؤدي وضع ONLY_ON_DEVICE إلى ظهور استثناء.
  • إنشاء نصّ من إنشاء الذكاء الاصطناعي من ملف إدخال يحتوي على صور فقط بالنسبة إلى الاستدلال على الجهاز فقط، يجب تقديم نص كجزء من الطلب المتعدد الوسائط.

    • يمكن الرجوع إلى النموذج المستضاف على السحابة الإلكترونية، ولكن سيؤدي وضع ONLY_ON_DEVICE إلى ظهور استثناء.
  • إنشاء نصّ من إنشاء الذكاء الاصطناعي من أكثر من ملف صورة واحد

    • يمكن الرجوع إلى النموذج المستضاف على السحابة الإلكترونية، ولكن سيؤدي وضع ONLY_ON_DEVICE إلى ظهور استثناء.
  • إنشاء نصّ من إنشاء الذكاء الاصطناعي من مدخلات متعددة الوسائط، مثل الصوت والفيديو والمستندات (ملفات PDF)

    • يمكن الرجوع إلى النموذج المستضاف على السحابة الإلكترونية، ولكن سيؤدي وضع ONLY_ON_DEVICE إلى ظهور استثناء.
  • تقديم الملفات باستخدام عناوين URL في الطلبات المتعدّدة الوسائط بالنسبة إلى الاستدلال على الجهاز فقط، يجب تقديم صورة واحدة بتنسيق Bitmap.

    • إذا قدّمت عنوان URL لملف باستخدام fileData (FileDataPart)، يمكن أن يعود إلى النموذج المستضاف على السحابة الإلكترونية (سيؤدي وضع ONLY_ON_DEVICE إلى ظهور استثناء).
    • إذا ضمّنت عنوان URL مباشرةً في طلب نصي، لن يتم تلقائيًا الرجوع إلى النموذج المستضاف على السحابة الإلكترونية (يتم تجاهل عناوين URL المضمّنة من قِبل النموذج على الجهاز فقط).
  • إرسال طلبات تتجاوز 4,000 رمز مميّز (أو ما يقرب من 3,000 كلمة باللغة الإنجليزية)

    • يمكن الرجوع إلى النموذج المستضاف على السحابة الإلكترونية، ولكن سيؤدي وضع ONLY_ON_DEVICE إلى ظهور استثناء.
  • محادثة متعدّدة الجولات

    • لا يعود تلقائيًا إلى النموذج المستضاف على السحابة الإلكترونية (يجمع الاستنتاج على الجهاز سجلّ الطلبات في طلب نصي واحد، وبما أنّ النموذج على الجهاز لا يميّز بين الأدوار ويرى السجلّ كرسالة واحدة، لن يكون دقيقًا مثل النموذج المستضاف على السحابة الإلكترونية).
    • إذا أردت استخدام ميزة المحادثة المتعدّدة الجولات، ننصحك باستخدام وضع ONLY_IN_CLOUD.
  • تزويد النموذج بأدوات لمساعدته في إنشاء ردوده (مثل استدعاء الدوال، وتنفيذ الرموز البرمجية، وسياق عناوين URL، والربط بـ Google Search، والربط بـ Google Maps)

    • لا يتم الرجوع تلقائيًا إلى النموذج المستضاف على السحابة الإلكترونية. إذا أردت استخدام الأدوات، ننصحك باستخدام وضع "ONLY_IN_CLOUD".
  • لا تعرض ميزة تتبّع استخدام الذكاء الاصطناعي في وحدة تحكّم Firebase أي بيانات للاستنتاج على الجهاز فقط (بما في ذلك سجلّات الجهاز). ومع ذلك، يمكن مراقبة أي استنتاج يستخدم نموذجًا مستضافًا على السحابة الإلكترونية تمامًا مثل الاستنتاجات الأخرى من خلال Firebase AI Logic.

قيود إضافية

بالإضافة إلى ما سبق، فإنّ الاستدلال على الجهاز له القيود التالية (مزيد من المعلومات في مستندات حزمة تعلّم الآلة):

  • يجب أن يستخدم المستخدم النهائي لتطبيقك جهازًا متوافقًا للاستدلال على الجهاز فقط.

  • لا يمكن لتطبيقك تشغيل الاستدلال على الجهاز إلا عندما يكون في المقدّمة.

  • تم التحقّق من صحة اللغتين الإنجليزية والكورية فقط للاستدلال على الجهاز.

  • الحد الأقصى لعدد الرموز المميّزة المسموح بها لطلب الاستنتاج على الجهاز بالكامل هو 4,000 رمز مميّز. إذا كان من المحتمل أن تتجاوز طلباتك هذا الحدّ، تأكَّد من ضبط وضع استنتاج يمكنه استخدام نموذج مستضاف على السحابة الإلكترونية.

  • ننصحك بتجنُّب حالات استخدام الاستدلال على الجهاز التي تتطلّب مخرجات طويلة (أكثر من 256 رمزًا مميزًا).

  • AICore (خدمة تابعة لنظام التشغيل Android تدير النماذج على الجهاز فقط) تفرض حصة استدلال لكل تطبيق. سيؤدي إرسال عدد كبير جدًا من طلبات البيانات من واجهة برمجة التطبيقات في فترة قصيرة إلى ظهور استجابة ErrorCode.BUSY. إذا ظهر لك هذا الخطأ، ننصحك باستخدام خوارزمية الرقود الأسي الثنائي لإعادة محاولة إرسال الطلب. ويمكن أيضًا عرض الخطأ ErrorCode.PER_APP_BATTERY_USE_QUOTA_EXCEEDED إذا تجاوز أحد التطبيقات حصة طويلة المدة (مثل الحصة اليومية).


تقديم ملاحظات حول تجربتك مع "Firebase AI Logic"