Skip to content

Sistema Agent

O sistema Agent do Doggy fornece vários agentes inteligentes, acedidos de forma unificada através do Facade AgentManager, e suporta agentes de runtime baseados em symfony/ai-agent.

Visão geral

O sistema Agent localiza-se em src/Service/AI/Agent/ e é coordenado de forma unificada através do 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
}

Além disso, a arquitetura de agentes de runtime baseada em symfony/ai-agent (ciclo ReAct + chamadas de ferramentas) é descrita em Assistente IA, e o reconhecimento de intenções com a orquestração de subagentes de cenário é descrito em Aprimoramento de vista IA.

Assistente de codificação

CodingAgent para geração genérica de código:

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

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

Consulta em linguagem natural

NaturalLanguageQueryAgent converte linguagem natural em condições de filtro do DataGrid, profundamente integrado com o DataGridService:

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

$filters = $queryAgent->parseQuery(
    text: '上个月入职的部门经理',
    entityClass: Employee::class,
    currentFilters: []
);
// Retorna: { filters: [...], thought_process: "..." }

Exemplos suportados de linguagem natural:

  • "Mostrar os departamentos com estado ativado"
  • "Departamentos cujo nome contém 'Tecnologia'"
  • "Empregados adicionados na última semana"

Como funciona

  1. Obtém o Schema de campos da entidade a partir do DataGridService
  2. Constrói o prompt de sistema (com nomes de campos, tipos, operadores)
  3. Invoca o modelo de IA para gerar as condições de filtro em JSON
  4. Corrige automaticamente campos de relação (ex.: departmentdepartment.name)
  5. Suporta combinações lógicas AND/OR
  6. Trata as etiquetas </think> dos modelos DeepSeek/raciocínio

Agent de política de palavras-passe

PasswordPolicyAgent converte políticas de segurança em linguagem natural em expressões DSL:

php
$policy = $passwordPolicyAgent->parsePolicyInstruction(
    '密码长度至少8位,必须包含数字和大写字母'
);
// Retorna: { and: [{field: "length", operator: ">=", value: 8}, {field: "has_number", ...}, {field: "has_uppercase", ...}] }

Reconhecimento visual

VisionAgent para análise de imagens (interface reservada, aguardando suporte multimodal):

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

Extensão

Adicionar um agente personalizado:

  1. Criar a classe do agente, injetando o AiManager
  2. Registá-lo no AgentManager

Código aberto sob MIT | Copyright © 2026 Doggy