نظرة عامة
تتضمّن النماذج اللغوية الكبيرة معرفة عامة واسعة النطاق، ولكنّها لا تعرف المقاييس المحدّدة أو مخططات قواعد البيانات أو صيغ العمليات الحسابية الخاصة بمجالك. وبدون هذا السياق، يخمن النموذج، ما يؤدي إلى إنشاء استعلامات 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 للتعليمات.
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. نص Markdown
يقدّم النص إرشادات خاصة بالنطاق يتبعها النموذج بعد تحميله.
يتضمّن نص مهارة مقاييس RMI صيغة TTI الدقيقة
(duration_in_seconds / static_duration_in_seconds)، ونموذج BigQuery SQL تم التحقّق منه لكل مقياس، وعبارات تشغيل تربط نية المستخدم بالمقياس الصحيح. يساعد توفير تعليمات منظَّمة ومؤكَّدة في الحفاظ على دقة النموذج ويمنعه من تخمين تفاصيل المخطط أو الصيغة.
تسجيل المهارات باستخدام "حزمة تطوير التطبيقات" (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 هنا إلى الدليل الذي يحتوي على مهارة
الاستناد إلى مقاييس الزيارات.
ربط الأدوات بالمهارات
بما أنّ المهارات هي تعليمات مستندة إلى النصوص، فإنّ الاعتماد على النموذج وحده لتفسير المنطق المعقّد وتنفيذه قد يؤدي إلى حدوث تناقضات. يؤدي ربط أدوات قابلة للتنفيذ بمهارة إلى توفير تحديد: يتعامل الرمز البرمجي مع العمليات الحسابية وعمليات التحقّق والتفاعلات مع واجهات برمجة التطبيقات، بينما توجّه المهارة النموذج بشأن وقت وكيفية استخدامها.
يساعد تجميع الأدوات أيضًا في تجنُّب تضخّم السياق العام. بدلاً من عرض كل أداة متخصصة بشكل مسبق، يتم تحديد نطاق الأدوات بحيث لا يتم تحميلها إلا عندما تكون مهارة النطاق المقابلة نشطة.
يمكنك إرفاق أدوات معيّنة مباشرةً بمهارة في عنوان YAML الخاص بها:
metadata:
adk_additional_tools:
- calculate_custom_metric
ويضمن ذلك أن يتلقّى النموذج مخطط الأداة وتعليمات استخدامها معًا في الوقت المناسب، ما يحافظ على بساطة مجموعة الأدوات الأساسية.
مثال: تحديد موقع جغرافي لطلب بحث عن الازدحام
- يطرح المستخدم السؤال "ما مدى الازدحام المروري على طريق Storrow Drive خلال ساعة الذروة المسائية؟"
- يعرض طلب النظام الأساسي اسم كل مهارة ووصفها فقط، لذا يرى الوكيل أنّ
rmi-traffic-metrics-groundingيغطي "الازدحام" ويطلبload_skillلجلب التعليمات الكاملة لهذا الطلب. - بعد تحميل المهارة، يطبّق الوكيل تعريف TTI ونموذج SQL الذي تم التحقّق منه، ويحتسب النسبة مقابل
historical_travel_timeبدلاً من تخمين صيغة.
وبما أنّه لا يتم استرجاع نص المهارة إلا عندما يحتاج إليه طلب بحث، فإنّ المهارات التي لا يستخدمها الوكيل لا تدخل في السياق أبدًا، ما يحافظ على صغر حجم طلب النظام الأساسي.
الخلاصات الرئيسية
- الاستناد إلى إرشادات النطاق: تقديم تعليمات وقيود واضحة ومنطق النشاط التجاري بدلاً من الاعتماد على افتراضات النموذج العامة
- استخدام مهارات نموذجية: قسِّم المعرفة إلى مهارات مركّزة بدلاً من استخدام طلب نظام واحد ضخم لتوفير الرموز المميّزة وتقليل وقت الاستجابة وتحسين الدقة.
- كتابة أوصاف واضحة: أدرِج عبارات وكلمات رئيسية محدّدة في وصف كل مهارة لكي يحمّلها الوكيل بشكل موثوق.
- تضمين أمثلة ملموسة: أضِف أمثلة تم التحقّق منها ومراجع لسير العمل في نصوص المهارات للحفاظ على اتساق الردود ودقتها.
- تجميع الأدوات لضمان الحتمية: إرفاق أدوات قابلة للتنفيذ بالمهارات للتعامل مع عمليات التحقّق والتنفيذ الصارمة مع الحفاظ على بساطة مجموعة الأدوات الأساسية.
الخطوات التالية
- استكشاف أنماط المهارات المتقدّمة: يمكنك الاطّلاع على دليل المطوّرين لإنشاء وكلاء ADK باستخدام المهارات للتعرّف على مهارات ADK.
المساهمون
ناثانيال توماس | متدرب في هندسة البرمجيات، "منصة خرائط Google"