به مجموعه پستهای وبلاگ « ساخت برنامههای هوشمند اندروید » خوش آمدید، جایی که ما یک برنامه اندروید پایه را میگیریم و آن را به یک تجربه شخصیسازیشده ، هوشمند و عاملگرا تبدیل میکنیم. در پست قبلی خود، نحوه ساخت ویژگیهای هوشمند روی دستگاه را با استفاده از Gemini Nano از طریق Prompt API کیت ML بررسی کردیم.
در این پست، به چگونگی استفاده از منطق هوش مصنوعی فایربیس خواهیم پرداخت. برای ساخت ویژگیهای هوش مصنوعی ابری و ترکیبی:
- پاسخهای پایه در بستر دنیای واقعی
- مسیریابی پویای درخواستها بین اجرای ابری و محلی با استفاده از استنتاج ترکیبی
- ترجمه محتوا با سیستمهای مسیریابی سفارشی
گاهی اوقات یک مورد استفاده به مدلهای هوش مصنوعی با دانش جهانی بیشتر، پنجره زمینه بسیار بزرگتر یا توانایی مدیریت پرسوجوهای پیچیده نیاز دارد. در این سناریوها، میتوانیم از مدلهای ابری بهره ببریم.
در مواقع دیگر، شما بهترینهای هر دو دنیا را میخواهید: استفاده از استنتاج ترکیبی برای اجرا روی دستگاه در صورت امکان برای کاهش هزینهها، در حالی که برای اطمینان از سازگاری با همه دستگاهها، به فضای ابری بازمیگردید.

بیایید نگاهی به نحوه پیادهسازی سه ویژگی ابری و ترکیبی در Jetpacker بیندازیم:
- دستیار موزه با اتصال به زمین وب
- تهیه پیش نویس بررسی رستوران ترکیبی
- چت پشتیبانی هتل با ترجمه زنده سفارشی.
برای اطلاعات بهروز از LLM grounding استفاده کنید. چتبات دستیار موزه با LLM grounding
دستیار موزه یک چتبات تعاملی است که برای کمک به کاربران در برنامهریزی بازدید از موزه طراحی شده است. این ربات جزئیات بهروزی در مورد نمایشگاههای خاص، ساعات کاری فعلی، قیمت بلیط و موارد دیگر را در اختیار بازدیدکنندگان قرار میدهد.

هنگام ساخت ویژگیهای هوش مصنوعی، وادار کردن مدل به پاسخگویی با اطلاعات تازه، دقیق و خاص دنیای واقعی یک چالش رایج است. در حالی که مدلهای ابری دارای حجم عظیمی از دانش جهانی هستند، ممکن است از نمایشگاههای فصلی یا ساعات کاری روز جاری اطلاعی نداشته باشند.

برای پر کردن این شکاف، میتوانیم از تکنیکهای اتصال به زمین برای اضافه کردن زمینه اضافی به پنجره زمینه مدل استفاده کنیم. کیت توسعه نرمافزار Firebase AI Logic از سه نوع اتصال به زمین پشتیبانی میکند:
- اتصال به URL : اتصال به پاسخها با استفاده از محتوای یک صفحه وب خاص (مثلاً قیمت فعلی بلیط یا قوانین موزه).
- زمینهسازی جستجوی گوگل : اجازه دادن به مدل برای پرسوجوی آنی در فهرست جستجوی گوگل برای دریافت جزئیات بهروز.
- اتصال به زمین نقشهها : استفاده از دادههای مکانی گوگل مپ
در Jetpacker، ما به صورت پویا ابزارهای موجود را بر اساس feature flag های فعال شده میسازیم و مدل مولد را با استفاده از Firebase AI SDK مقداردهی اولیه میکنیم:
// implementation("com.google.firebase:firebase-ai-logic") private var toolList = mutableListOf<Tool>() init { if (ENABLE_SEARCH_GROUNDING) { toolList.add(Tool.googleSearch()) } if (ENABLE_URL_GROUNDING) { toolList.add(Tool.urlContext()) } } private val generativeModel = Firebase.ai(backend = GenerativeBackend.googleAI()) .generativeModel( modelName = "gemini-3-flash", systemInstruction = content { text("You are a helpful museum assistant answering questions about a museum. Use plain text.") }, tools = toolList )
وقتی کاربر از دستیار سوال میکند، اگر URL grounding فعال باشد، ما آدرسهای اینترنتی منابع خاص موزه را مستقیماً به اعلان اضافه میکنیم:
val groundingText = if (FeatureFlags.ENABLE_URL_GROUNDING) { "\n If the following message above is about the rules and terms to visit Le Louvre, " + "if needed answer this urls ${urlList.joinToString()}" } else { "" } val prompt = "$text $groundingText" var response = chat.sendMessage(prompt)
استنتاج ترکیبی: تولید بررسی روی دستگاه با لینک عمیق نقشهها
هر وظیفه هوش مصنوعی به یک مدل مبتنی بر ابر نیاز ندارد و هر دستگاهی آنلاین نیست. برای کمک به توسعهدهندگان در ایجاد تعادل بین تأخیر، هزینه و دسترسی آفلاین، ما اخیراً API فایربیس را برای استنتاج ترکیبی معرفی کردهایم.
در جتپکر، ویژگی نقد و بررسی رستوران به کاربران اجازه میدهد موضوعات انتخابی را بررسی کنند و بهطور خودکار یک نقد را پیشنویس کنند. برای فعال کردن این قابلیت برای همه کاربران، ما اجرای محلی را با Gemini Nano در اولویت قرار میدهیم و در دستگاههایی که از Gemini Nano پشتیبانی نمیکنند، به مدلهای ابری بازمیگردیم.

// implementation("com.google.firebase:firebase-ai-logic") // implementation("com.google.firebase:firebase-ai-ondevice:16.0.0-beta03") // Initialize the model with hybrid routing configuration val reviewModel = Firebase.ai.generativeModel( modelName = "gemini-3.1-flash-lite", onDeviceConfig = OnDeviceConfig( inferenceMode = InferenceMode.PREFER_ON_DEVICE ) )
رابط برنامهنویسی کاربردی استنتاج ترکیبی (Hybrid Inference API) از چهار حالت مسیریابی مجزا پشتیبانی میکند:
- PREFER_ON_DEVICE: اجرای محلی را در اولویت قرار میدهد و اگر Gemini Nano در دسترس نباشد، به فضای ابری برمیگردد.
- PREFER_IN_CLOUD: اجرای ابری را در اولویت قرار میدهد و در صورت آفلاین شدن دستگاه، به اجرای روی دستگاه برمیگردد.
- ONLY_ON_DEVICE: اجرا را صرفاً به دستگاه مورد نظر محدود میکند.
- ONLY_IN_CLOUD: اجرا را اکیداً به فضای ابری محدود میکند.
پس از ایجاد نظر، آن را در کلیپبورد کپی میکنیم و از یک اینتنت برای باز کردن مستقیم نقشههای گوگل به صفحه نظر رستوران استفاده میکنیم و یک تجربه کاربری یکپارچه ارائه میدهیم:
private fun copyAndOpenMapsReview(context: Context, reviewText: String, placeId: String) { val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager val clip = ClipData.newPlainText("User Review", reviewText) clipboard.setPrimaryClip(clip) val uri = Uri.parse("https://search.google.com/local/writereview/mobile?placeid=$placeId") val intent = Intent(Intent.ACTION_VIEW, uri).apply { setPackage("com.google.android.apps.maps") } context.startActivity(intent) }
مسیریابی ترکیبی سفارشی: ترجمه چت پشتیبانی هتل با شخصیتهای شبیهسازی شده
چت پشتیبانی هتل به گونهای ساخته شده است که به کاربران امکان میدهد تدارکات را نهایی کرده و جزئیات هتل را بررسی کنند. این ویژگی از دستورالعملهای سیستم برای پیکربندی یک دستیار پذیرش محلی استفاده میکند. با ارسال اطلاعات خاص - مانند زبان مورد نظر و اطلاعات هتل - در دستورالعملها، میتوانیم یک شخصیت محاورهای را که نماینده یک هتل خاص است، تنظیم کنیم.
private val generativeModel = Firebase.ai(backend = GenerativeBackend.googleAI()) .generativeModel( systemInstruction = content { text(""" You are a helpful hotel receptionist at $hotelName only speaking $language. Answer politely in $language. The bar closes at 10pm and breakfast is from 7am to 10am. There's someone at the desk 24/7. You can retrieve your luggage from the storage room at the back of the lobby at any time. """) }, modelName = "gemini-3-flash-preview" )
از آنجا که پاسخهای مسئول پذیرش به زبان محلی هتل است (برای مثال، برای هتل Le Meurice در پاریس، فرانسوی)، باید پیامها را به زبان دلخواه کاربر ترجمه کنیم.

در حالی که مدلهای ترکیبی میتوانند تنظیمات مسیریابی ساده را پیکربندی کنند، سناریوهای پیچیده نیاز به منطق مسیریابی سفارشی دارند. در Jetpacker، ما یک پشته مسیریابی سفارشی پیادهسازی میکنیم که موارد زیر را در نظر میگیرد:
- شناسایی زبان: با استفاده از API شناسایی زبان کیت یادگیری ماشین روی دستگاه، میتوانیم زبان پیام ورودی را تشخیص دهیم.
- ترجمه روی دستگاه (Gemini Nano): رابط برنامهنویسی کاربردی Prompt کیت ML به ما امکان میدهد جفتهای زبانی رایج را مستقیماً روی دستگاه ترجمه کنیم و در پهنای باند و هزینه ابری صرفهجویی کنیم.
- ترجمه ابری (Gemini 3 Flash): برای زبانهای پیچیدهتر، ما از Gemini Flash 3 برای ترجمه با کیفیت بالاتر استفاده میکنیم.
// implementation("com.google.android.gms:play-services-mlkit-language-id:17.0.0") // ML Kit for Language Identification (powered by Google Play Services) private val languageIdentifier = LanguageIdentification.getClient() // On-device translator model (prefer Gemini Nano) for translating common language pairs private val hybridTranslationModel = Firebase.ai(backend = GenerativeBackend.googleAI()) .generativeModel( modelName = "gemini-3-flash", onDeviceConfig = OnDeviceConfig(mode = InferenceMode.PREFER_ON_DEVICE) ) // Cloud translator model for more complex language pairs private val cloudTranslationModel = Firebase.ai(backend = GenerativeBackend.googleAI()) .generativeModel( modelName = "gemini-3-flash" )
وقتی پیامی نیاز به ترجمه دارد، ما زبان مبدا را شناسایی کرده و منطق مسیریابی سفارشی خود را اعمال میکنیم و ترجمه را یا روی دستگاه یا روی فضای ابری اجرا میکنیم:
fun translateMessage(message: SupportChatMessage) { viewModelScope.launch { // 1. Detect language using ML Kit Language Identification val sourceLang = try { Tasks.await(languageIdentifier.identifyLanguage(message.text)) } catch (e: Exception) { "Undefined" } // 2. Custom routing: we've verified the translation quality for English and Korean with Gemini Nano, and will translate message on-device for those two languages val routeToCloud = sourceLang != "en" && sourceLang != "kr" val prompt = "Translate the following text to $selectedLanguage. Just return the translated sentence: ${message.text}." val (translatedText, routePrefix) = if (routeToCloud) { val result = cloudTranslationModel.generateContent(prompt) result.text to "[Cloud]" } else { val result = hybridTranslationModel.generateContent(prompt) result.text to "[On-Device]" } if (translatedText != null) { _translations.update { current -> current + (message.id to "$routePrefix: $translatedText") } } } }
در این مثال، منطق مسیریابی سفارشی فقط زبان مبدا و مقصد ترجمه را در نظر میگیرد. با این حال، بر اساس مورد استفاده برنامه شما، میتوانید منطق مسیریابی را گسترش دهید تا عوامل دیگری مانند نسخه مدل دستگاه، اتصال به شبکه، وضعیت باتری و موارد دیگر را نیز در بر بگیرد.
ایمنسازی خطوط لوله هوش مصنوعی: بررسی برنامه Firebase
در نهایت، استفاده از هوش مصنوعی در فضای ابری، امکان سوءاستفاده از کلید API یا صدور صورتحساب غیرمجاز را فراهم میکند. برای ایمنسازی فراخوانیهای API، ما Firebase App Check را با استفاده از Play Integrity (در محیط تولید) و Debug Provider محلی (برای توسعه محلی یا شبیهسازها) ادغام کردیم.
در فایل JetPackerApplication.kt ، ما ارائهدهنده اشکالزدایی را در هنگام راهاندازی نصب میکنیم و احراز هویت ناشناس را برای ایجاد یک جلسه کاربری امن فعال میکنیم:
// implementation("com.google.firebase:firebase-appcheck-playintegrity") // implementation("com.google.firebase:firebase-appcheck-debug") // implementation("com.google.firebase:firebase-auth") override fun onCreate() { super.onCreate() Firebase.initialize(context = this) Firebase.appCheck.installAppCheckProviderFactory( DebugAppCheckProviderFactory.getInstance() ) Firebase.auth.signInAnonymously() }
هنگام ساخت به صورت محلی روی یک شبیهساز، App Check یک رمز توکن محلی را برای logcat چاپ میکند:
Enter this debug secret into the allow list in the Firebase Console: a8c2dd4c-xxxx-xxxx-xxxx-ef6c114ba27e
پس از ثبت در کنسول Firebase، درخواستهای محلی توسط App Check کاملاً تأیید و احراز هویت میشوند و از backend ما محافظت میکنند و در عین حال به ما اجازه میدهند برنامه را به صورت محلی آزمایش کنیم.
نتیجهگیری
By combining cloud model capabilities (grounding, system instructions) with on-device capabilities (hybrid routing, translation, security app checks), we created a travel app that is smart, secure, and available offline.
کد منبع کامل Jetpacker را در GitHub بررسی کنید و برای شروع، مستندات Firebase را بررسی کنید:
مستندات منطق هوش مصنوعی فایربیس
رابط برنامهنویسی استنتاج ترکیبی فایربیس
بیشتر بدانید
بخشهای دیگر این مجموعه پستهای وبلاگ را ببینید:
بخش اول : معرفی برنامه و مروری کلی بر آن.
بخش ۲ : هوش درون دستگاهی. برای ساخت ویژگیهای اولویتدار حریم خصوصی مانند خلاصهسازی برنامه سفر، تجزیه رسید و پردازش صوتی محلی، به بررسی عمیق APIهای GenAI کیت ML و Gemini Nano بپردازید.
بخش ۳ (این پست!): استدلال ترکیبی و ابری. نحوه استفاده از منطق هوش مصنوعی فایربیس را برای پایهریزی پاسخهای LLM در دادههای دنیای واقعی مانند نقشههای گوگل و زمینه وب بررسی کنید.
قسمت ۴: ادغام سیستم. ادغام با سیستم هوشمند اندروید با استفاده از AppFunctions.
بخش ۵ (به زودی): گردشهای کاری درونبرنامهای. برنامه را با یک دستیار رزرو سرتاسری که توسط A2UI و ADK پشتیبانی میشود، گسترش دهید.
به اطلاعات بیشتری در مورد توسعه اندروید علاقه دارید؟ توسعهدهندگان اندروید را در یوتیوب یا لینکدین دنبال کنید!
تمام قطعه کدهای موجود در این پست وبلاگ، از اطلاعیه حق نشر زیر پیروی میکنند:
Copyright 2026 Google LLC. SPDX-License-Identifier: Apache-2.0
چگونههابه مجموعه پستهای وبلاگ «ساخت برنامههای هوشمند اندروید» خوش آمدید، جایی که ما یک برنامه اندروید ساده را میگیریم و آن را به یک تجربه شخصیسازیشده، هوشمند و عاملگرا تبدیل میکنیم. در پست قبلیمان، Jetpacker را معرفی کردیم، برنامه آزمایشی که در طول این مجموعه از آن استفاده خواهیم کرد.
Caren Chang • 6 دقیقه مطالعه
چگونههاجتپکر یک اپلیکیشن نمایشی فنی است که تیم ما آن را از پایه برای کنفرانس Google I/O امسال (با استفاده از Antigravity) ساخت. در هسته خود، جتپکر به کاربران کمک میکند تا ماجراجویی بزرگ بعدی خود را برنامهریزی، کاوش و از آن لذت ببرند.
Jolanda Verhoef • 4 دقیقه خواندن
چگونههابه مجموعه پستهای وبلاگ «ساخت برنامههای هوشمند اندروید» خوش آمدید، جایی که ما یک برنامه اندروید پایه را میگیریم و آن را به یک تجربه شخصیسازیشده، هوشمند و عاملمحور تبدیل میکنیم. در پست قبلیمان، نحوه استفاده از منطق هوش مصنوعی فایربیس برای ساخت ویژگیهای هوش مصنوعی ابری و ترکیبی را بررسی کردیم.
Ben Weiss • ۶ دقیقه مطالعه
جدیدترین بینشهای توسعه اندروید را به صورت هفتگی در صندوق ورودی خود دریافت کنید.





