Skip to content

Sistema de Agentes

El sistema de Agentes de Doggy proporciona múltiples agentes inteligentes, accesibles de forma unificada a través de la Facade AgentManager, y admite agentes en tiempo de ejecución basados en symfony/ai-agent.

Descripción general

El sistema de Agentes se encuentra en src/Service/AI/Agent/, coordinado de forma unificada a través de 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
}

Además, el sistema de Agentes en tiempo de ejecución basado en symfony/ai-agent (bucle ReAct + llamada a herramientas) se describe en Asistente IA; la orquestación de reconocimiento de intenciones + sub-agentes de escenario se describe en Mejora de vistas IA.

Asistente de codificación

CodingAgent genera código genérico:

php
use App\Service\AI\Agent\CodingAgent;

$code = $codingAgent->generateCode('Create a Symfony controller for employee CRUD');

Consulta en lenguaje natural

NaturalLanguageQueryAgent convierte el lenguaje natural en condiciones de filtro de DataGrid, con integración profunda con DataGridService:

php
use App\Service\AI\Agent\NaturalLanguageQueryAgent;

$filters = $queryAgent->parseQuery(
    text: 'Gerentes de departamento incorporados el mes pasado',
    entityClass: Employee::class,
    currentFilters: []
);
// Devuelve: { filters: [...], thought_process: "..." }

Ejemplos admitidos en lenguaje natural:

  • "Mostrar departamentos con estado habilitado"
  • "Departamentos cuyo nombre contenga 'tecnología'"
  • "Empleados incorporados en la última semana"

Cómo funciona

  1. Obtiene el esquema de campos de la entidad desde DataGridService
  2. Construye el prompt del sistema (nombres de campos, tipos, operadores)
  3. Llama al modelo de IA para generar las condiciones de filtro JSON
  4. Corrige automáticamente los campos de relación (p. ej. departmentdepartment.name)
  5. Admite combinaciones lógicas AND/OR
  6. Gestiona las etiquetas </think> de DeepSeek/modelos de razonamiento

Agente de política de contraseñas

PasswordPolicyAgent convierte las políticas de seguridad en lenguaje natural en expresiones DSL:

php
$policy = $passwordPolicyAgent->parsePolicyInstruction(
    'La contraseña debe tener al menos 8 caracteres e incluir números y letras mayúsculas'
);
// Devuelve: { and: [{field: "length", operator: ">=", value: 8}, {field: "has_number", ...}, {field: "has_uppercase", ...}] }

Reconocimiento visual

VisionAgent analiza imágenes (interfaz reservada, soporte multimodal pendiente de implementación):

php
$result = $visionAgent->analyzeImage($imageUrl, 'Reconoce la información de esta factura');

Extensión

Para añadir un Agente personalizado:

  1. Crea una clase de Agente e inyecta AiManager
  2. Regístrala en AgentManager

Código abierto bajo MIT | Copyright © 2026 Doggy