يمكنك إنشاء تطبيقات وميزات Android مستندة إلى الذكاء الاصطناعي مع استنتاج مختلط باستخدام Firebase AI Logic. تتيح الاستدلال المختلط تنفيذ الاستدلال باستخدام نماذج على الجهاز فقط عندما تكون متاحة، والرجوع بسلاسة إلى النماذج المستضافة على السحابة الإلكترونية في حال عدم توفّرها (والعكس صحيح).
توضّح هذه الصفحة كيفية البدء في استخدام حزمة تطوير البرامج (SDK) الخاصة بالعميل، بالإضافة إلى عرض خيارات وإمكانات إعدادات إضافية.
يُرجى العِلم أنّ ميزة "الاستدلال على الجهاز فقط" من خلال Firebase AI Logic متاحة لتطبيقات Android التي تستخدم الإصدار 17.10.0 أو إصدارًا أحدث من حزمة تطوير البرامج (SDK) الخاصة بـ Firebase AI Logic (الإصدار 34.10.0 أو إصدارًا أحدث من BoM) وتعمل على أجهزة معيّنة. وتخضع هذه الميزة لبنود خدمة ML Kit والبنود الخاصة بجوانب الذكاء الاصطناعي التوليدي في ML Kit.
حالات الاستخدام المقترَحة والإمكانات المتاحة
حالات الاستخدام المقترَحة
يوفّر استخدام نموذج على الجهاز فقط للاستدلال المزايا التالية:
- الخصوصية المحسَّنة
- السياق المحلي
- الاستدلال بدون تكلفة
- وظائف بلا إنترنت
توفّر وظائف الوضع المختلط ما يلي:
- الوصول إلى المزيد من الجمهور من خلال توفير النموذج على الجهاز فقط والسماح بالاتصال بالإنترنت
الميزات والإمكانات المتوافقة مع الاستنتاج على الجهاز فقط
لا تتيح الاستنتاجات على الجهاز فقط سوى إنشاء النصوص في محادثة واحدة (وليس في محادثة متواصلة)، مع إمكانية بث المحتوى أو عدم بثه. تتيح هذه الميزة إمكانات إنشاء النصوص التالية:
إنشاء نص من إدخال نصي فقط
إنشاء نص من مدخلات نصية ومرئية، وتحديدًا صورة نقطية واحدة كمدخل
يُرجى مراجعة قائمة الميزات غير المتاحة بعد للاستدلال على الجهاز فقط في أسفل هذه الصفحة.
قبل البدء
يُرجى مراعاة ما يلي:
واجهات برمجة التطبيقات المتوافقة:
تستخدم ميزة "الاستدلال على السحابة الإلكترونية" موفّر خدمة Gemini API الذي اخترته (إما Gemini Developer API أو Agent Platform Gemini API (formerly Vertex AI)).
تستخدم ميزة "الاستنتاج على الجهاز فقط" Prompt API من حزمة تعلّم الآلة، وهي إصدار تجريبي متاح فقط على أجهزة معيّنة.
توضّح هذه الصفحة كيفية البدء.
بعد إكمال عملية الإعداد العادية هذه، اطّلِع على خيارات وإمكانات الإعداد الإضافية.
أجهزة Android المتوافقة ونماذجها على الجهاز فقط
بالنسبة إلى الاستدلال على الجهاز فقط (الذي يستخدم Prompt API من حزمة تعلّم الآلة)، يمكنك الاطّلاع على قائمة الأجهزة المتوافقة ونماذجها على الجهاز فقط في مستندات حزمة تعلّم الآلة.
البدء
توضّح خطوات البدء هذه عملية الإعداد العامة المطلوبة لأي طلب موجّه مدعوم تريد إرساله.
الخطوة 1: إعداد مشروع Firebase وربط تطبيقك بـ Firebase
سجِّل الدخول إلى Firebase وحدة التحكّم، ثم اختَر مشروع Firebase.
في وحدة تحكّم Firebase، انتقِل إلى خدمات الذكاء الاصطناعي > منطق الذكاء الاصطناعي.
انقر على Get started (البدء) لتشغيل سير عمل موجّه يساعدك في إعداد واجهات برمجة التطبيقات والموارد المطلوبة لمشروعك.
إذا طُلب منك ذلك، اتّبِع التعليمات الظاهرة على الشاشة لتسجيل تطبيقك وإضافة إعدادات Firebase إليه.
عندما يُطلب منك اختيار "مقدّم خدمة Gemini API"، ننصحك باختيار Gemini Developer API، ما يتيح لك البدء بسرعة بدون أي تكلفة.
في أي وقت لاحق، يمكنك إعداد Agent Platform Gemini API (formerly Vertex AI) (ومتطلباته المتعلقة بالفوترة).
تابِع في سير العمل لإعداد واجهات برمجة التطبيقات والخدمات المرتبطة المطلوبة لتطبيق Firebase AI Logic.
اعتبارًا من أوائل يوليو 2026، ستفرض هذه المرحلة من سير العمل تلقائيًا استخدام Firebase App Check مع AI Logic، وهي خدمة مهمة تساعد في حماية Gemini API عند الوصول إليه مباشرةً من تطبيقك. وكجزء من خطوات البدء (راجِع الخطوات لاحقًا في هذا الدليل)، عليك ضبط App Check مقدّم خدمة تصحيح الأخطاء للتطوير المحلي عند فرض استخدام App Check.
انتقِل إلى الخطوة التالية في هذا الدليل لإضافة حِزم SDK المطلوبة إلى تطبيقك.
الخطوة 2: إضافة حِزم تطوير البرامج (SDK) المطلوبة
توفّر حزمة تطوير البرامج (SDK) لنظام التشغيل Firebase AI Logic Android
(firebase-aifirebase-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:17.17.0") implementation("com.google.firebase:firebase-ai-ondevice:16.0.0-beta05") implementation("com.google.firebase:firebase-appcheck-debug:19.4.1") }
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:17.17.0") implementation("com.google.firebase:firebase-ai-ondevice:16.0.0-beta05") implementation("com.google.firebase:firebase-appcheck-debug:19.4.1") // 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 للتطوير المحلي
اعتبارًا من أوائل يوليو 2026، وكجزء من آلية الإعداد الموجّه لميزة AI Logic في Play Console، سيتم فرض استخدام Firebase App Check تلقائيًا لحماية Gemini API. للتطوير على الجهاز، عليك ضبط App Check موفر تصحيح الأخطاء لتجاوز عملية التصديق مع الحفاظ على فرض App Check.
في إصدار مخصص لتصحيح الأخطاء، اضبط 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());احصل على رمز تصحيح الأخطاء:
شغِّل تطبيقك في المحاكي أو على جهاز الاختبار.
ابحث عن App Check رمز تصحيح الأخطاء في سجلاتك. على سبيل المثال:
D DebugAppCheckProvider: Enter this debug secret into the allow list in the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678انسخ الرمز المميّز (مثلاً،
123a4567-b89c-12d3-e456-789012345678).
سجِّل رمز تصحيح الأخطاء باستخدام App Check:
في Firebase Console، انتقِل إلى علامة التبويب الأمان > فحص التطبيقات > التطبيقات.
ابحث عن تطبيقك، وانقر على القائمة الكاملة ()، ثم اختَر إدارة رموز تصحيح الأخطاء.
اتّبِع التعليمات الظاهرة على الشاشة لتسجيل رمز تصحيح الأخطاء.
للحصول على تفاصيل حول مقدّم خدمة تصحيح الأخطاء (بما في ذلك كيفية الحصول على رمز تصحيح أخطاء جديد)، اطّلِع على مستندات 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) إلى النموذج المستضاف على السحابة الإلكترونية أو ستطرح استثناءً (اطّلِع على التفاصيل حول سلوك أوضاع الاستدلال).
تتولّى خدمة تابعة لنظام التشغيل Android المسماة AICore إدارة النموذج والإصدار اللذين يتم تنزيلهما، وتحديث النموذج، وما إلى ذلك. يُرجى العِلم أنّه سيتم تنزيل نموذج واحد فقط على الجهاز، لذا إذا كان تطبيق آخر على الجهاز قد نزّل النموذج المتوفّر على الجهاز فقط بنجاح من قبل، سيُظهر هذا الإجراء أنّ النموذج متاح.
تحسين وقت الاستجابة
لتحسين أداء أول طلب استنتاج، يمكنك أن يطلب تطبيقك
onDeviceExtension?.warmUp()
(متاح حاليًا للغة Kotlin فقط). يؤدي ذلك إلى تحميل النموذج على الجهاز فقط في الذاكرة وتهيئة مكوّنات وقت التشغيل.
الخطوة 5: تهيئة الخدمة وإنشاء مثيل للنموذج
|
انقر على مزوّد Gemini API لعرض المحتوى والرمز الخاصين بالمزوّد على هذه الصفحة. |
يجب إعداد ما يلي قبل إرسال طلب إلى النموذج.
ابدأ الخدمة لمقدّم واجهة برمجة التطبيقات الذي اخترته.
أنشئ مثيلاً
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: إرسال طلب إلى نموذج
يوضّح لك هذا القسم كيفية إرسال أنواع مختلفة من الإدخالات لإنشاء أنواع مختلفة من المخرجات، بما في ذلك:
إنشاء نص من إدخال نصي فقط
| قبل تجربة هذا النموذج، تأكَّد من إكمال قسم البدء في هذا الدليل. |
يمكنك استخدام
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()
لإنشاء نص من طلب يتضمّن نصًا وما يصل إلى ملف صورة واحد
(Bitmap فقط)، وذلك من خلال تقديم 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).
ما هي المهام الأخرى التي يمكن لمساعد Google تنفيذها؟
يمكنك استخدام خيارات وإمكانات إضافية مختلفة لتجاربك المختلطة، وهي:
الميزات غير المتوفّرة بعد للاستدلال على الجهاز فقط
بما أنّها إصدار تجريبي، لا تتوفّر جميع إمكانات النماذج المستندة إلى السحابة الإلكترونية للاستدلال على الجهاز فقط.
الميزات المدرَجة في هذا القسم غير متاحة بعد للاستدلال على الجهاز فقط. إذا أردت استخدام أيّ من هذه الميزات، ننصحك باستخدام وضع الاستدلال ONLY_IN_CLOUD للحصول على تجربة أكثر اتساقًا.
إنشاء نص من أنواع ملفات الصور التي تم إدخالها غير Bitmap (الصورة المحمّلة في الذاكرة)
إنشاء نص من أكثر من ملف صورة واحد
إنشاء نص من مدخلات الصوت والفيديو والمستندات (مثل ملفات PDF)
إنشاء صور باستخدام نماذج Gemini
توفير الملفات باستخدام عناوين URL في الطلبات المتعددة الوسائط يجب تقديم الملفات كبيانات مضمّنة لنماذج على الجهاز فقط
إرسال طلبات تتجاوز 4,000 رمز مميز (أو حوالي 3,000 كلمة باللغة الإنجليزية)
محادثة مترابطة
تزويد النموذج بالأدوات التي تساعده في إنشاء الردود (مثل استدعاء الدالة، وتطبيق الرموز البرمجية، وسياق عناوين URL، وتحديد المصدر باستخدام
Google Search ، وتحديد المصدر باستخدامGoogle Maps )
لا تعرض ميزة المراقبة المستندة إلى الذكاء الاصطناعي في وحدة تحكّم Firebase أي بيانات حول الاستدلال على الجهاز (بما في ذلك السجلات على الجهاز). ومع ذلك، يمكن مراقبة أي استنتاج يستخدم نموذجًا مستضافًا على السحابة الإلكترونية تمامًا مثل أي استنتاج آخر من خلال Firebase AI Logic.
القيود الإضافية
بالإضافة إلى ما سبق، تتضمّن عملية الاستدلال على الجهاز فقط القيود التالية (يمكنك الاطّلاع على مزيد من المعلومات في مستندات حزمة تعلّم الآلة):
يجب أن يستخدم المستخدم النهائي لتطبيقك جهازًا متوافقًا لإجراء الاستدلال على الجهاز فقط.
لا يمكن لتطبيقك إجراء استنتاج على الجهاز إلا عندما يكون في المقدّمة.
تم التحقّق من صحة اللغتَين الإنجليزية والكورية فقط للاستدلال على الجهاز فقط.
الحد الأقصى لعدد الرموز المميّزة المسموح بها لطلب الاستنتاج الكامل على الجهاز فقط هو 4,000 رمز مميّز. إذا كانت طلباتك قد تتجاوز هذا الحد، احرص على ضبط وضع استنتاج يمكنه استخدام نموذج مستضاف على السحابة الإلكترونية.
ننصحك بتجنُّب حالات استخدام الاستدلال على الجهاز فقط التي تتطلّب إخراجًا طويلاً (أكثر من 256 رمزًا مميزًا).
تفرض خدمة AICore (وهي خدمة تابعة لنظام التشغيل Android تدير النماذج على الجهاز فقط) حصة استنتاج لكل تطبيق. سيؤدي تقديم عدد كبير جدًا من طلبات البيانات من واجهة برمجة التطبيقات خلال فترة قصيرة إلى ظهور الرد
ErrorCode.BUSY. إذا تلقّيت هذا الخطأ، ننصحك باستخدام خوارزمية الرقود الأسي الثنائي لإعادة محاولة الطلب. يمكن أيضًا إرجاعErrorCode.PER_APP_BATTERY_USE_QUOTA_EXCEEDEDإذا تجاوز تطبيق حصة طويلة المدة (على سبيل المثال، الحصة اليومية).
تقديم ملاحظات حول تجربتك مع Firebase AI Logic