> **Beta Translation:** This document was translated via Machine Learning and as such may not be 100% accurate. All non-English languages are currently classified as Beta.
تحدد هذه المواصفات نظام تجميع الأدوات لوكلاء TrustGraph، مما يسمح بالتحكم الدقيق في الأدوات المتاحة لطلبات معينة. يقدم النظام تصفية الأدوات المستندة إلى المجموعات من خلال التكوين وتحديد مستوى الطلب، مما يتيح حدودًا أمنية أفضل وإدارة الموارد وتقسيمًا وظيفيًا لقدرات الوكيل.
### 1. نظرة عامة
#### 1.1 بيان المشكلة
حاليًا، يتمتع وكلاء TrustGraph بإمكانية الوصول إلى جميع الأدوات المكونة بغض النظر عن سياق الطلب أو متطلبات الأمان. وهذا يخلق عدة تحديات:
**مخاطر أمنية**: الأدوات الحساسة (مثل تعديل البيانات) متاحة حتى للاستعلامات للقراءة فقط.
**إهدار الموارد**: يتم تحميل الأدوات المعقدة حتى عندما لا تتطلب الاستعلامات البسيطة ذلك.
**ارتباك وظيفي**: قد تختار الوكلاء أدوات غير مناسبة عندما تكون هناك بدائل أبسط.
**العزل متعدد المستأجرين**: تحتاج مجموعات المستخدمين المختلفة إلى الوصول إلى مجموعات أدوات مختلفة.
#### 1.2 نظرة عامة على الحل
يقدم نظام تجميع الأدوات ما يلي:
1.**تصنيف المجموعات**: يتم وضع علامة على الأدوات باستخدام عضوية المجموعة أثناء التكوين.
2.**التصفية على مستوى الطلب**: يحدد AgentRequest مجموعات الأدوات المسموح بها.
3.**التنفيذ في وقت التشغيل**: لا تملك الوكلاء سوى الأدوات التي تتطابق مع المجموعات المطلوبة.
4.**تجميع مرن**: يمكن أن تنتمي الأدوات إلى مجموعات متعددة للسيناريوهات المعقدة.
### 2. تغييرات المخطط
#### 2.1 تحسين مخطط تكوين الأداة
يتم تحسين تكوين الأداة الحالي بإضافة حقل `group`:
**قبل:**
```json
{
"name": "knowledge-query",
"type": "knowledge-query",
"description": "Query the knowledge graph"
}
```
**بعد:**
```json
{
"name": "knowledge-query",
"type": "knowledge-query",
"description": "Query the knowledge graph",
"group": ["read-only", "knowledge", "basic"]
}
```
**تحديد حقل المجموعة:**
`group`: Array(String) - قائمة المجموعات التي تنتمي إليها هذه الأداة.
**اختياري**: الأدوات التي لا تحتوي على حقل المجموعة تنتمي إلى المجموعة الافتراضية.
**العضوية المتعددة**: يمكن للأدوات أن تنتمي إلى مجموعات متعددة.
**حساسية حالة الأحرف**: أسماء المجموعات هي مطابقات دقيقة للسلاسل النصية.
#### 2.1.2 تحسين انتقال حالة الأداة
يمكن للأدوات تحديد انتقالات الحالة وحالة التوفر بناءً على الحالة بشكل اختياري:
```json
{
"name": "knowledge-query",
"type": "knowledge-query",
"description": "Query the knowledge graph",
"group": ["read-only", "knowledge", "basic"],
"state": "analysis",
"available_in_states": ["undefined", "research"]
}
```
**تحديد حقل الحالة:**
`state`: String - **اختياري** - الحالة التي يتم الانتقال إليها بعد تنفيذ الأداة بنجاح
`available_in_states`: Array(String) - **اختياري** - الحالات التي تتوفر فيها هذه الأداة
**السلوك الافتراضي**: الأدوات التي لا تحتوي على `available_in_states` متاحة في جميع الحالات
**انتقال الحالة**: يحدث فقط بعد تنفيذ الأداة بنجاح
#### 2.2 تحسين مخطط AgentRequest
مخطط `AgentRequest` في `trustgraph-base/trustgraph/schema/services/agent.py` تم تحسينه:
**AgentRequest الحالي:**
`question`: String - استعلام المستخدم
`plan`: String - خطة التنفيذ (يمكن إزالتها)
`state`: String - حالة الوكيل
`history`: Array(AgentStep) - سجل التنفيذ
**AgentRequest المحسن:**
`question`: String - استعلام المستخدم
`state`: String - حالة تنفيذ الوكيل (تستخدم الآن بنشاط لتصفية الأدوات)
`history`: Array(AgentStep) - سجل التنفيذ
`group`: Array(String) - **جديد** - مجموعات الأدوات المسموح بها لهذا الطلب
**تغييرات المخطط:**
**تمت إزالة**: حقل `plan` لم يعد مطلوبًا ويمكن إزالته (كان مخصصًا في الأصل لتحديد الأدوات)
**تمت إضافة**: حقل `group` لتحديد مجموعة الأدوات
**تم التحسين**: يتحكم حقل `state` الآن في توفر الأدوات أثناء التنفيذ
**سلوكيات الحقول:**
**حقل المجموعة:**
**اختياري**: إذا لم يتم تحديده، فسيتم تعيينه افتراضيًا إلى ["default"]
**التقاطع**: تتوفر فقط الأدوات التي تتطابق مع مجموعة واحدة على الأقل من المجموعات المحددة
**مصفوفة فارغة**: لا تتوفر أي أدوات (يمكن للوكيل استخدام الاستدلال الداخلي فقط)
**رمز بدل (Wildcard)**: تمنح المجموعة الخاصة "*" إمكانية الوصول إلى جميع الأدوات
**حقل الحالة:**
**اختياري**: إذا لم يتم تحديده، فسيتم تعيينه افتراضيًا إلى "undefined"
**التصفية بناءً على الحالة**: الأدوات المتاحة فقط في الحالة الحالية هي المؤهلة
**الحالة الافتراضية**: تسمح حالة "undefined" بجميع الأدوات (مع مراعاة تصفية المجموعة)
**انتقالات الحالة**: يمكن للأدوات تغيير الحالة بعد التنفيذ الناجح
يمكّن هذا النظام عمليات نشر TrustGraph من إدارة الوصول إلى الأدوات بشكل أفضل، وتحسين الحدود الأمنية، وتحسين استخدام الموارد مع الحفاظ على التوافق الكامل مع التكوينات والطلبات الحالية.