ยินดีต้อนรับกลับสู่ชุดบล็อกโพสต์ "สร้างแอป Android ที่ชาญฉลาด" ซึ่งเราจะนำแอป Android พื้นฐานมาเปลี่ยนให้เป็นประสบการณ์การใช้งานที่ปรับเปลี่ยนตามโปรไฟล์ของผู้ใช้ ชาญฉลาด และมีเอเจนต์ ในโพสต์ก่อนหน้า เราได้แนะนำ Jetpacker ซึ่งเป็นแอปเดโมที่เราจะใช้ตลอดทั้งชุดนี้
ในบล็อกโพสต์นี้ เราจะแชร์วิธีใช้ Gemini Nano ผ่าน Prompt API ของ ML Kit เพื่อสร้างฟีเจอร์อัจฉริยะในอุปกรณ์
การสร้างฟีเจอร์อัจฉริยะในอุปกรณ์หมายถึงความสามารถในการประมวลผลพรอมต์และข้อมูลในอุปกรณ์โดยตรงโดยไม่ต้องส่งข้อมูลไปยังเซิร์ฟเวอร์ ซึ่งมีข้อดีหลายประการ ดังนี้
- ประมวลผลข้อมูลผู้ใช้ในเครื่องในอุปกรณ์ได้ ซึ่งจะช่วยรักษาความเป็นส่วนตัวของผู้ใช้
- ฟังก์ชันการทำงานของโมเดลเชื่อถือได้แม้จะมีการเชื่อมต่ออินเทอร์เน็ตไม่สม่ำเสมอหรือไม่เชื่อมต่อเลย
- ไม่มีค่าใช้จ่ายในการอนุมานบนระบบคลาวด์เพิ่มเติม เนื่องจากทุกอย่างทำงานบนฮาร์ดแวร์ของผู้ใช้
เราได้พิจารณาถึงประโยชน์ของการใช้งานในอุปกรณ์และระบุฟีเจอร์ 3 อย่างที่จะเพิ่มใน Jetpacker เพื่อปรับปรุงประสบการณ์ของผู้ใช้ ได้แก่ การสรุปแผนการเดินทาง การจัดการค่าใช้จ่าย และการบันทึกเสียง
การสรุปข้อความสั้นๆ ที่ปรับแต่งมาอย่างมีคุณภาพ
หน้าจอแผนการเดินทางจะแสดงภาพรวมโดยย่อของกิจกรรมทั้งหมดสำหรับการเดินทางที่กำหนดให้แก่ผู้ใช้ เนื่องจากหน้าจอนี้มีข้อมูลจำนวนมาก จึงอาจทำให้คุณรู้สึกสับสนได้อย่างรวดเร็ว เราสามารถเพิ่มส่วน"เตรียมพร้อมสำหรับทริป"ไว้ที่ด้านบนเพื่อช่วยให้ผู้ใช้เตรียมตัวได้โดยไม่รู้สึกว่ามีข้อมูลมากเกินไป
การป้อนแผนการเดินทางและขอให้ LLM สรุปแผนดังกล่าวจะช่วยให้เราสร้างสรุปการเดินทางอย่างรวดเร็วพร้อมเคล็ดลับการจัดกระเป๋าและวลีท้องถิ่นที่เป็นประโยชน์ได้ นี่เป็นกรณีการใช้งานที่ยอดเยี่ยมสำหรับโมเดลในอุปกรณ์ด้วยเหตุผลหลายประการ
- ประสิทธิภาพและคุณภาพ: ทั้งข้อความอินพุตและเอาต์พุตค่อนข้างสั้น ด้วยเหตุนี้ เราจึงคาดหวังได้ว่าประสิทธิภาพและคุณภาพของโซลูชันในอุปกรณ์จะเทียบเท่ากับโมเดลบนคลาวด์ที่มีประสิทธิภาพมากกว่า
- ความสามารถในการปรับขนาด: การเปลี่ยนการอนุมานในอุปกรณ์ช่วยให้เราขยายฟีเจอร์นี้จากผู้ใช้เพียงไม่กี่รายเป็นผู้ใช้หลายล้านรายได้โดยไม่ต้องกังวลเรื่องการจัดการต้นทุนการอนุมานบนคลาวด์ที่เพิ่มขึ้น
- เวลาในการตอบสนองต่ำและความน่าเชื่อถือ: การอนุมานในอุปกรณ์รับประกันเวลาในการตอบสนองต่ำ ซึ่งจะมอบประสบการณ์ที่เชื่อถือได้แม้ว่าผู้ใช้จะออฟไลน์อยู่ก็ตาม
หากต้องการสร้างด้วยโมเดลในอุปกรณ์ เราจะใช้ Gemini Nano ซึ่งเป็นโมเดลที่มีประสิทธิภาพที่สุดของ Google ที่ได้รับการเพิ่มประสิทธิภาพสำหรับอุปกรณ์เคลื่อนที่ เราเปิดตัว Gemini Nano เป็นครั้งแรกเมื่อ 2-3 ปีก่อน และตอนนี้ Gemini Nano ทำงานบนอุปกรณ์กว่า 140 ล้านเครื่อง โมเดลเวอร์ชันล่าสุดอย่าง Gemini Nano 4 สร้างขึ้นบนพื้นฐานสถาปัตยกรรมของโมเดล Gemma 4 ที่เพิ่งเปิดตัว และได้รับการเพิ่มประสิทธิภาพเพิ่มเติมเพื่อประสิทธิภาพสูงสุดของแบตเตอรี่และประสิทธิภาพ
การใช้ Prompt API ของ ML Kit ช่วยให้เราใช้ประโยชน์จากความสามารถของโมเดลใหม่ของ Gemini Nano 4 เพื่อสร้างต้นแบบฟีเจอร์ในอุปกรณ์ได้ เราจะสร้างพรอมต์ที่มีแผนการเดินทางและขอให้โมเดลสร้างข้อมูลสรุปพร้อมเคล็ดลับการเตรียมตัว
โดยปกติแล้วการค้นหาพรอมต์ที่เหมาะสมที่สุดมักจะต้องมีการทำซ้ำ และแอป AICore ก็เหมาะสำหรับขั้นตอนนี้ในกระบวนการ หลังจากเลือกใช้ตัวเลือกเวอร์ชันตัวอย่างสำหรับนักพัฒนาซอฟต์แวร์ของ AICore แล้ว เราจะดาวน์โหลดโมเดลเวอร์ชันตัวอย่าง เช่น Gemini Nano 4 เพื่อทดสอบพรอมต์และดูเอาต์พุตที่คาดหวังของโมเดลได้ การปรับพรอมต์เพียงไม่กี่ครั้งช่วยให้เราปรับปรุงความเร็วในการตอบกลับจาก 13 วินาทีเป็นไม่ถึง 2 วินาทีได้ ดูการติดตั้งโค้ดขั้นสุดท้ายและพรอมต์ได้ที่นี่
[ASSET HERE - FILE TOO LARGE ATM]
การประมวลผลข้อมูลในเครื่องสำหรับข้อมูลจากผู้ใช้ที่ละเอียดอ่อน
จากนั้น เราจะสร้างเครื่องมือจัดการค่าใช้จ่ายที่ใช้งานง่ายเพื่อช่วยให้ผู้ใช้เพลิดเพลินกับการเดินทางมากยิ่งขึ้น ซึ่งจะช่วยลดภาระงานในการคัดแยกใบเสร็จและคำนวณงบประมาณ
เนื่องจากใบเสร็จอาจมีข้อมูลที่ละเอียดอ่อน เช่น หมายเลขบัตรเครดิตและที่อยู่ จึงเป็นอีกหนึ่งกรณีการใช้งานที่ยอดเยี่ยมสำหรับโซลูชันในอุปกรณ์ เมื่อใช้ในอุปกรณ์ ผู้ใช้จะมั่นใจได้ว่าระบบจะประมวลผลข้อมูลส่วนตัวในอุปกรณ์โดยไม่ต้องส่งข้อมูลไปยังระบบคลาวด์
นอกจากนี้ Gemini Nano 4 ยังปรับปรุงความสามารถของโมเดลสำหรับความสามารถในการประมวลผลข้อมูลหลายรูปแบบ โดยเฉพาะอย่างยิ่งสำหรับงานด้านการทำความเข้าใจรูปภาพ เช่น OCR และการดึงข้อมูลภาพ ซึ่งทำให้เป็นโซลูชันที่ยอดเยี่ยมสำหรับงานต่างๆ เช่น การดึงข้อมูลจากใบเสร็จ
สำหรับกรณีการใช้งานนี้ พรอมต์จะวิเคราะห์รูปภาพใบเสร็จ และแสดงข้อมูล เช่น ชื่อที่สร้างขึ้น จำนวนเงินที่ใช้จ่าย และหมวดหมู่ของค่าใช้จ่าย หากต้องการให้โมเดลแสดงข้อมูลในรูปแบบที่ต้องการ เราสามารถใช้ Structured Output API ของ ML Kit เพื่อแสดงออบเจ็กต์ข้อมูล 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 ของ ML Kit เมื่อมีข้อความที่ถอดเสียงแล้ว เราจะใช้ Prompt API ของ ML Kit เพื่อระบุกิจกรรมในทริปที่เชื่อมโยงกับบันทึกเสียงที่บันทึกไว้ ซึ่งจะช่วยให้ผู้ใช้สรุปทริปได้อย่างง่ายดายขณะเลื่อนดูแผนการเดินทางของทริป
API การจดจำเสียง GenAI ของ ML Kit ช่วยให้คุณถอดเสียงเนื้อหาเสียงเป็นข้อความในอุปกรณ์ได้อย่างสมบูรณ์โดยใช้ 2 โหมดที่แตกต่างกัน โหมดพื้นฐานใช้โมเดลการจดจำเสียงแบบดั้งเดิมในอุปกรณ์ และพร้อมใช้งานในอุปกรณ์ Android ส่วนใหญ่ที่มีระดับ API 31 ขึ้นไป โหมดขั้นสูงใช้ Gemini Nano เพื่อให้ครอบคลุมภาษาได้กว้างขึ้นและมีคุณภาพดีขึ้น โดยขณะนี้รองรับในอุปกรณ์ Pixel 10
สำหรับฟีเจอร์นี้ เราได้รวม Speech Recognition API เข้ากับ ML Kit GenAI 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)
}บทสรุป
การใช้ GenAI API ของ ML Kit ช่วยให้เราใช้ประโยชน์จาก Gemini Nano เพื่อพัฒนาฟีเจอร์อัจฉริยะในอุปกรณ์อย่างเต็มรูปแบบสำหรับแอป JetPacker และมอบประสบการณ์การใช้งานที่ดียิ่งขึ้นโดยไม่มีค่าใช้จ่ายเพิ่มเติมในระบบคลาวด์
ดูซอร์สโค้ดทั้งหมดของ Jetpacker ใน Github และดูวิดีโอสร้างแอป Android อัจฉริยะด้วย AI ของ Google เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีผสานรวมฟีเจอร์อัจฉริยะเข้ากับแอปโดยตรงโดยใช้โมเดลในอุปกรณ์ การให้เหตุผลที่ขับเคลื่อนด้วยระบบคลาวด์ และเฟรมเวิร์กแบบเอเจนต์ล่าสุด
ดูข้อมูลเพิ่มเติม
ดูส่วนอื่นๆ ของซีรีส์บล็อกโพสต์นี้ได้ที่
ส่วนที่ 1: บทนำของแอปและภาพรวมระดับสูง
ส่วนที่ 2 (โพสต์นี้) ความชาญฉลาดในอุปกรณ์ เจาะลึก GenAI API ของ ML Kit และ Gemini Nano เพื่อสร้างฟีเจอร์ที่เน้นความเป็นส่วนตัวเป็นอันดับแรก เช่น การสรุปแผนการเดินทาง การแยกวิเคราะห์ใบเสร็จ และการประมวลผลเสียงในเครื่อง
ส่วนที่ 3: การให้เหตุผลแบบไฮบริดและบนคลาวด์ ดูวิธีใช้ตรรกะ AI ของ Firebase เพื่ออ้างอิงคำตอบของ LLM จากข้อมูลในโลกแห่งความเป็นจริง เช่น Google Maps และบริบทของเว็บ
ส่วนที่ 4: การผสานรวมระบบ การผสานรวมกับระบบอัจฉริยะของ Android โดยใช้ AppFunctions
ส่วนที่ 5 (เร็วๆ นี้): เวิร์กโฟลว์ของ Agent ในแอป ขยายแอปด้วยผู้ช่วยการจองแบบครบวงจรที่ขับเคลื่อนโดย 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 เพื่อสร้างฟีเจอร์ AI แบบไฮบริดและแบบโฮสต์ในระบบคลาวด์
Ben Weiss • อ่าน 6 นาที
รับข้อมูลเชิงลึกด้านการพัฒนาแอป Android ล่าสุดส่งตรงถึงกล่องจดหมายของคุณทุกสัปดาห์