Agent 系統
Doggy Agent 系統提供多種智慧代理,透過 AgentManager Facade 統一存取,並支援基於 symfony/ai-agent 的執行階段 Agent。
概述
Agent 系統位於 src/Service/AI/Agent/,透過 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
}此外,基於 symfony/ai-agent 的執行階段 Agent 體系(ReAct 迴圈 + 工具呼叫)見 AI 助手,意圖辨識 + 情境子 Agent 編排見 AI 視圖增強。
程式碼助手
CodingAgent 通用程式碼產生:
php
use App\Service\AI\Agent\CodingAgent;
$code = $codingAgent->generateCode('Create a Symfony controller for employee CRUD');自然語言查詢
NaturalLanguageQueryAgent 將自然語言轉換為 DataGrid 篩選條件,與 DataGridService 深度整合:
php
use App\Service\AI\Agent\NaturalLanguageQueryAgent;
$filters = $queryAgent->parseQuery(
text: '上个月入职的部门经理',
entityClass: Employee::class,
currentFilters: []
);
// 返回: { filters: [...], thought_process: "..." }支援自然語言範例:
- "顯示狀態為啟用的部門"
- "名稱包含「技術」的部門"
- "最近一週新增的員工"
運作原理
- 從
DataGridService取得實體欄位 Schema - 建置系統提示詞(包含欄位名稱、類型、運算子)
- 呼叫 AI 模型產生 JSON 篩選條件
- 自動修正關聯欄位(如
department→department.name) - 支援 AND/OR 邏輯組合
- 處理 DeepSeek/推理模型的
</think>標籤
密碼策略 Agent
PasswordPolicyAgent 將自然語言安全策略轉換為 DSL 運算式:
php
$policy = $passwordPolicyAgent->parsePolicyInstruction(
'密码长度至少8位,必须包含数字和大写字母'
);
// 返回: { and: [{field: "length", operator: ">=", value: 8}, {field: "has_number", ...}, {field: "has_uppercase", ...}] }視覺辨識
VisionAgent 圖片分析(預留介面,待實作多模態支援):
php
$result = $visionAgent->analyzeImage($imageUrl, '识别这张发票的信息');擴充
新增自訂 Agent:
- 建立 Agent 類別,注入
AiManager - 在
AgentManager中註冊