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