Skip to content

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: "..." }

支援自然語言範例:

  • "顯示狀態為啟用的部門"
  • "名稱包含「技術」的部門"
  • "最近一週新增的員工"

運作原理

  1. DataGridService 取得實體欄位 Schema
  2. 建置系統提示詞(包含欄位名稱、類型、運算子)
  3. 呼叫 AI 模型產生 JSON 篩選條件
  4. 自動修正關聯欄位(如 departmentdepartment.name
  5. 支援 AND/OR 邏輯組合
  6. 處理 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:

  1. 建立 Agent 類別,注入 AiManager
  2. AgentManager 中註冊

基於 MIT 協議開源 | Copyright © 2026 Doggy