ผู้จัดการกลุ่มผลิตภัณฑ์
แพลตฟอร์มแอปที่เชื่อมต่อใหม่ช่วยให้คุณผสานรวมบริการของแอปเข้ากับ Gemini, โหมด AI ใน Search และระบบอัจฉริยะของ Android ได้โดยตรง เซสชันนี้จะให้คำแนะนำที่นำไปใช้ได้จริงสำหรับการเริ่มต้นใช้งาน เราจะอธิบายวงจรการพัฒนา ตั้งแต่การสร้าง การทดสอบ ไปจนถึงการเผยแพร่แอปที่เชื่อมต่อรายการแรกของคุณเพื่อเข้าถึงผู้ใช้ภายในเวิร์กโฟลว์ที่ทำงานด้วยระบบ AI โดยใช้ตัวอย่างโค้ดและเรียนรู้จากกรณีศึกษาในชีวิตจริง
เมื่อสิ้นสุดเซสชันนี้ คุณจะทำสิ่งต่อไปนี้ได้
destructiveHint เพื่อช่วยให้ Gemini ขอการยืนยันอย่างชัดเจนเมื่อการดำเนินการแก้ไขหรือลบข้อมูลข้อความถอดเสียง
สวัสดีครับทุกคน
ฉันชื่อ Mai เป็นหัวหน้าฝ่ายผลิตภัณฑ์ของแพลตฟอร์มแอปที่เชื่อมต่อกับ Gemini
และในภายหลัง คุณจะได้รับฟังข้อมูลจาก Kate ซึ่งเป็นวิศวกร DevRel ของเราด้วย
เธอจะขึ้นมา
วันนี้เราจึงตื่นเต้นมากที่จะได้พูดคุยกับคุณเกี่ยวกับวิธีขยายแอปไปยังผลิตภัณฑ์ที่ใช้ Agent ยอดนิยมของ Google อย่าง Gemini และ Search
เราจะบอกคุณว่าแอปที่เชื่อมต่อมีประโยชน์และน่าทึ่งสำหรับผู้ใช้อย่างไรและเพราะเหตุใด
และที่ดียิ่งกว่านั้นคือเราจะแสดงให้คุณเห็นว่าต้องทำอย่างไรจึงจะสร้างช่องได้
มาเริ่มกันเลย
เราทราบดีว่าหลายคนได้เห็นการเปลี่ยนแปลงครั้งใหญ่ที่เกิดขึ้นในระบบนิเวศของแอป
วิธีที่ผู้คนใช้อุปกรณ์ ค้นหาคำตอบ และทำสิ่งต่างๆ ไม่ได้แค่พัฒนาขึ้นเท่านั้น
ซึ่งเปลี่ยนไปอย่างสิ้นเชิง
ผู้คนไม่ได้เปิดเบราว์เซอร์และแตะไปมาอีกต่อไป
ผู้ใช้กำลังสนทนากับผู้ช่วยอย่าง Gemini โดยตรง
ผู้ใช้ขอความช่วยเหลือจาก Gemini ในการตอบคำถามที่ซับซ้อน และค้นหาคำตอบแบบหลายโมดัลใน Search
และผู้ใช้ก็คาดหวังให้อุปกรณ์ Android ไม่เพียงแต่เข้าใจสิ่งที่พูด แต่ยังรู้ว่าผู้ใช้ต้องการทำอะไรด้วย
ลองนึกถึงเวิร์กโฟลว์บางอย่างที่คุณทำได้ในแต่ละวัน
สมมติว่าคุณขอความช่วยเหลือจาก Gemini เพื่อช่วยระดมความคิดเกี่ยวกับตัวเลือกสำหรับกิจกรรมสนุกๆ ในช่วงสุดสัปดาห์กับเพื่อนๆ ในสถานที่และเวลาที่เจาะจง
โมเดลในปัจจุบันสามารถประมวลผลแผนดังกล่าวได้ในไม่กี่วินาที
เยี่ยมมาก
เป็นระเบียบ
แล้วจะเกิดอะไรขึ้นต่อ
สิ้นสุด
ผู้ใช้จะพบกับทางตันและต้องรอค้างอยู่อย่างนั้นโดยมีเพียงแผนแต่ไม่มีการยืนยันใดๆ
โมเดลรู้ว่าต้องทำอะไร แต่ไม่มีมือที่จะทำ
ดังนั้น คุณจึงต้องคัดลอกและวางข้อมูลจากแชทกับ Gemini ลงในแอปใดแอปหนึ่ง
บางครั้งถ้าคุณใช้อุปกรณ์เคลื่อนที่ ก็อาจจะดูเทอะทะมาก
จากนั้นคุณต้องจำข้อมูลทั้งหมดและพิมพ์ลงไปในภายหลัง
การต้องคิดเยอะและอุปสรรคดังกล่าวทำให้ความมหัศจรรย์หายไปโดยสิ้นเชิง
และสิ่งนี้มีความหมายต่อคุณอย่างไร
ซึ่งหมายความว่าคุณมีความต้องการของผู้ใช้ที่มีความตั้งใจซื้อสูงซึ่งติดอยู่ในบับเบิลแชท แทนที่จะดึงดูดผู้ใช้ที่มีส่วนร่วมและมีคุณค่าสูงเข้ามาในแอป
และนี่คือเหตุผลที่แอปที่เชื่อมต่อจะเปลี่ยนเกม เพราะแอปเหล่านี้ช่วยให้เราเข้าถึงผู้ใช้ได้ตรงจุด
และตอนนี้ผู้คนก็ใช้เวลาส่วนใหญ่ไปกับการพูดคุยกับผู้ช่วยอย่าง Gemini
เมื่อผู้ใช้แสดงความตั้งใจจริงที่จะดำเนินการ นั่นคือช่วงเวลาที่มีคุณค่าอย่างยิ่งในเส้นทางของผู้ใช้
ผู้ใช้ไม่ได้เข้ามาเพื่อดูข้อมูลเฉยๆ
ผู้ใช้มีสิ่งที่ต้องการทำให้เสร็จอย่างชัดเจนในขณะนั้น
การเปิดใช้การผสานรวมระหว่างแอปและโมเดล Generative เหล่านี้ทำให้ผู้ช่วยอย่าง Gemini เปลี่ยนจากการตอบคำถามไปเป็นการทำสิ่งต่างๆ ให้เสร็จสิ้น
เมื่อผู้ใช้ขอรายการสิ่งที่ต้องทำที่จัดลำดับความสำคัญแล้ว หรือต้องการเช่ารถสำหรับการเดินทางที่กำลังจะมาถึง หรือต้องการซื้อของเข้าบ้านเพื่อทำสูตรอาหารที่เพิ่งพบ แอปของคุณจะไม่แสดงเป็นลิงก์แบบคงที่ที่ด้านล่างของหน้า
คุณสามารถช่วยสร้างความมหัศจรรย์และดำเนินการดังกล่าวได้ทันที
และขอพูดให้ชัดเจนเลยว่าแอปที่เชื่อมต่อไม่ได้มีไว้เพื่อซ่อนแอปของคุณ เพราะเรารู้ว่านักพัฒนาแอปและผู้นำผลิตภัณฑ์ทุกคนกำลังคิดเรื่องนี้อยู่
แบรนด์ ตรรกะทางธุรกิจ ความสัมพันธ์ที่ผ่านการตรวจสอบสิทธิ์ และประสบการณ์การใช้งาน UI ที่กำหนดเอง ทั้งหมดนี้เป็นของคุณ
แอปที่เชื่อมต่อคือการผสานรวมบริการของคุณเข้ากับแพลตฟอร์ม API ของ Agent เพื่อให้ผลิตภัณฑ์ Agent ของ Google นำผู้ใช้ที่มีความตั้งใจสูงเข้าสู่ผลิตภัณฑ์ของคุณได้โดยตรงอย่างราบรื่น
วันนี้ ตอนนี้เลย ฉันตื่นเต้นมากที่จะได้ประกาศเปิดตัวแพลตฟอร์มแอปที่เชื่อมต่ออย่างเป็นทางการ
ในอดีต การเข้าถึงผู้ใช้ในผลิตภัณฑ์ต่างๆ ของ Google หมายถึงการผสานรวมที่แตกต่างกันสำหรับแต่ละผลิตภัณฑ์
หากต้องการการดำเนินการของแอป Android หรือทางลัด คุณต้องสร้างขึ้นมาเอง
การผสานรวมการค้นหาอีกรายการหนึ่ง
แต่เราต้องการทำให้ทุกอย่างง่ายและยอดเยี่ยมที่สุดสำหรับคุณ
เราจึงได้ปรับมาตรฐานการเตรียมความพร้อมผู้ใช้งานใหม่เพื่อให้คุณมีจุดแรกเข้าในการเปิดตัวแอปในผลิตภัณฑ์ที่ใช้ Agent ของ Google หลายรายการ
ตอนนี้คุณสามารถสร้างฟังก์ชันการทำงานของแอปได้ในครั้งเดียวโดยใช้สคีมาแบบประกาศมาตรฐาน และฟังก์ชันดังกล่าวจะปรากฏในผลิตภัณฑ์หลัก 2 รายการของเรา ได้แก่ Gemini และ Search
และจะมีผลิตภัณฑ์อื่นๆ เพิ่มเติมในเร็วๆ นี้ด้วย
เรามาพูดถึงการเข้าถึงนี้และผลกระทบที่มีต่อคุณกัน
คุณไม่จำเป็นต้องสร้างปลั๊กอินที่กำหนดเองหลายรายการ จัดการคอนโซลนักพัฒนาซอฟต์แวร์ 4 รายการ และรักษาการแฮนด์เชคที่ตรวจสอบสิทธิ์แล้วหลายรายการเพียงเพื่อเข้าถึงผู้ใช้ Google ใน Android, Gemini และ Search
แพลตฟอร์มแบบรวมของเราช่วยให้คุณสร้างและลงทะเบียนคำจำกัดความของเครื่องมือได้ในครั้งเดียว
คุณเลือกผลิตภัณฑ์ Google ที่ต้องการ แล้วเราจะแสดงปุ่มเปิดตัวปุ่มเดียวใน Google Connected Console ใหม่
เมื่อเผยแพร่แล้ว ทุกคนจะค้นพบความสามารถของคุณได้เมื่อใช้ Gemini หรือ Search
ไม่ว่าผู้ใช้จะพิมพ์ใน Gemini บนแล็ปท็อป ถามคำถามชุดหนึ่งใน Search บนเว็บ หรือใช้ฟีเจอร์ผู้ช่วยใน Android ผู้ใช้ก็จะมีตัวเลือกในการใช้แอปของคุณในเวลาที่สำคัญที่สุดสำหรับตนเองและในที่ที่ตนเองอยู่
เราจึงจะเปิดตัวแพลตฟอร์มเป็นระยะๆ โดยเริ่มจากเวอร์ชันตัวอย่าง
เราขอรับรองว่าทั้งทีมกำลังทำงานอย่างหนักเพื่อนำฟีเจอร์ทั้งหมดมาให้คุณใช้งานได้มากที่สุดและเร็วที่สุดเท่าที่จะเป็นไปได้
สำหรับเวอร์ชันตัวอย่างในระยะนี้ เราจะเปิดแพลตฟอร์มให้นักพัฒนาแอปในสหรัฐอเมริกาเท่านั้น
คุณสามารถลงชื่อสมัครใช้ผ่านแบบฟอร์มเพื่อรับสิทธิ์เข้าถึง ซึ่งดูได้ในคู่มือนักพัฒนาแอปที่ developers.google.com/connected-apps หรือหากเป็นนักพัฒนาแอป Play คุณจะดูได้ในหน้าแรกของ Google Play Console ด้วย
คำถามถัดไปคือ การสร้างโมเดลเหล่านี้ยากแค่ไหน
หากคุณมี REST API หรือ Android Intent คุณก็มีจุดเริ่มต้นที่ดีทีเดียว
เรากำลังต่อยอดจากแนวคิดของนักพัฒนาซอฟต์แวร์ที่คุ้นเคย
แพลตฟอร์มของเราผสานรวมกับมาตรฐาน Model Context Protocol หรือ MCP ผ่านทั้ง MCP บนเซิร์ฟเวอร์และ MCP แบบเนทีฟของ Android
และเพื่อทำให้ Gemini ดียิ่งขึ้นและใช้งานง่ายขึ้นสำหรับคุณ วันนี้เราจึงเปิดตัวฟีเจอร์ใหม่ล่าสุดใน Gemini ที่เรียกว่าโหมดนักพัฒนาซอฟต์แวร์ ซึ่งทุกคนในสหรัฐอเมริกาสามารถเข้าถึงได้แล้วตอนนี้
ซึ่งจะช่วยให้คุณทดลองใช้แอปภายใน Gemini, รับความคิดเห็นแบบเรียลไทม์เกี่ยวกับสถานะข้อผิดพลาด, เวลาในการตอบสนอง และคำตอบของโมเดล
และในเร็วๆ นี้ คุณจะสามารถสร้างชุดการประเมินของคุณเอง รับตารางสรุปสถิติเมตริกคุณภาพ และการเปรียบเทียบได้
มันจะต้องสุดยอดแน่ๆ
ไม่ว่าคุณจะมีสิทธิ์เข้าถึงแพลตฟอร์มในระดับใด คุณก็ลองใช้แอปในโหมดนักพัฒนาซอฟต์แวร์ได้เสมอ
เรามั่นใจว่าคุณอยากทราบรายละเอียดเพิ่มเติม และ Kate จะขึ้นมาบนเวทีต่อจากเราเพื่อพูดคุยกับทุกคนเกี่ยวกับเรื่องนี้ในอีกไม่กี่นาที
ก่อนอื่น เราต้องพูดถึงสิ่งที่มีความสำคัญมากขึ้นเรื่อยๆ นั่นคือความไว้วางใจของผู้ใช้
เมื่อใดก็ตามที่เราพูดถึง Agent ที่ดำเนินการในนามของผู้อื่น คำถามแรกมักจะเป็น "เราจะให้ผู้ใช้ควบคุมได้อย่างไร"
เรามาดูแนวคิดง่ายๆ 2-3 ข้อเกี่ยวกับเรื่องนี้กัน
ประการแรก การยืนยันของเราจะปรับขนาดตามความเสี่ยง
เราจะไม่แสดงป๊อปอัปก่อนการเรียกใช้เครื่องมือทุกครั้ง
การค้นหาข้อมูล การตรวจสอบความพร้อมให้บริการของเมนู การติดตามคำสั่งซื้อ ควรเป็นไปอย่างราบรื่น
แต่เมื่อการดำเนินการมีผลลัพธ์ที่เกิดขึ้นจริง เช่น การแก้ไขสิ่งที่แชร์ การจองให้เสร็จสมบูรณ์ หรือการลบสิ่งที่ผู้ใช้ไม่สามารถกู้คืนได้ง่ายๆ โมเดลจะพยายามถามผู้ใช้เพื่อขอคำยืนยันที่ชัดเจนก่อนที่จะดำเนินการ
ประการที่ 2 ระบบจะแสดงข้อมูลที่ละเอียดอ่อนโดยไม่ซ่อนไว้
ดังนั้น ผลิตภัณฑ์ของเราจึงออกแบบมาเพื่อตรวจสอบข้อมูลส่วนบุคคลที่อาจแชร์กับแอปของคุณ
หากตรวจพบข้อมูลที่ละเอียดอ่อน เราจะแสดงให้ผู้ใช้เห็นอย่างชัดเจนว่ามีการแชร์ข้อมูลใดบ้าง เพื่อให้ผู้ใช้ตัดสินใจว่าจะดำเนินการต่อกับแอปของคุณหรือไม่ในขณะนั้น
ประการที่ 3 เมื่อเราขอ เราจะระบุอย่างเจาะจง
เราจะไม่ถามแบบคลุมเครือว่า "คุณแน่ใจไหม" แต่จะระบุว่าแอปใดและข้อมูลใดที่กำลังส่งหรือเปลี่ยนแปลง
ด้วยวิธีนี้ การยืนยันจะช่วยให้ผู้ใช้ตัดสินใจได้อย่างแท้จริง แทนที่จะเป็นเพียงสิ่งที่ผู้ใช้คลิกผ่านไปแบบสุ่ม
และเนื่องจากไม่มีใครอยากให้การเดินทางเต็มไปด้วยการยืนยัน ผู้ใช้จึงควบคุมความถี่ในการขอได้มากขึ้น
ตัวอย่างเช่น ในแอป Gemini ผู้ใช้สามารถเลือกได้ว่าจะอนุญาตการดำเนินการตลอดเวลาหรือไม่ โดยเลือกได้ตามแอปและแม้แต่ตามการดำเนินการ
สำหรับคุณแล้ว ทั้งหมดนี้หมายความว่าเราขอให้คุณระบุเครื่องมืออย่างตรงไปตรงมา
ทำเครื่องหมายว่าสิ่งใดเป็นแบบอ่านอย่างเดียว สิ่งใดเปลี่ยนแปลง และสิ่งใดลบข้อมูล
สัญญาณเหล่านั้นจะช่วยให้ผลิตภัณฑ์ของเราตัดสินใจได้ว่าจะนำผู้ใช้เข้ามาเมื่อใด
และขอย้ำอีกครั้งว่า Kate จะแสดงให้คุณเห็นวิธีการอย่างละเอียดในอีกไม่กี่นาที
เอาล่ะ เรากลับไปที่การเดินทางช่วงสุดสัปดาห์ที่เราพูดถึงกันก่อนหน้านี้ ซึ่งก็คือส่วนของการวางแผน
คุณยังจำได้ไหมว่าการทำเช่นนั้นยากและกระจัดกระจายเพียงใด
คุณมีแผนที่ยอดเยี่ยมสำหรับกลุ่มเพื่อน แต่แล้วก็พบอุปสรรค คุณต้องคัดลอกและวางสิ่งต่างๆ สลับไปมาระหว่างแอป
Viator และ Ticketmaster เป็นพาร์ทเนอร์ที่ยอดเยี่ยม 2 รายแรกของเราที่มองเห็นโอกาสที่แท้จริงในการตอบสนองความต้องการของผู้ใช้ในทุกที่ที่ผู้ใช้อยู่
จึงตัดสินใจร่วมมือกับเราและยกเลิกกำแพงนั้น เพื่อให้ผู้ใช้ที่มีความตั้งใจซื้อสูงเข้าถึงแอปได้โดยตรงจากภายใน Gemini
แอปที่เชื่อมต่อซึ่งพาร์ทเนอร์เหล่านี้สร้างขึ้นช่วยให้เส้นทางทั้งหมดราบรื่นและไร้อุปสรรคมากขึ้น
เรามาดูกันเลย
ผู้ใช้เชื่อมต่อแอปและขอความช่วยเหลือจาก Gemini ให้ค้นหาทัวร์ชิมอาหารช่วงกลางวันใน Viator และตั๋วคอนเสิร์ตสำหรับกลุ่ม 4 คนใน Ticketmaster
Gemini สามารถจดจำความสามารถดังกล่าว และเรียกใช้เครื่องมือ Viator และ Ticketmaster โดยตรงพร้อมกับระบุขนาดกลุ่ม วันที่ และค่ากำหนดที่ถูกต้องไว้ให้เรียบร้อยแล้ว
โดยที่ผู้ใช้ไม่ต้องออกจากการสนทนา แอปทั้งสองจะดึงข้อมูลความพร้อมแบบเรียลไทม์และแสดงผลประสบการณ์แบบอินเทอร์แอกทีฟที่สมบูรณ์ภายในแชทให้ผู้ใช้โดยตรง
Viator และ Ticketmaster เป็นตัวอย่างของพาร์ทเนอร์ที่ช่วยให้ผู้ใช้ทำสิ่งที่ต้องการได้ทันทีที่นึกออก ไม่ว่าจะเป็นการสำรวจจุดแวะพักของทัวร์ชิมอาหาร การเลือกที่นั่งในคอนเสิร์ต และการเปลี่ยนจากการค้นพบไปสู่การดำเนินการได้อย่างราบรื่น แทนที่จะต้องเจอกับทางตันและสลับแท็บไปมา
ยุคของตัวเปิดแอปแบบคงที่กำลังจะหมดไปแล้ว และจะถูกแทนที่ด้วยประสบการณ์ที่ชาญฉลาด เชิงรุก และทำงานได้ด้วยตัวเอง
ผู้ใช้ของคุณมีส่วนร่วมกับ Search และ Gemini อยู่แล้ว โดยขอความช่วยเหลือ
เราสามารถช่วยให้ผู้ใช้ได้รับมากกว่าคำตอบ และมอบประสบการณ์ที่ทรงพลังและน่ามหัศจรรย์อย่างแท้จริง
และนี่คือทั้งหมดที่เราจะพูดถึงในวันนี้
ตอนนี้เราจะส่งต่อให้ Kate ซึ่งจะแนะนำวิธีสร้างแอปที่เชื่อมต่ออย่างละเอียด
ขึ้นมาเลย
สวัสดีครับทุกคน
ฉันชื่อ Kate เป็นวิศวกรนักพัฒนาสัมพันธ์ที่ช่วยนักพัฒนาแอปอย่างคุณผสานรวมกับแพลตฟอร์มแอปที่เชื่อมต่อ
ดังนั้นฉันจะแนะนำวิธีทดสอบ สร้าง และทำให้แอปที่เชื่อมต่อใช้งานได้
และตามที่ Mai ได้กล่าวไว้ก่อนหน้านี้ การผสานรวมกับแพลตฟอร์มแอปที่เชื่อมต่อมี 2 วิธีหลักๆ ได้แก่ ผ่านเซิร์ฟเวอร์ MCP ระยะไกลโดยใช้โปรโตคอล MCP หรือผ่าน Android MCP เมื่อคุณสร้างเซิร์ฟเวอร์ MCP ระยะไกลในอุปกรณ์ได้โดยใช้ไลบรารี AppFunctions
เราขอแนะนำให้ใช้เซิร์ฟเวอร์ MCP ระยะไกลเมื่อต้องการผสานรวมข้ามแพลตฟอร์ม เช่น Android, iOS และเว็บ
นอกจากนี้ เรายังได้รับความคิดเห็นจากนักพัฒนาแอปบางรายว่าบางครั้งคุณต้องการการดำเนินการในเครื่องเมื่อข้อมูลแอปพร้อมใช้งานในอุปกรณ์เท่านั้น
สำหรับ Use Case นี้ เราขอแนะนำให้ใช้ Android MCP โดยใช้ไลบรารี AppFunctions Jetpack
และโปรดดูการพูดคุยเฉพาะที่ Dan และ Sarah จะเจาะลึกวิธีผสานรวมกับแพลตฟอร์มแอปที่เชื่อมต่อผ่าน AppFunctions และ Android MCP
คราวนี้มาดูวิธีสร้างเซิร์ฟเวอร์ MCP ระยะไกลกัน
และเพื่อแสดงให้เห็นว่าฟีเจอร์นี้ทำงานอย่างไรในทางปฏิบัติ เราจึงสร้างแอปที่เชื่อมต่ออย่างเป็นทางการของ AndroidDevSummit ขึ้นมา
เราจะแสดงให้คุณเห็นว่าฟีเจอร์นี้ทำงานอย่างไร
เรามากลับไปที่การสาธิตแบบสดกัน
ลองนึกภาพว่าคุณถามว่า "AndroidDevSummit ขอข้อมูลเพิ่มเติมเกี่ยวกับเซสชัน XR หน่อย"
ตอนนี้ Gemini เชื่อมต่อกับเซิร์ฟเวอร์ MCP ที่เราสร้างขึ้นสำหรับแอปที่เชื่อมต่อนี้
โดยจะค้นหาเครื่องมือที่เหมาะสมเพื่อเรียกใช้และใช้ข้อมูลของเครื่องมือนั้นเพื่อสร้างคำตอบที่เข้าใจง่ายสำหรับผู้ใช้
ดังนั้นจึงค้นหาข้อมูลเกี่ยวกับเซสชันที่เกี่ยวข้องกับ XR ที่นี่สำหรับวันที่ 1 และวันที่ 2 และในตอนท้ายจะแสดงผลวิดเจ็ตที่มีแบรนด์ที่กำหนดเองสำหรับ AndroidDevSummit ด้วยบ็อต Android
คุณจึงโต้ตอบกับวิดเจ็ตนี้ได้จากใน Gemini โดยตรง
คุณสามารถดูกำหนดการได้ เช่น สลับสถานที่ หรือกรองตามวัน
นอกจากนี้ คุณยังกรองตามหัวข้อต่างๆ ได้ด้วย เช่น หากต้องการค้นหาเซสชันที่เกี่ยวข้องกับ XR และยังดูรายละเอียดและดูวิทยากรได้ด้วย
เย้!
ทุกอย่างอยู่ใน Gemini ซึ่งเป็นประสบการณ์การใช้งานที่ปรับแต่งตามแบรนด์ของคุณ และผู้ใช้ไม่จำเป็นต้องสลับไปมา ไม่จำเป็นต้องไปค้นหาข้อมูลอื่นๆ ในแอปอื่น ทุกอย่างอยู่ในที่เดียวโดยไม่ต้องโต้ตอบ ไม่ต้องสลับไปมาหรือออกจากแอปเลย
เรามาเปลี่ยนกลับไปที่สไลด์กัน
มาดูวิธีสร้างแอปที่เชื่อมต่อกัน
ดังนั้น การเริ่มต้นเซิร์ฟเวอร์ MCP ด้วยไลบรารี FastMCP จึงเป็นเรื่องง่ายมาก แต่มีแนวทางปฏิบัติแนะนำที่สำคัญมาก 4 ข้อที่ควรปฏิบัติตาม
ก่อนอื่น คุณต้องระบุวิธีการที่ชัดเจนสำหรับเซิร์ฟเวอร์
from mcp.server.fastmcp import FastMCP
mcp = FastMCP(
name="ADS-MCP",
instructions=(
"A Model Context Protocol server providing event "
"overview, schedules, sessions, speakers, and "
"sandbox demos for the Android Developer Summit "
),
)เมื่อเริ่มต้นเซิร์ฟเวอร์ MCP ให้กำหนดวิธีการที่ชัดเจนเสมอ โดยอธิบายโดเมนและความสามารถของแอปที่เชื่อมต่อ
แพลตฟอร์มแอปที่เชื่อมต่อจะอาศัยคำสั่งเหล่านี้เพื่อให้ทราบว่าเมื่อใดควรมอบสิทธิ์ให้เซิร์ฟเวอร์ของคุณ
นอกจากนี้ Google Connected Console ซึ่งเราจะแสดงให้คุณดูในภายหลังยังตรวจสอบอย่างชัดเจนด้วยว่ามีวิธีการเหล่านี้อยู่
และ 2 เพิ่มคำอธิบายประกอบเครื่องมือเพื่อความปลอดภัยและการควบคุม
@mcp.tool(
title="List Sessions",
annotations=ToolAnnotations(
readOnlyHint=True,
destructiveHint=False,
),
meta={ … },
)
def list_sessions( … )
…สำหรับเซิร์ฟเวอร์ ADS เรามีคำอธิบายประกอบ 2 รายการนี้
โมเดลจำเป็นต้องทราบว่าเครื่องมือของคุณเป็นแบบอ่านอย่างเดียวหรือแก้ไขข้อมูลได้
ดังนั้น หากคุณมีเครื่องมือที่แก้ไขหรือลบข้อมูลผู้ใช้ ให้ใช้ destructiveHint นี้เพื่อทำเครื่องหมายว่าเครื่องมือดังกล่าวสามารถแก้ไขหรือลบการดำเนินการได้เสมอ
และด้วยวิธีนี้ แพลตฟอร์มแอปที่เชื่อมต่อจะทราบว่าต้องแสดงข้อความยืนยันแก่ผู้ใช้ว่าผู้ใช้ตกลงที่จะดำเนินการนี้ให้เสร็จสมบูรณ์
นอกจากนี้ คุณยังกำหนดค่าเครื่องมือใน Google Connected Console ที่เชื่อมต่อได้ด้วย ซึ่งเราจะแสดงให้ดูในภายหลัง
และประการที่สาม สคีมาที่พิมพ์อย่างชัดเจนและ Docstring เชิงความหมาย
def list_sessions(
track: Optional[str] = None,
location: Optional[str] = None,
) -> List[Dict[str, Any]]:
"""Lists all sessions, optionally filtered by track
(e.g. 'Tools and performance', 'Apps Foundation',
'AI experiences', 'Android XR') or location
(e.g. 'MTV', 'Mountain View', 'London', 'LON').
"""
…ถือว่า Docstring ของพารามิเตอร์เป็นส่วนหนึ่งของพรอมต์
ในเครื่องมือ list_sessions นี้ เราจะบันทึกค่าที่คาดไว้อย่างชัดเจน เช่น เครื่องมือและประสิทธิภาพ หรือ MTV เทียบกับลอนดอนสำหรับสถานที่ตั้ง
ปัจจัยที่สำคัญที่สุดในการเรียกใช้เครื่องมือที่ถูกต้องคือสคีมาที่ชัดเจนและสื่อความหมาย
และสุดท้ายคือการเชื่อมโยงข้อมูลเมตาของทรัพยากร UI
@mcp.tool(
…
meta={
"ui": {
"resourceUri": "ui://ads-mcp/summit-app",
},
…
},
)
def list_sessions(…)
…ดูคำจำกัดความของ UI ในเมตา
ข้อมูลเมตานี้เป็นสะพานที่สั่งให้ Gemini เชื่อมโยงเอาต์พุตของเครื่องมือกับทรัพยากร UI ที่กำหนดเองของเราโดยตรงที่นี่
ซึ่งนำเราไปสู่การแสดงผล UI
@mcp.resource(
"ui://ads-mcp/summit-app",
name="summit-app",
mime_type="text/html",
)
def get_summit_ui() -> ResourceResult:
"""Renders the interactive ADS 2026 dashboard."""
return ResourceResult([
ResourceContent(
_build_summit_ui_html(),
mime_type="text/html",
)
])แพลตฟอร์มแอปที่เชื่อมต่อช่วยให้คุณแสดงผลอินเทอร์เฟซผู้ใช้แบบริชมีเดียจากเซิร์ฟเวอร์ MCP ผ่าน UI ของแอป MCP ได้
และเมื่อต้องการความยืดหยุ่นอย่างเต็มที่สำหรับอินเทอร์เฟซที่กำหนดเองและแสดงออกถึงแบรนด์ เช่น Android Dev Summit คุณก็แสดงทรัพยากร UI ของ MCP ได้
และ Gemini สามารถแสดงผลใน iframe ที่ใช้แซนด์บ็อกซ์ที่ปลอดภัยได้
และต่อไป ฉันจะแนะนำคุณเกี่ยวกับการทดสอบและการติดตั้งใช้งานแอปที่เชื่อมต่อจากเครื่องของคุณไปยังเวอร์ชันที่ใช้งานจริงโดยตรง
ใช่
มาดูวิธีพัฒนาและทดสอบในเครื่องกัน
ในระหว่างการพัฒนา คุณสามารถสร้างเซิร์ฟเวอร์ในเครื่องได้อย่างง่ายดายโดยใช้คำสั่งแรก
./venv/bin/python server.py
npx @modelcontextprotocol/inspectorจากนั้นคุณสามารถใช้ MCP Inspector เพื่อแก้ไขข้อบกพร่องของเซิร์ฟเวอร์ ดูเครื่องมือที่พร้อมใช้งาน และโต้ตอบกับ UI ได้ด้วย
นี่เป็นเพียงตัวอย่างลักษณะของ MCP Inspector สำหรับ Android Dev Summit
คุณจึงดูเครื่องมือ ดู UI และทดสอบในเครื่องได้
ประการที่ 2 คุณจะต้องติดตั้งใช้งานเซิร์ฟเวอร์ MCP ไปยังปลายทางระยะไกลบางแห่ง เพื่อรับสิทธิ์เข้าถึงและตรวจสอบความถูกต้องในโหมดนักพัฒนาซอฟต์แวร์ Gemini
คุณสามารถโฮสต์ปลายทาง MCP บนโครงสร้างพื้นฐานใดก็ได้ หรือผู้ให้บริการคลาวด์รายใดก็ได้
แต่หากคุณต้องการใช้ Google Cloud ก็สามารถใช้กับ Google Cloud CLI ได้อย่างง่ายดาย
เพียงใช้คำสั่งง่ายๆ นี้เพื่อทำให้แอปใช้งานได้จากระยะไกล
gcloud run deploy ads-mcp-serverขั้นตอนถัดไปคือการตรวจสอบปลายทางสาธารณะในโหมดนักพัฒนาซอฟต์แวร์ Gemini
เรามากลับไปที่การสาธิตแบบสดกัน แล้วผมจะแสดงวิธีใช้โหมดนักพัฒนาซอฟต์แวร์ในทางปฏิบัติให้ดู
ดังนั้น คุณจะค้นหาโหมดนักพัฒนาซอฟต์แวร์ได้ง่ายๆ เพียงไปที่การตั้งค่าแล้วคลิกโหมดนักพัฒนาซอฟต์แวร์
จากนั้นคุณจะต้องเลือกแอปที่เชื่อมต่อซึ่งต้องการทดสอบ
เช่น คุณสามารถสร้างเซิร์ฟเวอร์ใหม่ได้โดยระบุ URL ของเซิร์ฟเวอร์ MCP ที่นี่
ฉันได้สร้างไว้แล้ว 1 รายการเพื่อทดสอบ โดยใช้ชื่อว่า ADS MCP พร้อมปลายทางการทดสอบ
และฉันแค่อยากทดสอบว่าการทำงานร่วมกับ Gemini ตั้งแต่ต้นจนจบเป็นอย่างไร
งั้นมาลองถามอะไรกันหน่อย
"ADS MCP ขอข้อมูลเพิ่มเติมเกี่ยวกับกิจกรรมนี้หน่อย"
ตอนนี้ Gemini จะเรียกใช้เซิร์ฟเวอร์ MCP ของเรา และคุณยังดูได้ว่ามีการเรียกใช้เครื่องมือใดในโหมดนักพัฒนาซอฟต์แวร์
ตัวอย่างเช่น สำหรับพรอมต์ที่เจาะจงนี้ "บอกฉันเพิ่มเติมเกี่ยวกับกิจกรรม" ระบบจะเรียกใช้ get_summit_info
และคุณยังดูการตอบกลับที่สำเร็จได้ด้วย
และคุณจะเห็นเวลาในการตอบสนอง
นอกจากนี้ คุณยังดูรายละเอียดคำขอและการตอบกลับทั้งหมดได้ด้วย
ตัวอย่างเช่น เรามีข้อมูลมากมายสำหรับการตอบกลับ
นอกจากนี้ คุณยังซูมเข้าเล็กน้อยเพื่อดูวิธีแก้ไขข้อบกพร่องของข้อมูลที่ต้องการ และตรวจสอบว่าทุกอย่างถูกต้อง
นอกจากนี้ คุณยังคัดลอกลิงก์ได้ด้วย ซึ่งสะดวกมากหากต้องการแชร์กับเพื่อนร่วมทีม
นอกจากนี้ คุณยังส่งออกบันทึกเหตุการณ์ทั้งหมดและแชร์ได้หากต้องการ
สิ่งที่ฉันชอบอีกอย่างคือคุณสามารถสำรวจเครื่องมืออื่นๆ ที่มีได้ด้วย ดังนั้นในโหมดนักพัฒนาซอฟต์แวร์นี้ คุณจะเห็นข้อมูลการประชุมสุดยอด รายการเซสชัน และเครื่องมืออื่นๆ
นอกจากนี้ คุณยังเปลี่ยนสภาพแวดล้อมเพื่อจำลองบริบทของผู้ใช้ที่แตกต่างกันได้ด้วย
เช่น คุณสามารถเปลี่ยนเวลากลางวันหรือค่ากำหนดต่างๆ เช่น ภาษา และยังตั้งค่าการตรวจสอบสิทธิ์ได้ด้วย
นี่คือโหมดนักพัฒนาซอฟต์แวร์
และใช่ คุณสามารถเริ่มสร้างเซิร์ฟเวอร์ MCP ได้ตั้งแต่วันนี้ และทดสอบด้วยโหมดนักพัฒนาซอฟต์แวร์ได้ตั้งแต่วันนี้เป็นต้นไป
ตอนนี้ฟีเจอร์นี้พร้อมให้บริการแก่ทุกคนแล้ว
และมาเปลี่ยนกลับไปที่สไลด์กัน
ตกลง
สมมติว่าคุณทดสอบด้วยโหมดนักพัฒนาซอฟต์แวร์แล้ว ทุกอย่างดูดี คุณจะทำอะไรต่อ
คุณต้องลงชื่อสมัครใช้เพื่อรับสิทธิ์เข้าถึงแพลตฟอร์มของเรา และต้องกรอกแบบฟอร์มแสดงความสนใจนี้ก่อน
นอกจากนี้ คุณยังดูข้อมูลนี้ได้ในเอกสารประกอบและใน Google Connected Console
และเมื่อข้อมูลที่ส่งได้รับการอนุมัติแล้ว คุณจะได้รับสิทธิ์เข้าถึง Google Connected Console ซึ่งคุณสามารถเตรียมแอปพลิเคชันสำหรับการเปิดตัวเวอร์ชันที่ใช้งานจริงได้
ภายในคอนโซล คุณสามารถเตรียมแอปให้พร้อมได้ในไม่กี่ขั้นตอน
ก่อนอื่น คุณต้องสร้างแอปที่เชื่อมต่อใหม่ใน Salesforce และตั้งชื่อ
จากนั้นคุณเพียงแค่ต้องเลือกความสามารถและหมวดหมู่ที่ต้องการ
เช่น ในตัวอย่างนี้ เราเลือกประสิทธิภาพการทำงาน แล้วคลิกสร้าง
ถัดไป ในส่วนรายละเอียดแอป คุณต้องระบุข้อมูลสาธารณะ เช่น ชื่อที่แสดง ไอคอน และคำอธิบายที่แสดงต่อผู้ใช้ รวมถึงความสามารถ ข้อจำกัด พรอมต์ตัวอย่าง และข้อมูลอื่นๆ ของแอป
จากนั้นเมื่อกำหนดค่าเซิร์ฟเวอร์ MCP คุณจะต้องระบุปลายทาง
คุณต้องยืนยันว่าโดเมนนี้เป็นของคุณ และยังสามารถกำหนดค่าข้อมูลเข้าสู่ระบบเพื่อซิงค์เครื่องมือได้ด้วย
โปรดทราบว่า Google Console จะถ่ายสแนปชอตของสคีมา MCP ดังนั้นเมื่อใดก็ตามที่คุณทำการเปลี่ยนแปลงสคีมา คุณจะต้องกลับไปทำให้ใช้งานได้อีกครั้ง
หลังจากนั้น คุณก็กำหนดค่าความพร้อมให้บริการของแอปได้เลย
คุณเลือกภูมิภาคที่แอปควรพร้อมให้บริการ ภาษา แพลตฟอร์ม และการกำหนดค่าเครื่องมืออื่นๆ แต่ละรายการได้
จากนั้นคุณก็สามารถกดพุชการเปลี่ยนแปลงและส่งให้ Gemini Stage ตรวจสอบได้
นอกจากนี้ คุณยังเพิ่มบัญชีทดสอบในส่วนจัดการผู้ทดสอบได้ด้วย
และทดสอบแบบเรียลไทม์ทันทีด้วยบัญชีทดสอบนี้บนเว็บ อุปกรณ์เคลื่อนที่ หรือแพลตฟอร์มใดก็ได้ที่คุณเลือกไว้ก่อนหน้านี้ เช่น Gemini หรือ Search จากนั้นส่งเพื่อดูตัวอย่างขั้นสุดท้าย
และเมื่อแอปพร้อมแล้ว คุณก็สามารถเปิดตัวแอปเป็นเวอร์ชันที่ใช้งานจริงทั่วโลกให้แก่ผู้ใช้หรือภูมิภาคที่เลือกได้โดยการส่งปุ่มนั้น
เท่านี้ก็เรียบร้อย!
เราตื่นเต้นที่จะได้เห็นสิ่งที่คุณสร้างด้วยแพลตฟอร์มแอปที่เชื่อมต่อ ไม่ว่าคุณจะแสดงความสามารถของแอปผ่านเซิร์ฟเวอร์ MCP ระยะไกลหรือผ่าน Android MCP ก็ตาม
เรายินดีที่จะสนับสนุนคุณในการสร้างการผสานรวมที่ยอดเยี่ยมนี้
เพียงทำตามเอกสารประกอบนี้และตัวอย่างของเราที่พร้อมใช้งานโดยใช้บาร์โค้ดนี้
และขอขอบคุณที่มาร่วมเซสชันของเราในวันนี้
ขอให้สนุกกับการเขียนโค้ด
from mcp.server.fastmcp import FastMCP
mcp = FastMCP(
name="ADS-MCP",
instructions=(
"A Model Context Protocol server providing event "
"overview, schedules, sessions, speakers, and "
"sandbox demos for the Android Developer Summit "
),
)@mcp.tool(
title="List Sessions",
annotations=ToolAnnotations(
readOnlyHint=True,
destructiveHint=False,
),
meta={ … },
)
def list_sessions( … )
…def list_sessions(
track: Optional[str] = None,
location: Optional[str] = None,
) -> List[Dict[str, Any]]:
"""Lists all sessions, optionally filtered by track
(e.g. 'Tools and performance', 'Apps Foundation',
'AI experiences', 'Android XR') or location
(e.g. 'MTV', 'Mountain View', 'London', 'LON').
"""
…@mcp.tool(
…
meta={
"ui": {
"resourceUri": "ui://ads-mcp/summit-app",
},
…
},
)
def list_sessions(…)
…@mcp.resource(
"ui://ads-mcp/summit-app",
name="summit-app",
mime_type="text/html",
)
def get_summit_ui() -> ResourceResult:
"""Renders the interactive ADS 2026 dashboard."""
return ResourceResult([
ResourceContent(
_build_summit_ui_html(),
mime_type="text/html",
)
])./venv/bin/python server.py
npx @modelcontextprotocol/inspectorgcloud run deploy ads-mcp-server