نرحّب بكم مجددًا في سلسلة المنشورات "إنشاء تطبيقات Android ذكية" التي نحول فيها تطبيق Android أساسي إلى تجربة مخصّصة وذكية واستباقية. في المنشور السابق، قدّمنا تطبيق Jetpacker، وهو التطبيق التجريبي الذي سنستخدمه طوال هذه السلسلة.
في هذا المنشور، سنشارك كيفية استخدام Gemini Nano من خلال واجهة برمجة التطبيقات Prompt API في حزمة تعلّم الآلة لإنشاء ميزات ذكية على الجهاز فقط.
يشير إنشاء ميزات ذكية على الجهاز فقط إلى إمكانية معالجة الطلبات والبيانات مباشرةً على الجهاز بدون إرسال البيانات إلى خادم. ويوفّر ذلك بعض المزايا:
- يمكن معالجة بيانات المستخدم محليًا على الجهاز، ما يحافظ على خصوصية المستخدم
- تكون وظائف النموذج موثوقة حتى في حال عدم توفّر اتصال بالإنترنت أو توفّره بشكل متقطّع
- لا توجد تكلفة إضافية للاستدلال على السحابة الإلكترونية، لأنّ كل شيء يعمل على أجهزة المستخدم
مع الأخذ في الاعتبار مزايا الاستدلال على الجهاز فقط، حدّدنا ثلاث ميزات لإضافتها في Jetpacker يمكنها تحسين تجربة المستخدم، وهي تلخيص مسارات الرحلات وإدارة النفقات وتسجيل الملاحظات الصوتية.
تلخيص مخصّص وعالي الجودة للنصوص القصيرة
تمنح شاشة مسار الرحلة المستخدمين نظرة عامة سريعة على جميع الأنشطة لرحلة معيّنة. وبما أنّ هذه الشاشة تحتوي على الكثير من المعلومات، يمكن أن تصبح مربكة بسرعة. لمساعدة المستخدمين في الاستعداد بدون الشعور بالإرباك، يمكننا إضافة قسم "الاستعداد لرحلتك" في أعلى الشاشة.
من خلال إدخال مسار رحلة وطلب تلخيصه من نموذج لغوي كبير، يمكننا إنشاء ملخّص سريع للرحلة بالإضافة إلى نصائح حول التعبئة وعبارات محلية مفيدة. هذه حالة استخدام رائعة لنموذج على الجهاز فقط لعدة أسباب:
- الأداء والجودة: يكون كل من النص المُدخَل والمُخرَج قصيرًا نسبيًا. وبذلك، يمكننا توقُّع أن يكون أداء وجودة الحل على الجهاز فقط على قدم المساواة مع النماذج السحابية الأكثر فعالية.
- قابلية التوسّع: يتيح لنا نقل الاستنتاج على الجهاز فقط توسيع نطاق هذه الميزة من عدد قليل من المستخدمين إلى الملايين بدون القلق بشأن إدارة تكاليف الاستنتاج المتزايدة على السحابة الإلكترونية.
- وقت الاستجابة المنخفض والموثوقية: يضمن الاستدلال على الجهاز فقط وقت استجابة منخفضًا، ما يوفّر تجربة موثوقة حتى عندما يكون المستخدمون غير متصلين بالإنترنت.
لإنشاء ميزات على الجهاز فقط، نستخدم Gemini Nano، وهو النموذج الأكثر فعالية من Google والمحسّن للأجهزة الجوّالة. تم طرح Gemini Nano لأول مرة قبل بضع سنوات، وهو يعمل الآن على أكثر من 140 مليون جهاز. يستند أحدث إصدار من النموذج، Gemini Nano 4، إلى أساس بنية نموذج Gemma 4 الذي تم إصداره مؤخرًا، وتم تحسينه بشكل أكبر لتحقيق أقصى قدر من كفاءة البطارية والأداء.
باستخدام واجهة برمجة التطبيقات Prompt API في حزمة تعلّم الآلة، يمكننا الاستفادة من إمكانات النموذج الجديد في Gemini Nano 4 لإنشاء نماذج أولية لميزاتنا على الجهاز فقط. سننشئ طلبًا يتضمّن برنامج رحلة ونطلب من النموذج إنشاء ملخّص بالإضافة إلى أي نصائح حول الاستعداد.
يتطلب العثور على الطلب الأمثل بعض التكرار، وتطبيق AICore مثالي لهذه الخطوة في العملية. بعد الاشتراك في معاينة المطوّر لخدمة AICore، يمكننا تنزيل نماذج المعاينة، مثل Gemini Nano 4، لاختبار الطلبات والاطّلاع على النتائج المتوقّعة للنموذج. بعد إجراء بعض التكرارات على الطلب، تمكّنا من تحسين سرعة الرد من 13 ثانية إلى أقل من ثانيتَين. يمكنك الاطّلاع هنا على تنفيذ الرمز النهائي والطلب.
[ASSET HERE - FILE TOO LARGE ATM]
المعالجة المحلية لبيانات أدخلها المستخدم الحسّاسة
بعد ذلك، لمساعدة المستخدمين في الاستمتاع برحلتهم بشكل أكبر، سننشئ مدير نفقات بسيطًا يزيل العمل اليدوي المتمثل في فرز الإيصالات وحساب الميزانيات.
بما أنّ الإيصالات قد تحتوي على معلومات حسّاسة، مثل رقم بطاقة الائتمان والعناوين، فهذه حالة استخدام رائعة أخرى لحل على الجهاز فقط. باستخدام حل على الجهاز فقط، يمكن للمستخدمين التأكّد من أنّ المعلومات الخاصة ستتم معالجتها محليًا على الجهاز بدون إرسال أي من بياناتهم إلى السحابة الإلكترونية.
بالإضافة إلى ذلك، حسّن Gemini Nano 4 إمكانات النموذج المتعدد الوسائط، خاصةً لمهام فهم الصور، مثل التعرّف البصري على الأحرف واستخراج البيانات المرئية، ما يجعله حلاً رائعًا لمهام مثل استخراج المعلومات من الإيصالات.
في حالة الاستخدام هذه، سيحلّل الطلب صورة للإيصال، ويعرض معلومات مثل عنوان تم إنشاؤه والمبلغ الذي تم إنفاقه وفئة النفقات. لضمان أن يعرض النموذج المعلومات بالتنسيق المفضّل، يمكننا استخدام واجهة برمجة التطبيقات Structured Output API في حزمة تعلّم الآلة لعرض عنصر بيانات Kotlin نحدّده بسلاسة.
// implementation("com.google.mlkit:genai-prompt:1.0.0-beta3")
// ksp("com.google.mlkit:genai-schema-compiler:1.0.0-alpha1")
@Generable("Information extracted from an expense receipt")
data class ParsedReceipt(
@Guide("Generated title for the expense less than 6 words. Based on restaurant or activity name.")
val title: String,
@Guide("Total amount of the expense. Look for values at the bottom and words like total or balance due.")
val amount: Double,
@Guide("Type of expense", enumValues = ["travel", "food", "shopping", "entertainment", "other"])
val category: String,
)
val prompt = "Determine if the image is a receipt or expense.
If it is NOT a receipt or expense, output the text 'NOT_A_RECEIPT'.
Otherwise, parse the receipt information."
val request = generateContentRequest(ImagePart(bitmap), TextPart(prompt)) {}
val requestWithStructuredOutput = generateTypedContentRequest(request, ParsedReceipt::class)
// Define the configuration for Gemini Nano 4 E4B preview model
// When selecting models, you can specify which performance charactertists are most important
// for your use case. Use ModelPreference.FULL when you want to prioritize reasoning power over speed.
// Use ModelPreference.FAST when complex logic is not required and latency is a priority.
val previewFullConfig = generationConfig {
modelConfig = modelConfig {
releaseStage = ModelReleaseStage.PREVIEW
preference = ModelPreference.FULL
}
}
val geminiNano4BPreviewModel = Generation.getClient(previewFullConfig)
val response = geminiNano4BPreviewModel.generateContent(requestWithStructuredOutput)
val parsedReceipt: ParsedReceipt? = response.candidates.firstOrNull()?.responseإدخال متعدد الوسائط
أخيرًا، لمساعدة المستخدمين في تسجيل المذكرات الصوتية أثناء الرحلة، لننشئ ميزة ملاحظات صوتية على الجهاز فقط. باستخدام واجهة برمجة التطبيقات Speech Recognition API في حزمة تعلّم الآلة، سنسمح للمستخدمين بتسجيل ملاحظات صوتية قصيرة يتم تحويلها تلقائيًا إلى نص. باستخدام النص المحوّل، سنستخدم واجهة برمجة التطبيقات Prompt API في حزمة تعلّم الآلة لتحديد نشاط الرحلة المرتبط بالملاحظة الصوتية المسجّلة، ما يتيح للمستخدمين تلخيص رحلتهم بسهولة أثناء التمرير خلال مسار الرحلة.
تتيح لك واجهة برمجة التطبيقات ML Kit GenAI Speech Recognition API تحويل المحتوى الصوتي إلى نص على الجهاز بالكامل باستخدام وضعَين مختلفَين.يستخدم الوضع الأساسي نموذجًا تقليديًا للتعرّف على الكلام على الجهاز فقط، ويتوفّر على معظم أجهزة Android التي تعمل بمستوى واجهة برمجة التطبيقات 31 والإصدارات الأحدث.يستخدم الوضع المتقدّم Gemini Nano لتوفير تغطية لغوية أوسع وجودة أفضل، وهو متوافق حاليًا مع أجهزة Pixel 10.
بالنسبة إلى ميزتنا، نجمع بين واجهة برمجة التطبيقات للتعرف على الكلام وواجهة برمجة التطبيقات Prompt API لحزمة تعلّم الآلة والذكاء الاصطناعي التوليدي:
// implementation("com.google.mlkit:genai-prompt:1.0.0-beta3")
// implementation("com.google.mlkit:genai-speech-recognition:1.0.0-alpha1")
val tripEvents = ...
// Set up speech recognition
val speechRecognizerOptions =
speechRecognizerOptions {
locale = Locale.US
preferredMode = SpeechRecognizerOptions.Mode.MODE_ADVANCED
}
val speechRecognizer: SpeechRecognizer = SpeechRecognition.getClient(speechRecognizerOptions)
suspend fun transcribeVoiceNote(recognizer: SpeechRecognizer) {
// Display partial text as the user is recording audio
var partialTextResponse = ""
// Display the full text once user is finished recording audio
var transcription = ""
val request: SpeechRecognizerRequest
= speechRecognizerRequest { audioSource = AudioSource.fromMic() }
recognizer.startRecognition(request).collect { response ->
when (response) {
is SpeechRecognizerResponse.PartialTextResponse -> {
partialTextResponse = response.text
}
is SpeechRecognizerResponse.FinalTextResponse -> {
transcription = response.text
processAndCategorizeVoiceNote(transcription, tripEvents)
}
}
}
}
fun processAndCategorizeVoiceNote(transcribedVoiceNote: String, events: List<Event>) {
val prompt = "Given the voice note $transcribedVoiceNote
and the following events for this trip: $events, rewrite this transcription
to remove filler words. Then, identify which events from the
list this rewritten transcription matches to."
// Utilize ML Kit's Prompt API to process voice note and tag it with the relevant trip activities
Generation.getClient().generateContent(prompt)
}الخاتمة
باستخدام واجهات برمجة التطبيقات للذكاء الاصطناعي التوليدي في حزمة تعلّم الآلة، تمكّنا من الاستفادة من Gemini Nano لتطوير ميزات ذكية على الجهاز فقط لتطبيق JetPacker، وتوفير تجربة مستخدم محسّنة بدون أي تكاليف إضافية على السحابة الإلكترونية.
يمكنك الاطّلاع على رمز المصدر الكامل لتطبيق Jetpacker على GitHub، ومشاهدة الفيديو إنشاء تطبيقات Android ذكية باستخدام الذكاء الاصطناعي من Google لمعرفة المزيد عن كيفية دمج الميزات الذكية مباشرةً في تطبيقك باستخدام النماذج على الجهاز فقط والاستدلال المستند إلى السحابة الإلكترونية وأحدث الأُطر التي تستند إلى الذكاء الاصطناعي الوكيل.
مزيد من المعلومات
يمكنك الاطّلاع على الأجزاء الأخرى من سلسلة المنشورات هذه:
الجزء 1: تقديم التطبيق ونظرة عامة عالية المستوى
الجزء 2 (هذا المنشور): الذكاء على الجهاز فقط. نظرة متعمّقة على واجهات برمجة التطبيقات GenAI في حزمة تعلّم الآلة وGemini Nano لإنشاء ميزات تضع الخصوصية في المقام الأول، مثل تلخيص مسار الرحلة وتحليل الإيصالات ومعالجة الصوت محليًا
الجزء 3: الاستدلال المختلط والسحابي استكشاف كيفية استخدام Firebase AI Logic لتأسيس إجابات النموذج اللغوي الكبير على بيانات العالم الحقيقي، مثل "خرائط Google" وسياق الويب
الجزء 4: دمج النظام الدمج مع نظام الذكاء في Android باستخدام AppFunctions
الجزء 5 (سيتم نشره قريبًا): عمليات سير العمل الاستباقية داخل التطبيق توسيع نطاق التطبيق باستخدام مساعد حجز شامل مستند إلى A2UI وADK
هل تريدون معرفة المزيد عن تطوير تطبيقات Android؟ يمكنكم متابعة Android Developers على YouTube أو LinkedIn.
تتّبع جميع مقتطفات الرموز في هذا المنشور إشعار حقوق الطبع والنشر التالي:
Copyright 2026 Google LLC. SPDX-License-Identifier: Apache-2.0
-
مقالات إرشاديةنرحّب بكم مجددًا في سلسلة المنشورات "إنشاء تطبيقات Android ذكية" التي نحول فيها تطبيق Android أساسي إلى تجربة مخصّصة وذكية واستباقية.
Thomas Ezan, Jolanda Verhoef, Caren Chang • قراءة لمدة 8 دقائق -
مقالات إرشاديةJetpacker هو تطبيق عرض فني أنشأه فريقنا من البداية لمؤتمر Google I/O لهذا العام (تم إنشاؤه باستخدام Antigravity). يساعد Jetpacker المستخدمين بشكل أساسي في التخطيط لمغامرتهم الكبيرة التالية واستكشافها والاستمتاع بها.
Jolanda Verhoef • قراءة لمدة 4 دقائق -
مقالات إرشاديةنرحّب بكم مجددًا في سلسلة المنشورات "إنشاء تطبيقات Android ذكية" التي نحول فيها تطبيق Android أساسي إلى تجربة مخصّصة وذكية واستباقية. في المنشور السابق، استكشفنا كيفية الاستفادة من Firebase AI Logic لإنشاء ميزات ذكاء اصطناعي مستضافة على السحابة الإلكترونية وميزات ذكاء اصطناعي مختلطة.
Ben Weiss • قراءة لمدة 6 دقائق
يمكنكم تلقّي أحدث الإحصاءات حول تطوير تطبيقات Android أسبوعيًا في بريدكم الوارد.