Skip to content

تكامل الذكاء الاصطناعي ​

يدمج 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.aliyunALIYUN_MODEL_ID
LM Studioai.platform.generic.lmstudioLM_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;
}

مصدر مفتوح برخصة MIT | حقوق النشر © 2026 Doggy