نظام Agent
يوفر نظام Doggy Agent عدة وكلاء أذكياء يمكن الوصول إليها بشكل موحّد من خلال Facade الخاص بـ AgentManager، ويدعم وكلاء التشغيل المبنية على symfony/ai-agent.
نظرة عامة
يقع نظام Agent في src/Service/AI/Agent/ ويتم تنسيقه بشكل موحّد عبر AgentManager:
// src/Service/AI/AgentManager.php
class AgentManager
{
public function getQueryAgent(): NaturalLanguageQueryAgent
public function getVisionAgent(): VisionAgent
public function getCodingAgent(): CodingAgent
public function getPasswordPolicyAgent(): PasswordPolicyAgent
}بالإضافة إلى ذلك، فإن بنية وكلاء التشغيل المبنية على symfony/ai-agent (حلقة ReAct + استدعاء الأدوات) موضحة في AI 助手، بينما يوضح AI 视图增强 التعرف على النية + تنسيق الوكلاء الفرعيين حسب السيناريو.
مساعد الترميز
يقوم CodingAgent بتوليد أكواد عامة:
use App\Service\AI\Agent\CodingAgent;
$code = $codingAgent->generateCode('Create a Symfony controller for employee CRUD');الاستعلام باللغة الطبيعية
يقوم NaturalLanguageQueryAgent بتحويل اللغة الطبيعية إلى شروط تصفية DataGrid، مع تكامل عميق مع DataGridService:
use App\Service\AI\Agent\NaturalLanguageQueryAgent;
$filters = $queryAgent->parseQuery(
text: '上个月入职的部门经理',
entityClass: Employee::class,
currentFilters: []
);
// 返回: { filters: [...], thought_process: "..." }أمثلة على الاستعلامات باللغة الطبيعية المدعومة:
- "اعرض الأقسام التي حالتها مفعّلة"
- "الأقسام التي يحتوي اسمها على 'تقنية'"
- "الموظفون المضافون خلال الأسبوع الماضي"
كيف يعمل
- الحصول على مخطط حقول الكيان (Schema) من
DataGridService - بناء رسالة النظام الموجهة (تحتوي أسماء الحقول والأنواع والعوامل)
- استدعاء نموذج AI لتوليد شروط التصفية بصيغة JSON
- إصلاح الحقول المرتبطة تلقائيًا (مثل
department←department.name) - دعم الدمج المنطقي AND/OR
- معالجة وسم
</think>الخاص بنماذج DeepSeek/نماذج الاستدلال
Agent سياسة كلمة المرور
يقوم PasswordPolicyAgent بتحويل سياسات الأمان المكتوبة باللغة الطبيعية إلى تعبيرات DSL:
$policy = $passwordPolicyAgent->parsePolicyInstruction(
'密码长度至少8位,必须包含数字和大写字母'
);
// 返回: { and: [{field: "length", operator: ">=", value: 8}, {field: "has_number", ...}, {field: "has_uppercase", ...}] }التعرف البصري
يقوم VisionAgent بتحليل الصور (واجهة محجوزة، بانتظار دعم التعددية الحسية):
$result = $visionAgent->analyzeImage($imageUrl, '识别这张发票的信息');التوسعة
لإضافة Agent مخصص جديد:
- أنشئ فئة Agent وقم بحقن
AiManager - سجّلها في
AgentManager