Agent-System
Das Doggy Agent-System stellt mehrere intelligente Agents bereit, die über die AgentManager-Facade einheitlich zugänglich sind und Laufzeit-Agents basierend auf symfony/ai-agent unterstützt.
Übersicht
Das Agent-System befindet sich unter src/Service/AI/Agent/ und wird über AgentManager zentral gesteuert:
// src/Service/AI/AgentManager.php
class AgentManager
{
public function getQueryAgent(): NaturalLanguageQueryAgent
public function getVisionAgent(): VisionAgent
public function getCodingAgent(): CodingAgent
public function getPasswordPolicyAgent(): PasswordPolicyAgent
}Darüber hinaus finden Sie das Laufzeit-Agent-System basierend auf symfony/ai-agent (ReAct-Schleife + Tool-Aufrufe) unter AI-Assistent und die Intent-Erkennung mit Orchestrierung von Szenario-Sub-Agents unter AI-View-Verbesserung.
Coding-Assistent
CodingAgent für allgemeine Code-Generierung:
use App\Service\AI\Agent\CodingAgent;
$code = $codingAgent->generateCode('Create a Symfony controller for employee CRUD');Natürliche-Sprache-Abfrage
NaturalLanguageQueryAgent wandelt natürliche Sprache in DataGrid-Filterbedingungen um und ist eng mit DataGridService integriert:
use App\Service\AI\Agent\NaturalLanguageQueryAgent;
$filters = $queryAgent->parseQuery(
text: '上个月入职的部门经理',
entityClass: Employee::class,
currentFilters: []
);
// 返回: { filters: [...], thought_process: "..." }Unterstützte Beispiele für natürliche Sprache:
- "Abteilungen mit Status aktiv anzeigen"
- "Abteilungen, deren Name 'Technik' enthält"
- "Mitarbeiter, die in der letzten Woche hinzugekommen sind"
Funktionsweise
- Schema der Entitätsfelder von
DataGridServiceabrufen - System-Prompt erstellen (inkl. Feldnamen, Typen, Operatoren)
- AI-Modell aufrufen, um JSON-Filterbedingungen zu generieren
- Zugehörige Felder automatisch korrigieren (z. B.
department→department.name) - AND/OR-Logik-Kombinationen unterstützen
</think>-Tags von DeepSeek-/Reasoning-Modellen verarbeiten
Passwortrichtlinien-Agent
PasswordPolicyAgent wandelt Sicherheitsrichtlinien in natürlicher Sprache in DSL-Ausdrücke um:
$policy = $passwordPolicyAgent->parsePolicyInstruction(
'密码长度至少8位,必须包含数字和大写字母'
);
// 返回: { and: [{field: "length", operator: ">=", value: 8}, {field: "has_number", ...}, {field: "has_uppercase", ...}] }Visuelle Erkennung
VisionAgent für Bildanalyse (vorbereitete Schnittstelle, multimodale Unterstützung in Arbeit):
$result = $visionAgent->analyzeImage($imageUrl, '识别这张发票的信息');Erweiterung
Neue benutzerdefinierte Agents hinzufügen:
- Agent-Klasse erstellen und
AiManagerinjizieren - In
AgentManagerregistrieren