تكامل الذكاء الاصطناعي
يدمج Doggy قدرات الذكاء الاصطناعي بشكل عميق عبر Symfony AI Bundle، مع دعم مزوّدي نماذج متعددين وواجهة استدعاء موحّدة.
نظرة عامة
يقع جوهر نظام AI في src/Service/AI/:
src/Service/AI/
├── AiManager.php # AI 管理器(统一调用接口)
├── AgentManager.php # Agent 管理器(Facade)
├── Agent/
│ ├── CodingAgent.php # 编码助手
│ ├── NaturalLanguageQueryAgent.php # 自然语言查询
│ ├── VisionAgent.php # 视觉识别
│ └── PasswordPolicyAgent.php # 密码策略 Agent
├── Runtime/ # AI 运行时(Agent 引擎)
│ ├── AiAssistant.php # 泛化 Agent 工厂(ReAct)
│ ├── AiContextRegistry.php # 上下文注册表
│ ├── LlmRouterPlatform.php # PlatformInterface 桥接
│ └── ChatResultConverter.php # 响应格式转换
├── Context/ # 页面上下文提供者
│ └── ViewEditorAiContext.php # 视图编辑器上下文
├── Orchestrator/ # AI 编排(意图识别 + 子 Agent)
│ ├── IntentAgent.php # 意图识别主 Agent
│ └── SubAgent/ # 6 个场景子 Agent
├── Tool/ # 工具调用
│ ├── ViewEditorToolProvider.php # 视图编辑器工具
│ ├── ViewFileToolProvider.php # 视图文件工具
│ └── ChromeDevToolsToolProvider.php # CDP 浏览器工具
└── Provider/
└── AbstractOpenAiProvider.php # OpenAI API 抽象مزوّدو النماذج
يدعم AiManager عدة مزوّدين، ويتم التبديل بينهم عبر متغير البيئة AI_PROVIDER:
| المزوّد | خدمة المنصة | التكوين |
|---|---|---|
| Alibaba Bailian (阿里百炼) | ai.platform.generic.aliyun | ALIYUN_MODEL_ID |
| LM Studio | ai.platform.generic.lmstudio | LM_STUDIO_MODEL_ID |
yaml
# config/packages/ai.yaml
ai:
providers:
alibaba:
type: alibaba_bailian
api_key: '%env(ALIBABA_AI_KEY)%'التكوين
bash
# .env
AI_PROVIDER=aliyun
ALIYUN_MODEL_ID=qwq-32b
ALIYUN_FAST_MODEL_ID=qwen-plus
LM_STUDIO_MODEL_ID=deepseek/deepseek-r1-0528-qwen3-8bاستدعاء الذكاء الاصطناعي
php
use App\Service\AI\AiManager;
class SomeService
{
public function __construct(private AiManager $aiManager) {}
public function ask(): string
{
return $this->aiManager->chat([
['role' => 'system', 'content' => 'You are a helpful assistant.'],
['role' => 'user', 'content' => 'Hello!'],
], [
'temperature' => 0.7,
'model' => 'qwen-plus', // 可选覆盖默认模型
]);
}
}يقوم AiManager تلقائيًا بما يلي:
- اختيار المزوّد (وفقًا لـ
AI_PROVIDER) - الاستجابات التدفقية (وضع stream، مع دعم نماذج الاستدلال مثل qwq-32b)
- دمج تكوينات النماذج
نظام تكوين LLM
بالإضافة إلى الاستدعاء المباشر عبر AiManager، يوفر الإطار أيضًا نظام تكوين LLM رسوميًا يدعم:
- مزوّدون متعددون: OpenAI وAzure وAnthropic وOllama وبوابات مخصصة
- توجيه الأدوار: ربط النماذج بـ LlmRole والتبديل الديناميكي حسب الاستخدام
- تشفير المفاتيح: تخزين مشفّر لمفاتيح API
- التحويل عند الفشل: التخفيض التلقائي عند فشل المزوّد الرئيسي
وقت تشغيل الذكاء الاصطناعي
وقت تشغيل Agent المبني على symfony/ai-agent (انظر AI 助手):
- حلقة ReAct: الاستدلال + استدعاء الأدوات حتى إرجاع النتيجة
- تسجيل السياق: تسجل الصفحات سياقها عبر
window.__AI_CONTEXT__ - استدعاء الأدوات: إعلان طرق الأدوات عبر
#[AsTool]
التبديل السريع للنماذج
يدعم NaturalLanguageQueryAgent تكوين نموذج سريع لاستعلامات اللغة الطبيعية (لتجنب بطء الاستجابة الناتج عن نماذج الاستدلال):
php
if ($this->provider === 'aliyun' && $this->aliyunFastModelId) {
$options['model'] = $this->aliyunFastModelId;
}