Skip to content

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 :

php
// 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 :

php
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 :

php
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

  1. Récupère le schéma des champs de l'entité depuis DataGridService
  2. Construit le prompt système (noms de champs, types, opérateurs)
  3. Appelle le modèle IA pour générer les conditions de filtre JSON
  4. Corrige automatiquement les champs de relation (ex. departmentdepartment.name)
  5. Prend en charge les combinaisons logiques AND/OR
  6. 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 :

php
$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) :

php
$result = $visionAgent->analyzeImage($imageUrl, '识别这张发票的信息');

Extension

Pour ajouter un agent personnalisé :

  1. Créez une classe Agent et injectez AiManager
  2. Enregistrez-la dans AgentManager

Open source sous licence MIT | Copyright © 2026 Doggy