สร้างเวิร์กโฟลว์แบบ Agentic ด้วย Gemini Nano

เวิร์กโฟลว์แบบ Agentic (com.google.mlkit:genai-agent, อัลฟ่า) ของ ML Kit ช่วยให้คุณสร้างประสบการณ์การสนทนาในอุปกรณ์แบบหลายรอบและทำงานอัตโนมัติซึ่งขับเคลื่อนโดย Gemini Nano และบริการระบบ AICore ของ Android

คลาส AgentRunner สร้างขึ้นจากคลาส GenerativeModel (การเข้าถึงโมเดลโดยตรง) โดยจะทำให้ลูป Agent ที่ขับเคลื่อนด้วยเป้าหมายและสมบูรณ์เป็นไปโดยอัตโนมัติภายในแอปโดยตรง ซึ่งจะสังเกตบริบท ให้เหตุผลเกี่ยวกับอินพุตของผู้ใช้ ดำเนินการผ่านเครื่องมือ Kotlin ที่พิมพ์ และประเมินความคิดเห็นจนกว่าจะเป็นไปตามเงื่อนไขการสิ้นสุด

รูปแบบทั่วไปของ Agent

เวิร์กโฟลว์แบบ Agent ในอุปกรณ์ได้รับการเพิ่มประสิทธิภาพสำหรับลูปการให้เหตุผลเชิงกำหนดที่มุ่งเน้น ซึ่งระบบจะแปลความตั้งใจของผู้ใช้เป็นการดำเนินการในแอปที่มีโครงสร้าง รูปแบบที่พบบ่อยมีดังนี้

รูปแบบ

ตัวอย่าง

การดำเนินการและการลัดการกระทำในแอป

แปลคำขอภาษาธรรมชาติเป็นคำสั่งเฉพาะของแอป เช่น การใช้การปรับแต่งรูปภาพใน Canvas การแก้ไขการตั้งค่าการเล่น หรือการเปิด/ปิดการตั้งค่าแอป

การค้นหาที่มีโครงสร้างและการคำนวณในเครื่อง

การดึงข้อมูลระเบียนที่เฉพาะเจาะจงตามรหัส (เช่น สถานะการสั่งซื้อหรือยอดคงเหลือในบัญชี) และการคำนวณทางคณิตศาสตร์แบบหลายขั้นตอน (เช่น การตัดจำหน่ายเงินกู้หรือเมตริกการออกกำลังกาย)

การกรองและการดูแลจัดการแบบสนทนา

การค้นหาและปรับแต่งรายการแอปในเครื่องแบบอินเทอร์แอกทีฟ เช่น การค้นหาผ่านรายการงานในเครื่อง การกรองเพลย์ลิสต์ หรือการจัดเรียงรายการแคตตาล็อกตามเกณฑ์ของผู้ใช้

การป้อนข้อมูลแบบหลายขั้นตอนพร้อมคำแนะนำ

แนะนำผู้ใช้ผ่านขั้นตอนการป้อนข้อมูลที่มีโครงสร้างทีละขั้นตอน ตรวจสอบอินพุตระดับกลางด้วยเครื่องมือในเครื่องก่อนส่งขั้นสุดท้าย

ประสิทธิภาพและความเป็นส่วนตัวในอุปกรณ์

เวิร์กโฟลว์แบบ Agentic จะทำงานบน Android AICore เพื่อมอบการดำเนินการที่เป็นส่วนตัวและตอบสนองได้ดีบนอุปกรณ์ของผู้ใช้โดยตรง ดังนี้

  • การให้เหตุผลในเครื่องและความเป็นส่วนตัวของพรอมต์: ลูปการให้เหตุผลและการวางแผนของโมเดลจะทำงานในอุปกรณ์ทั้งหมดโดยไม่มีเวลาในการตอบสนองของเครือข่าย ข้อมูลพรอมต์ของผู้ใช้จะยังคงเป็นส่วนตัวในอุปกรณ์ อย่างไรก็ตาม เครื่องมือแต่ละรายการที่ติดตั้งใช้งานในแอปยังคงทำการเรียกใช้เครือข่ายหรือค้นหา Cloud API ได้หาก Use Case ของคุณต้องใช้ข้อมูลภายนอก
  • เซสชันแบบหลายรอบที่มีการจัดการ: อินเทอร์เฟซ AgentSession จะเก็บรักษาประวัติการสนทนาในหน่วยความจำตลอดการสนทนาหลายรอบ คุณจึงไม่ต้องจัดการข้อความถอดเสียงด้วยตนเอง คุณสามารถเรียกคืนหน่วยความจำได้ทุกเมื่อโดยใช้เมธอด session.close(), deleteSession(sessionId) หรือ clearAllSessions()
  • การป้องกันการดำเนินการ: การกำหนดค่า Agent จะบังคับใช้ขีดจำกัดเทิร์นสูงสุด (ขีดจำกัด maxTurns ซึ่งมีค่าเริ่มต้นเป็น 10) เป็นเงื่อนไขการสิ้นสุดทรัพยากรเพื่อป้องกันลูปการดำเนินการที่ควบคุมไม่ได้ ประหยัดแบตเตอรี่ และปกป้องการตอบสนองของอุปกรณ์

เลือกระหว่างการสร้างที่กำหนดเอง, Agent และ API สำหรับงานที่เฉพาะเจาะจง

ML Kit จัดระเบียบความสามารถของ GenAI ในอุปกรณ์ตามระดับการปรับแต่งและการจัดการที่ฟีเจอร์ของคุณต้องการ ดังนี้

  • การสร้างและ Agent ที่กำหนดเอง: ทำงานร่วมกับโมเดลพื้นฐาน Gemini Nano โดยตรงเมื่อฟีเจอร์ของคุณต้องใช้คำสั่งที่กำหนดเองหรือตรรกะเฉพาะโดเมน เลือกเวิร์กโฟลว์แบบ Agentic (โดยใช้คลาส AgentRunner ซึ่งสร้างขึ้นจากคลาส GenerativeModel) เมื่อต้องการเซสชันแบบหลายรอบที่มีการจัดการและลูปการเรียกใช้เครื่องมืออัตโนมัติ หรือเลือกการเข้าถึงโมเดลโดยตรง (โดยใช้คลาส GenerativeModel) สำหรับการสร้างพรอมต์ที่กำหนดเอง เอาต์พุตที่มีโครงสร้างแบบพิมพ์ หรือประวัติแบบหลายรอบที่จัดการโดยไคลเอ็นต์
  • เสียงพูดและเสียง: ใช้โมเดลเสียงพูดและ GenAI โดยเฉพาะ (เช่น การจดจำเสียงพูด) เพื่อถอดเสียงพูดเป็นข้อความ
  • งานข้อความและรูปภาพ: ใช้ประเภทฟีเจอร์เฉพาะงานที่กำหนดค่าไว้ล่วงหน้าและอะแดปเตอร์ LoRA ที่ปรับแต่งอย่างละเอียดบนโมเดลพื้นฐานที่ใช้ร่วมกัน (เช่น คำอธิบายรูปภาพ, การสรุป, การพิสูจน์อักษร และการเขียนใหม่) สำหรับกรณีการใช้งานด้านการมองเห็นและการเขียนแบบเบ็ดเสร็จโดยไม่ต้องใช้วิศวกรรมพรอมต์ (Prompt Engineering)

ตารางต่อไปนี้แสดงการเปรียบเทียบแนวทางเหล่านี้

การพิจารณา

เวิร์กโฟลว์แบบเป็น Agent (AgentRunner)

สิทธิ์เข้าถึงโมเดลโดยตรง (GenerativeModel)

Tasks API ข้อความและรูปภาพ

สถาปัตยกรรม

เลเยอร์การจัดการระดับสูงที่สร้างขึ้นบน GenerativeModel

อินเทอร์เฟซโดยตรงกับโมเดลพื้นฐาน Gemini Nano สำหรับพรอมต์ที่กำหนดเอง

ประเภทฟีเจอร์เฉพาะงานที่รองรับโดยอะแดปเตอร์ LoRA ที่ปรับแต่งอย่างละเอียดซึ่งต่อยอดจากโมเดลพื้นฐานที่ใช้ร่วมกัน

บริบทแบบต่อเนื่อง

เซสชันแบบหลายเทิร์นที่มีการจัดการ (AgentSession) รักษาประวัติการสนทนาในหน่วยความจำโดยอัตโนมัติในเทิร์นต่างๆ คุณจึงไม่ต้องจัดการข้อความถอดเสียงด้วยตนเอง (รองรับการดำเนินการแบบเทิร์นเดียวชั่วคราวด้วย)

บริบทการสนทนาแบบหลายรอบที่จัดการโดยไคลเอ็นต์ GenerateContentRequest รองรับการสนทนาแบบหลายเทิร์น List<Content> (บทบาท USER และ MODEL) และ sessionId สำหรับนักพัฒนาซอฟต์แวร์ที่ต้องการจัดการประวัติการแชทของตนเองโดยตรง

การเรียกใช้งานแบบอินพุตเดียวและไม่มีสถานะ

การเรียกใช้เครื่องมือและการดำเนินการ

ลูปการเรียกใช้เครื่องมืออัตโนมัติ ค้นหา AppFunctions ของ Android ที่ลงทะเบียนไว้ ดำเนินการเรียกใช้ที่โมเดลเลือก และป้อนผลลัพธ์กลับไปยังโมเดลโดยอัตโนมัติ

การประกาศเครื่องมือที่จัดการโดยไคลเอ็นต์ GenerateContentRequest ยอมรับสคีมาเครื่องมือและส่งคำขอการเรียกใช้ฟังก์ชันเพื่อให้แอปของคุณดำเนินการและแสดงผลด้วยตนเอง

ไม่เกี่ยวข้อง (ไปป์ไลน์งานแบบคงที่)

กรณีที่ควรใช้

ใช้เมื่อต้องการการจัดการเป็นกลุ่มแบบอัตโนมัติสำหรับการเรียกใช้เครื่องมือแบบหลายขั้นตอนและเซสชันแบบหลายรอบในหน่วยความจำที่มีการจัดการ

ใช้สำหรับการสร้างพรอมต์ที่กำหนดเอง, การทำความเข้าใจรูปภาพแบบหลายโมดัล, เอาต์พุตที่มีโครงสร้างซึ่งพิมพ์ไว้ (@Generable) หรือเมื่อคุณต้องการจัดการประวัติการแชทหรือการส่งเครื่องมือของคุณเองโดยตรง

ใช้เมื่อฟีเจอร์ของคุณตรงกับงานเขียนหรือการมองเห็นมาตรฐาน และคุณต้องการคุณภาพที่พร้อมใช้งานจาก LoRA ที่ปรับแต่งอย่างละเอียดโดยมีการตั้งค่าเพียงเล็กน้อย

ขั้นตอนถัดไป