Système d'agents
Le système d'agents de Doggy fournit plusieurs agents intelligents, accessibles de manière uniforme via la Facade AgentManager, et prend en charge des agents d'exécution basés sur symfony/ai-agent.
Aperçu
Le système d'agents se trouve dans src/Service/AI/Agent/, orchestré de manière centralisée par AgentManager :
// src/Service/AI/AgentManager.php
class AgentManager
{
public function getQueryAgent(): NaturalLanguageQueryAgent
public function getVisionAgent(): VisionAgent
public function getCodingAgent(): CodingAgent
public function getPasswordPolicyAgent(): PasswordPolicyAgent
}Par ailleurs, l'architecture d'agents d'exécution basée sur symfony/ai-agent (boucle ReAct + appel d'outils) est décrite dans Assistant IA, et l'identification d'intention + l'orchestration de sous-agents par scénario sont décrites dans Amélioration de vue IA.
Assistant de codage
CodingAgent pour la génération de code générique :
use App\Service\AI\Agent\CodingAgent;
$code = $codingAgent->generateCode('Create a Symfony controller for employee CRUD');Requête en langage naturel
NaturalLanguageQueryAgent convertit le langage naturel en conditions de filtre DataGrid, profondément intégré à DataGridService :
use App\Service\AI\Agent\NaturalLanguageQueryAgent;
$filters = $queryAgent->parseQuery(
text: '上个月入职的部门经理',
entityClass: Employee::class,
currentFilters: []
);
// Retourne: { filters: [...], thought_process: "..." }Exemples pris en charge :
- « Afficher les départements activés »
- « Les départements dont le nom contient "technique" »
- « Les employés ajoutés au cours de la dernière semaine »
Fonctionnement
- Récupère le schéma des champs de l'entité depuis
DataGridService - Construit le prompt système (noms de champs, types, opérateurs)
- Appelle le modèle IA pour générer les conditions de filtre JSON
- Corrige automatiquement les champs de relation (ex.
department→department.name) - Prend en charge les combinaisons logiques AND/OR
- Gère les balises
</think>des modèles DeepSeek/à raisonnement
Agent de stratégie de mot de passe
PasswordPolicyAgent convertit les stratégies de sécurité en langage naturel en expressions DSL :
$policy = $passwordPolicyAgent->parsePolicyInstruction(
'密码长度至少8位,必须包含数字和大写字母'
);
// Retourne: { and: [{field: "length", operator: ">=", value: 8}, {field: "has_number", ...}, {field: "has_uppercase", ...}] }Reconnaissance visuelle
VisionAgent pour l'analyse d'images (interface réservée, support multimodal à venir) :
$result = $visionAgent->analyzeImage($imageUrl, '识别这张发票的信息');Extension
Pour ajouter un agent personnalisé :
- Créez une classe Agent et injectez
AiManager - Enregistrez-la dans
AgentManager