AppFunctions ช่วยให้แอป Android แชร์ฟังก์ชันการทำงานที่เฉพาะเจาะจง ซึ่งระบบ รวมถึงเอเจนต์และผู้ช่วย AI ต่างๆ สามารถค้นพบและเรียกใช้ได้ การกำหนดฟังก์ชันเหล่านี้จะช่วยให้แอปของคุณให้บริการ ข้อมูล และ การดำเนินการแก่ระบบปฏิบัติการ Android ซึ่งช่วยให้ผู้ใช้ทำงานให้เสร็จสมบูรณ์ผ่านเอเจนต์ AI และการโต้ตอบระดับระบบได้
AppFunctions ทำหน้าที่เป็นเครื่องมือเทียบเท่ากับเครื่องมือในอุปกรณ์เคลื่อนที่ภายในModel Context
Protocol (MCP) แม้ว่าโดยปกติแล้ว MCP จะกำหนดมาตรฐานวิธีที่เอเจนต์
เชื่อมต่อกับเครื่องมือฝั่งเซิร์ฟเวอร์ แต่ AppFunctions ก็มีกลไกเดียวกันสำหรับ
แอป Android ซึ่งช่วยให้คุณแสดงความสามารถของแอปเป็น "เครื่องมือ" ที่สามารถจัดระเบียบได้ ซึ่งแอปที่ได้รับอนุญาต (ผู้โทร) สามารถค้นพบและเรียกใช้ เพื่อตอบสนองความตั้งใจของผู้ใช้ ผู้โทรต้องมีสิทธิ์EXECUTE_APP_FUNCTIONS
ในการค้นหาและเรียกใช้ AppFunction รวมถึงสามารถรวมเอเจนต์ แอป
และผู้ช่วย AI เช่น Gemini
AppFunctions ทำงานร่วมกับอุปกรณ์ที่ใช้ Android 16 ขึ้นไป
ตัวอย่างกรณีการใช้งาน
AppFunctions เป็นกลไกที่มีประสิทธิภาพในการทำให้งานเป็นอัตโนมัติและปรับปรุงการโต้ตอบของผู้ใช้ การแสดงความสามารถของแอปจะช่วยให้ผู้ใช้ บรรลุเป้าหมายที่ซับซ้อนได้โดยใช้ภาษาที่เป็นธรรมชาติ ซึ่งมักจะช่วยลดความจำเป็นในการ นำทางด้วยตนเองแบบทีละขั้นตอนด้วย UI ของคุณ
สถานการณ์ต่อไปนี้แสดงให้เห็นวิธีใช้ AppFunctions เพื่อขับเคลื่อน ประสบการณ์ภายในหมวดหมู่แอปต่างๆ
- การจัดการงานและประสิทธิภาพการทำงาน
- คำขอของผู้ใช้: "เตือนให้ฉันไปรับพัสดุที่ทำงานวันนี้ตอน 5 โมงเย็น"
- การดำเนินการ AppFunction: ผู้โทรระบุแอปการจัดการงานที่เกี่ยวข้อง และเรียกใช้ฟังก์ชันเพื่อสร้างงาน โดยจะป้อนข้อมูลในช่องชื่อ เวลา และสถานที่โดยอัตโนมัติ ตามพรอมต์ของผู้ใช้
- สื่อและความบันเทิง
- คำขอของผู้ใช้: "สร้างเพลย์ลิสต์ใหม่ที่มีอัลบั้มแจ๊สยอดนิยมจาก ปีนี้"
- การดำเนินการ AppFunction: ผู้เรียกใช้จะเรียกใช้ฟังก์ชันการสร้างเพลย์ลิสต์ ภายในแอปเพลง โดยส่งบริบท เช่น "อัลบั้มแจ๊สยอดนิยมสำหรับปี 2026" เป็น คำค้นหาเพื่อสร้างและเปิดเนื้อหาทันที
- เวิร์กโฟลว์ข้ามแอป
- คำขอของผู้ใช้: "ค้นหาสูตรก๋วยเตี๋ยวจากอีเมลของ Lisa แล้วเพิ่ม ส่วนผสมลงในรายการช็อปปิ้งของฉัน"
- การดำเนินการ AppFunction: คำขอนี้ใช้ฟังก์ชันจากหลายแอป ก่อนอื่น ผู้โทรจะใช้ฟังก์ชันค้นหาของแอปอีเมลเพื่อดึงเนื้อหา จากนั้นจะดึงส่วนผสมที่เกี่ยวข้องและเรียกใช้ฟังก์ชันของแอปรายการช็อปปิ้งเพื่อเพิ่มรายการของผู้ใช้
- ปฏิทินและการกำหนดเวลา
- คำขอของผู้ใช้: "เพิ่มปาร์ตี้วันเกิดของแม่ลงในปฏิทินของฉันในวันจันทร์หน้าเวลา 18:00 น."
- การดำเนินการ AppFunction: แอปที่มีความสามารถในการทำงานแบบเอเจนต์ที่ได้รับอนุมัติจะเรียกใช้ฟังก์ชัน "สร้างกิจกรรม" ของแอปปฏิทิน โดยแยกวิเคราะห์บริบทที่เกี่ยวข้อง เช่น "วันจันทร์หน้า" และ "18:00 น." เพื่อสร้างรายการโดยที่ผู้ใช้ไม่ต้อง เปิดปฏิทินด้วยตนเอง
วิธีการทำงานของ AppFunctions
AppFunctions เป็นฟีเจอร์แพลตฟอร์ม Android 16 และไลบรารี Jetpack ที่มาพร้อมกัน ซึ่งช่วยให้แอปแสดงฟังก์ชันที่เฉพาะเจาะจงสำหรับผู้เรียกใช้ เช่น แอปตัวแทน เพื่อเข้าถึงและดำเนินการในอุปกรณ์ได้
แผนภาพต่อไปนี้แสดงขั้นตอนทั่วไปของวิธีที่แอปแชร์ AppFunction กับเอเจนต์และวิธีที่เอเจนต์เรียกใช้ AppFunction ดังกล่าว ตัวแทนมีแนวโน้มที่จะพิจารณาทั้งเครื่องมือ MCP ระยะไกลฝั่งเซิร์ฟเวอร์และ AppFunctions ในเครื่องร่วมกันเมื่อ จัดการคำขอของผู้ใช้ ขั้นตอนโดยละเอียดสำหรับการใช้ AppFunctions ในเครื่องมีดังนี้
- การประกาศ AppFunction: แอป Android สร้างขึ้นเพื่อแสดง AppFunction เช่น "สร้างโน้ต" หรือ "ส่งข้อความ"
- การสร้างสคีมา: ไลบรารี AppFunctions Jetpack จะสร้างไฟล์สคีมา XML ที่แสดงรายการ AppFunctions ทั้งหมดที่ประกาศไว้ในแอป โดยระบบปฏิบัติการ Android จะใช้ไฟล์นี้เพื่อจัดทำดัชนี AppFunctions ที่พร้อมใช้งาน
- การดึงข้อมูลเมตา: ตัวแทนสามารถดึงข้อมูลเมตา AppFunction ได้โดย การค้นหา
- การเลือกและการเรียกใช้ AppFunction: เอเจนต์จะเลือกและเรียกใช้ AppFunction ที่เหมาะสมพร้อมพารามิเตอร์ที่เหมาะสมโดยอิงตามพรอมต์ของผู้ใช้
ไลบรารี AppFunctions Jetpack ช่วยให้การเปิดเผยฟังก์ชันการทำงานของแอปง่ายขึ้น
โปรเซสเซอร์สำหรับคำอธิบายประกอบช่วยให้นักพัฒนาแอปสามารถใส่คำอธิบายประกอบฟังก์ชันที่ต้องการเปิดเผยได้ จากนั้นผู้โทรจะค้นพบและเรียกใช้ฟังก์ชันที่จัดทำดัชนีเหล่านี้ได้โดยใช้
AppFunctionManager
ก่อนเรียกใช้ฟังก์ชัน ผู้โทรควรตรวจสอบว่าอุปกรณ์รองรับฟีเจอร์
AppFunctions โดยพยายามเรียกข้อมูลอินสแตนซ์ของ
AppFunctionManager เมื่อรองรับแล้ว ผู้โทรจะยืนยันได้ว่ามีการเปิดใช้ฟังก์ชันใดฟังก์ชันหนึ่งในแอปเป้าหมายหรือไม่โดยใช้ isAppFunctionEnabled(packageName, functionId) การค้นหาสถานะของ
ฟังก์ชันในแพ็กเกจอื่นๆ ต้องใช้
android.permission.EXECUTE_APP_FUNCTIONS permission
แอปของคุณไม่จำเป็นต้องยืนยันว่ารองรับฟีเจอร์ AppFunction หรือไม่
เนื่องจากไลบรารี Jetpack จะจัดการเรื่องนี้โดยอัตโนมัติ เช่น
AppFunctionManager สามารถตรวจสอบได้ว่าฟีเจอร์นี้รองรับหรือไม่
ต่อไปนี้คือตัวอย่าง AppFunctions สำหรับแอปจดบันทึกที่มีความสามารถในการสร้าง แก้ไข และแสดงรายการบันทึก
/** * A note app's [AppFunction]s. */ class NoteFunctions( private val noteRepository: NoteRepository ) { /** * Lists all available notes. * * @param appFunctionContext The context in which the AppFunction is executed. */ @AppFunction(isDescribedByKDoc = true) suspend fun listNotes(appFunctionContext: AppFunctionContext): List<Note>? { return noteRepository.appNotes.ifEmpty { null }?.toList() } /** * Adds a new note to the app. * * @param appFunctionContext The context in which the AppFunction is executed. * @param title The title of the note. * @param content The note's content. */ @AppFunction(isDescribedByKDoc = true) suspend fun createNote( appFunctionContext: AppFunctionContext, title: String, content: String ): Note { return noteRepository.createNote(title, content) } /** * Edits a single note. * * @param appFunctionContext The context in which the AppFunction is executed. * @param noteId The target note's ID. * @param title The note's title if it should be updated. * @param content The new content if it should be updated. */ @AppFunction(isDescribedByKDoc = true) suspend fun editNote( appFunctionContext: AppFunctionContext, noteId: Int, title: String?, content: String?, ): Note? { return noteRepository.updateNote(noteId, title, content) } } /** * A note. */ @AppFunctionSerializable(isDescribedByKDoc = true) data class Note( /** The note's identifier */ val id: Int, /** The note's title */ val title: String, /** The note's content */ val content: String )
คำถามที่พบบ่อย
ส่วนต่อไปนี้จะตอบคำถามที่พบบ่อยเกี่ยวกับ AppFunctions
คำถาม: ฉันเป็นนักพัฒนาแอป ฉันจะใช้ AppFunctions ได้เลยไหม
ตอบ: ได้ คุณสามารถติดตั้งใช้งานและทดสอบ AppFunctions ภายในแอปได้โดย ทำตามคำแนะนำที่อธิบายไว้โดยละเอียดในส่วนก่อนหน้า
ถาม: ฉันได้ติดตั้งใช้งาน AppFunctions ในแอปแล้ว ทำไมเอเจนต์ระบบของฉันจึงเข้าถึงฟังก์ชันเหล่านั้นไม่ได้
ตอบ: AppFunctions เป็นฟีเจอร์เวอร์ชันทดลอง เพื่อประเมิน คุณภาพของประสบการณ์โดยรวมอย่างรอบคอบในช่วงระยะทดลองนี้ จะมีเพียงแอปและตัวแทนระบบจำนวนจำกัด เท่านั้นที่เข้าถึงไปป์ไลน์ทั้งหมดได้
ถาม: ฉันกำลังพัฒนาเอเจนต์ ฉันจะเข้าถึง AppFunctions ที่แอปมีให้ได้ไหม
ตอบ: ตัวแทนทดสอบจะเข้าถึง AppFunctions ในสภาพแวดล้อมในการพัฒนาซอฟต์แวร์ได้ ในช่วงทดลองนี้ มีเพียงเอเจนต์ระบบจำนวนจำกัดเท่านั้นที่สามารถเข้าถึงและเรียกใช้ AppFunctions ในเวอร์ชันที่ใช้งานจริงได้
ถาม: เอเจนต์ระบบใดบ้างที่มีสิทธิ์เข้าถึง AppFunctions
ก: มีเพียงเอเจนต์ระบบจำนวนจำกัดเท่านั้นที่เข้าถึงทั้งไปป์ไลน์ได้ ขณะที่ AppFunction ยังเป็นเวอร์ชันทดลอง
คำถาม: ฉันจะเตรียมแอปให้พร้อมสำหรับเวอร์ชันสำหรับผู้ใช้ทั่วไปของ AppFunctions ได้อย่างไร
ก: พิจารณาว่าต้องการเปิดเผยฟีเจอร์ใดของแอปให้ระบบอัตโนมัติแบบเอเจนต์ คุณสามารถใช้ AppFunctions ในแอปได้ โดยทำตาม
ขั้นตอนในส่วนก่อนหน้าของหน้านี้ และตรวจสอบว่าได้
ลงทะเบียนในอุปกรณ์แล้วโดยเรียกใช้ adb shell cmd app_function
list-app-functions
ถาม: ฉันจะได้รับสิทธิ์เข้าถึงประสบการณ์การใช้งานของนักพัฒนาซอฟต์แวร์ที่เป็น Agent แบบครบวงจรก่อนใครได้ไหม
ตอบ: เรากำลังจัดโปรแกรมทดลองใช้ก่อนเปิดตัว (EAP) เพื่อเริ่มต้นใช้งานแอปบางแอปในการทดสอบประสบการณ์การใช้งานของนักพัฒนาแอปแบบครบวงจรที่จำเป็นต่อการเปิดตัว AppFunction สู่เวอร์ชันที่ใช้งานจริงบน Android คุณสามารถลงทะเบียนแสดงความสนใจในการผสานรวม AppFunctions ผ่านแบบฟอร์มลงทะเบียน EAP นี้ การลงทะเบียนแสดงความสนใจไม่ได้หมายความว่าคุณจะได้รับสิทธิ์เข้าถึงการผสานรวมทั้งหมดโดยอัตโนมัติ เราจะส่งอีเมลถึงคุณหากแอปของคุณได้รับเลือกให้เข้าร่วม EAP หรือเพื่อแจ้งให้คุณทราบเมื่อ AppFunctions พร้อมให้บริการแก่บุคคลทั่วไป
คำถาม: ฉันจะแสดงความคิดเห็นเกี่ยวกับ AppFunctions ได้อย่างไร
ตอบ: คุณแสดงความคิดเห็นเกี่ยวกับ API ได้โดยยื่นปัญหา และลงทะเบียนแสดงความสนใจในแบบฟอร์มโปรแกรมทดลองใช้ก่อนเปิดตัว