پایه گذاری عوامل RMI ADK در تخصص دامنه با مهارت ها

نمای کلی

مدل‌های زبانی بزرگ دانش عمومی گسترده‌ای دارند، اما معیارهای خاص دامنه شما، طرح‌های پایگاه داده یا فرمول‌های محاسباتی را نمی‌دانند. بدون این زمینه، مدل حدس می‌زند که منجر به SQL نادرست و تحلیل ناقص می‌شود.

عامل RMI ADK این محدودیت را از طریق مهارت‌ها برطرف می‌کند. کاربری را در نظر بگیرید که می‌پرسد "دیروز Storrow Drive چقدر شلوغ بود؟" . برای پاسخ، عامل باید بداند که RMI شلوغی را به عنوان شاخص زمان سفر (TTI) بیان می‌کند، که نسبت duration_in_seconds زنده بر حسب ثانیه به static_duration_in_seconds در جدول historical_travel_time است. یک عامل بدون مهارت ممکن است به جای آن یک ستون average_speed (RMI فقط سرعت دسته‌بندی شده را گزارش می‌دهد، هرگز کیلومتر بر ساعت) اختراع کند یا فرمول اشتباهی را اعمال کند که منجر به یک پاسخ مطمئن اما اشتباه می‌شود.

در حالی که عامل به این دانش دامنه نیاز دارد، قرار دادن هر تعریف معیار، طرح جدول و هشدار SQL در یک اعلان سیستم واحد، ناکارآمد است.

محدودیت‌های اعلان‌های سیستم بزرگ

قرار دادن تمام قوانین و طرحواره‌های دامنه در یک اعلان سیستم واحد باعث ایجاد چندین مشکل می‌شود:

  • هزینه‌های بالاتر و پاسخ‌های کندتر : ارسال یک درخواست بزرگ در هر نوبت، توکن‌ها را هدر می‌دهد و تأخیر را افزایش می‌دهد، حتی برای سوالاتی که به آن قوانین نیاز ندارند.
  • پیروی بدتر از دستورالعمل‌ها : هرچه یک دستور با موارد حاشیه‌ای طولانی‌تر شود، احتمال اینکه مدل قوانین خاص را نادیده بگیرد یا فراموش کند، بیشتر می‌شود.
  • نگهداری دشوارتر : ترکیب همه چیز در یک دستور، به‌روزرسانی یا آزمایش تک تک قوانین بدون نقض قوانین دیگر را دشوار می‌کند.

مهارت‌ها

مهارت‌های عامل، دانش دامنه را در پوشه‌های ماژولار سازماندهی می‌کنند که عامل فقط در صورت نیاز آنها را بارگذاری می‌کند. هر مهارت، دایرکتوری است که شامل یک فایل SKILL.md با دستورالعمل‌های Markdown و یک هدر YAML است.

به جای بارگذاری همه چیز از ابتدا، عامل فقط description کوتاه هر مهارت را در اعلان پایه خود نگه می‌دارد. وقتی کاربر سوالی مربوط به یک مهارت می‌پرسد، عامل دستورالعمل‌های کامل آن نوبت را بارگذاری می‌کند. این کار باعث می‌شود اعلان‌ها کوچک بمانند و فضای متن برای تاریخچه مکالمات واقعی ذخیره شود.

مهارت‌ها همچنین جدایی کاملی از دغدغه‌ها را فراهم می‌کنند: شما می‌توانید قابلیت‌های فردی را به صورت جداگانه بنویسید، آزمایش کنید و به‌روزرسانی کنید، بدون اینکه خطر عوارض جانبی ناخواسته در حوزه‌های نامرتبط وجود داشته باشد. یک عامل تولید معمولاً از چندین مهارت متمرکز به جای یک دستور العمل بزرگ استفاده می‌کند.

آناتومی یک مهارت

یک فایل SKILL.md دو بخش دارد: یک سرآیند YAML برای مسیریابی و یک بدنه Markdown برای دستورالعمل‌ها.

۱. سرآیند 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 برای تصمیم‌گیری در مورد بارگذاری مهارت استفاده می‌کند. از آنجا که مدل فقط این توضیحات را قبل از تصمیم‌گیری برای بارگذاری مهارت می‌بیند، مطمئن شوید که موضوعات تحت پوشش، عبارات معمول کاربر و زمان فعال‌سازی آن را به وضوح فهرست می‌کند.

۲. بدنه‌ی نشانه‌گذاری شده

بدنه، راهنمایی‌های مختص به دامنه را ارائه می‌دهد که مدل پس از بارگذاری از آنها پیروی می‌کند. بدنه مهارت معیارهای RMI شامل فرمول دقیق TTI ( duration_in_seconds / static_duration_in_seconds )، یک الگوی SQL تأیید شده BigQuery برای هر معیار و عبارات محرکی است که قصد کاربر را به معیار صحیح نگاشت می‌کنند. ارائه دستورالعمل‌های ساختاریافته و تأیید شده، مدل را پایدار نگه می‌دارد و از حدس زدن طرحواره یا جزئیات فرمول جلوگیری می‌کند.

ثبت مهارت‌ها در ADK

مهارت‌ها را در یک SkillToolset گروه‌بندی کنید و آنها را به لیست ابزارهای عامل اضافه کنید:

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. کاربر می‌پرسد: «ترافیک خیابان استرو در ساعات شلوغی عصر چقدر است؟»
  2. اعلان سیستم پایه فقط نام و توضیحات هر مهارت را اعلام می‌کند، بنابراین عامل می‌بیند که rmi-traffic-metrics-grounding "تراکم" را پوشش می‌دهد و load_skill را برای دریافت دستورالعمل‌های کامل خود برای این پرس‌وجو فراخوانی می‌کند.
  3. با بارگذاری مهارت، عامل تعریف TTI و الگوی SQL تأیید شده‌ای را که ارائه می‌دهد اعمال می‌کند و به جای حدس زدن فرمول، نسبت را در برابر historical_travel_time محاسبه می‌کند.

از آنجا که بدنه یک مهارت فقط زمانی که یک پرس‌وجو به آن نیاز دارد، فراخوانی می‌شود، مهارت‌هایی که عامل هرگز از آنها استفاده نمی‌کند، هرگز وارد متن نمی‌شوند و باعث می‌شوند که اعلان سیستم پایه کوچک بماند.

نکات کلیدی

  • با راهنمایی دامنه، زمینه‌سازی کنید : به جای تکیه بر فرضیات کلی مدل، دستورالعمل‌ها، محدودیت‌ها و منطق کسب‌وکار را به طور صریح ارائه دهید.
  • از مهارت‌های ماژولار استفاده کنید : به جای یک سیستم غول‌پیکر، دانش را به مهارت‌های متمرکز تقسیم کنید تا توکن‌ها را ذخیره کنید، تأخیر را کاهش دهید و دقت را بهبود بخشید.
  • توضیحات واضح بنویسید : عبارات و کلمات کلیدی محرک خاص را در توضیحات هر مهارت بگنجانید تا اپراتور بتواند آن را به طور قابل اعتمادی بارگذاری کند.
  • مثال‌های عینی اضافه کنید : مثال‌های تأیید شده و گردش‌های کاری مرجع را به نهادهای مهارتی اضافه کنید تا خروجی‌ها ثابت و دقیق باشند.
  • ابزارهای بسته‌بندی برای جبرگرایی : ابزارهای اجرایی را به مهارت‌ها متصل کنید تا اعتبارسنجی و اجرای دقیق را مدیریت کنند و در عین حال مجموعه ابزارهای پایه را ساده نگه دارند.

مراحل بعدی

مشارکت‌کنندگان

ناتانیل توماس | کارآموز مهندسی نرم‌افزار، پلتفرم نقشه‌های گوگل