การยึดมั่นในความเชี่ยวชาญด้านโดเมนของเอเจนต์ RMI ADK ด้วยทักษะ

ภาพรวม

โมเดลภาษาขนาดใหญ่มีความรู้ทั่วไปที่กว้างขวาง แต่ไม่ทราบเมตริกเฉพาะของโดเมน สคีมาฐานข้อมูล หรือสูตรการคำนวณ หากไม่มีบริบทนี้ โมเดลจะคาดเดา ซึ่งนำไปสู่ SQL ที่ไม่ถูกต้องและการวิเคราะห์ที่ผิดพลาด

RMI ADK Agent แก้ไขข้อจำกัดนี้ผ่านทักษะ ลองพิจารณาผู้ใช้ที่ ถามว่า "เมื่อวาน Storrow Drive ติดขัดมากแค่ไหน" Agent ต้องทราบว่า RMI แสดงความติดขัดเป็นดัชนีเวลาเดินทาง (TTI) ซึ่งเป็นอัตราส่วน ของ duration_in_seconds แบบสดต่อ static_duration_in_seconds แบบไหลอิสระในตาราง historical_travel_time Agent ที่ไม่มีทักษะอาจสร้างคอลัมน์ average_speed ขึ้นมาแทน (RMI จะรายงานความเร็วเป็นหมวดหมู่เท่านั้น ไม่ใช่กม./ชม.) หรือใช้สูตรที่ไม่ถูกต้อง ซึ่งจะให้คำตอบที่มั่นใจแต่ผิด

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

ข้อจำกัดของพรอมต์ระบบขนาดใหญ่

การใส่กฎและสคีมาทั้งหมดของโดเมนลงในพรอมต์ระบบเดียวจะทำให้เกิดปัญหาหลายประการ ดังนี้

  • ค่าใช้จ่ายสูงขึ้นและคำตอบช้าลง: การส่งพรอมต์ขนาดใหญ่ในแต่ละรอบ จะทำให้เสียโทเค็นและเพิ่มเวลาในการตอบสนอง แม้แต่คำถามที่ไม่จำเป็นต้องใช้กฎเหล่านั้น
  • การปฏิบัติตามคำแนะนำแย่ลง: เมื่อพรอมต์ยาวขึ้นพร้อมกรณีขอบ โมเดลมีแนวโน้มที่จะละเลยหรือลืมกฎเฉพาะ
  • การบำรุงรักษาทำได้ยากขึ้น: การรวมทุกอย่างไว้ในพรอมต์เดียวทำให้การอัปเดตหรือทดสอบกฎแต่ละข้อทำได้ยาก โดยไม่ทำให้กฎอื่นๆ เสีย

ทักษะ

ทักษะ ของ Agent จะจัดระเบียบความรู้ในโดเมนเป็นโฟลเดอร์แบบโมดูลาร์ที่ Agent จะโหลดเมื่อจำเป็นเท่านั้น ทักษะแต่ละอย่างคือไดเรกทอรีที่มีไฟล์ SKILL.md พร้อมคำแนะนำมาร์กดาวน์และส่วนหัว YAML

Agent จะเก็บเฉพาะ description สั้นๆ ของแต่ละทักษะไว้ในพรอมต์พื้นฐานแทนที่จะโหลดทุกอย่างล่วงหน้า เมื่อผู้ใช้ถามคำถามที่เกี่ยวข้องกับทักษะ Agent จะโหลดคำแนะนำทั้งหมดสำหรับรอบนั้น วิธีนี้จะช่วยให้พรอมต์มีขนาดเล็กและประหยัดพื้นที่บริบทสำหรับประวัติการสนทนาจริง

ทักษะยังช่วยแยกความกังวลได้อย่างชัดเจนด้วย คุณสามารถเขียน ทดสอบ และอัปเดตความสามารถแต่ละอย่างแยกกันได้โดยไม่ต้องเสี่ยงกับผลข้างเคียงที่ไม่พึงประสงค์ในโดเมนที่ไม่เกี่ยวข้อง โดยปกติแล้ว Agent ที่ใช้งานจริงจะใช้ทักษะที่มุ่งเน้นหลายอย่างแทนที่จะใช้พรอมต์ขนาดใหญ่เพียงอย่างเดียว

โครงสร้างของทักษะ

ไฟล์ SKILL.md มี 2 ส่วน ได้แก่ ส่วนหัว YAML สำหรับการกำหนดเส้นทางและส่วนเนื้อหามาร์กดาวน์สำหรับคำแนะนำ

1. ส่วนหัว YAML

---
name: rmi-traffic-metrics-grounding
description: >
  Standard traffic performance metrics computable from RMI BigQuery
  tables. Covers congestion severity (TTI), delay, travel time
  reliability (LOTTR, BTI, PTI, CoV), congestion frequency, speed
  breakdowns, and network-wide congestion rates. Use when the user asks
  about traffic conditions, congestion, reliability, delay, or network
  health.
---

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

2. ส่วนเนื้อหามาร์กดาวน์

ส่วนเนื้อหาจะให้คำแนะนำเฉพาะโดเมนที่โมเดลจะปฏิบัติตามเมื่อโหลดแล้ว ส่วนเนื้อหาของทักษะเมตริก RMI มีสูตร TTI ที่แน่นอน (duration_in_seconds / static_duration_in_seconds) เทมเพลต SQL ของ BigQuery ที่ได้รับการยืนยันสำหรับเมตริกแต่ละรายการ และวลีทริกเกอร์ที่แมปความตั้งใจของผู้ใช้กับเมตริกที่ถูกต้อง การให้คำแนะนำที่มีโครงสร้างและได้รับการยืนยันจะช่วยให้โมเดลมีความแม่นยำและป้องกันไม่ให้โมเดลคาดเดารายละเอียดสคีมาหรือสูตร

ลงทะเบียนทักษะกับ ADK

จัดกลุ่มทักษะเป็น SkillToolset แล้วเพิ่มลงในรายการเครื่องมือของ Agent

from google.adk import skills
from google.adk.tools import skill_toolset

rmi_skill_toolset = skill_toolset.SkillToolset(
    skills=[
        # TRAFFIC_METRICS_SKILL_DIR points to the skill's SKILL.md folder.
        skills.load_skill_from_dir(TRAFFIC_METRICS_SKILL_DIR),
    ],
)

# root_agent = llm_agent.Agent(..., tools=[*bq_tools, rmi_skill_toolset])

โดย TRAFFIC_METRICS_SKILL_DIR จะชี้ไปยังไดเรกทอรีที่มีทักษะการอ้างอิงเมตริกการจราจร

รวมเครื่องมือกับทักษะ

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

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

คุณสามารถแนบเครื่องมือเฉพาะกับทักษะได้โดยตรงในส่วนหัว YAML ของทักษะ

metadata:
  adk_additional_tools:
    - calculate_custom_metric

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

ตัวอย่าง: การอ้างอิงคำค้นหาความติดขัด

  1. ผู้ใช้ถามว่า "Storrow Drive ติดขัดมากแค่ไหนในช่วงเวลาเร่งด่วนตอนเย็น"
  2. พรอมต์ระบบพื้นฐานจะโฆษณาเฉพาะชื่อและคำอธิบายของแต่ละทักษะ ดังนั้น Agent จะเห็นว่า rmi-traffic-metrics-grounding ครอบคลุม "การคั่ง" และเรียก load_skill เพื่อดึงคำแนะนำทั้งหมดสำหรับคำค้นหานี้
  3. เมื่อโหลดทักษะแล้ว Agent จะใช้คำจำกัดความ TTI และเทมเพลต SQL ที่ได้รับการยืนยันที่ทักษะให้มา โดยจะคำนวณอัตราส่วนเทียบกับ historical_travel_time แทนที่จะคาดเดาสูตร

เนื่องจากระบบจะดึงข้อมูลส่วนเนื้อหาของทักษะก็ต่อเมื่อคำค้นหาต้องการเท่านั้น ทักษะที่ Agent ไม่เคยใช้จึงจะไม่เข้าสู่บริบท ซึ่งจะช่วยให้พรอมต์ระบบพื้นฐานมีขนาดเล็ก

สรุปประเด็นสำคัญ

  • อ้างอิงตามคำแนะนำของโดเมน: ให้คำแนะนำ ข้อจำกัด และตรรกะทางธุรกิจที่ชัดเจนแทนที่จะอาศัยสมมติฐานทั่วไปของโมเดล
  • ใช้ทักษะแบบโมดูลาร์: แยกความรู้เป็นทักษะที่มุ่งเน้นแทนที่จะใช้ พรอมต์ระบบขนาดใหญ่เพียงอย่างเดียวเพื่อประหยัดโทเค็น ลดเวลาในการตอบสนอง และปรับปรุงความแม่นยำ
  • เขียนคำอธิบายที่ชัดเจน: ใส่วลีทริกเกอร์และคีย์เวิร์ดเฉพาะ ในคำอธิบายของแต่ละทักษะเพื่อให้ Agent โหลดทักษะได้อย่างน่าเชื่อถือ
  • ใส่ตัวอย่างที่เป็นรูปธรรม: เพิ่มตัวอย่างที่ได้รับการยืนยันและเวิร์กโฟลว์อ้างอิง ลงในส่วนเนื้อหาของทักษะเพื่อให้เอาต์พุตมีความสอดคล้องกันและแม่นยำ
  • รวมเครื่องมือเพื่อความแน่นอน: แนบเครื่องมือที่ดำเนินการได้กับทักษะเพื่อ จัดการการตรวจสอบและการดำเนินการที่เข้มงวด ในขณะที่ทำให้ชุดเครื่องมือพื้นฐานมีขนาดเล็ก

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

ผู้ร่วมให้ข้อมูล

Nathaniel Thomas | นักศึกษาฝึกงานด้านวิศวกรรมซอฟต์แวร์, Google Maps Platform