تكوين LLM
يوفر Doggy نظامًا رسوميًا لإدارة تكوين LLM، يدعم التكوين المرن متعدد المزوّدين والنماذج والأدوار مع التبديل الديناميكي وقت التشغيل، لتوفير دعم نماذج موحّد لوظائف الذكاء الاصطناعي.
نظرة عامة
يقع نظام تكوين LLM في src/Service/Platform/Llm/، ويستلهم تصميم منصة Symfony AI Bundle:
- دعم مزوّدين متعددين: OpenAI، Azure، Anthropic، Ollama، بوابات مخصصة متوافقة مع OpenAI
- إدارة رسومية: ليست تكوينًا عبر YAML، بل إدارة ديناميكية عبر واجهة الإدارة
- فصل الأدوار: فصل التكوين عن الاستخدام، مع ربط الأدوار بالنماذج
- تشفير المفاتيح: تخزين مشفّر لمفاتيح API دون أن تصل للواجهة الأمامية
نموذج البيانات
LlmProvider (تكوين المزوّد)
| الحقل | النوع | الوصف |
|---|---|---|
| name | string | الاسم المعروض، مثل "GPT-4o" |
| provider | string | معرف المزوّد: openai / anthropic / azure / ollama / custom |
| model | string | اسم النموذج: gpt-4o / claude-3-5-sonnet / ... |
| apiKey | encrypted | مفتاح API (مخزّن بشكل مشفّر) |
| apiEndpoint | string | عنوان الواجهة (اختياري) |
| options | JSON | معاملات إضافية: temperature, max_tokens, top_p وغيرها |
| isEnabled | boolean | ما إذا كان مفعّلًا |
| sortOrder | int | الترتيب |
LlmRole (الدور/الاستخدام)
| الحقل | النوع | الوصف |
|---|---|---|
| code | string | رمز الدور: view_editor / entity_generation / workflow_analysis / query_assistant / chat / coding |
| label | string | الاسم المعروض |
| providerId | UUID | تكوين النموذج المرتبط |
| systemPrompt | text | رسالة النظام الموجهة لهذا الدور |
| options | JSON | تجاوز معاملات على مستوى الدور |
| isEnabled | boolean | ما إذا كان مفعّلًا |
تخطيط استخدامات الأدوار
| رمز الدور | الاستخدام | النموذج الموصى به |
|---|---|---|
| view_editor | مساعد AI في مصمم العروض | gpt-4o / claude-3.5-sonnet |
| entity_generation | توليد الكيانات بمساعدة AI | gpt-4o-mini |
| workflow_analysis | تحليل سير العمل وتقديم الاقتراحات | gpt-4o |
| query_assistant | اللغة الطبيعية ← استعلام البيانات | gpt-4o-mini |
| chat | مساعد محادثة AI عام | gpt-4o-mini |
| coding | توليد الكود (Twig/JS/PHP) | gpt-4o / claude-3.5-sonnet |
مسار الاستدعاء
LlmRouter::chatByRole(roleCode, messages, opts)
├─ 查询 LlmRole(code) → 获取绑定的 LlmProvider
├─ LlmGatewayFactory::create(provider) → 实例化适配器
├─ 解密 API Key(LlmEncryptor)
└─ 调用 LLM API(支持工具调用、流式响应)LlmGatewayFactory
يتم توجيه المحوّلات تلقائيًا وفقًا لحقل LlmProvider.provider:
| provider | المحوّل | الوصف |
|---|---|---|
| openai | OpenAiGateway | واجهة متوافقة مع OpenAI |
| anthropic | AnthropicGateway | واجهة Anthropic Claude API |
| azure | AzureGateway | Azure OpenAI |
| ollama | OllamaGateway | Ollama المحلي |
| custom | CustomGateway | بوابة مخصصة متوافقة مع OpenAI |
التحويل عند الفشل
يدعم LlmRouter دالة chatByRoleWithFallback، التي تقوم تلقائيًا بالتخفيض إلى نموذج احتياطي عند فشل المزوّد الرئيسي.
واجهة الإدارة
نقطة الدخول: إعدادات النظام ← تكوين LLM (/admin/platform/llm-config)
صفحة القائمة
- عرض بطاقات للمزوّدين، حيث يمكن لكل مزوّد تعدد تنويعات النماذج
- عرض الأدوار/الاستخدامات المرتبطة بالنموذج مباشرة
- مفاتيح تبديل للتفعيل/التعطيل
- ترتيب بالسحب والإفلات
نموذج التحرير
- الاسم والمزوّد والنموذج ومفتاح API (مخزّن مشفّرًا) وعنوان الواجهة
- إدارة الأدوار (LlmRoleType): رمز الدور، رسالة النظام الموجهة، ربط النموذج
تشفير المفاتيح
يستخدم LlmEncryptor مفتاح تشفير المنصة لتشفير وفك تشفير مفاتيح API، حيث يبقى المفتاح على الخادم فقط ولا تصل المفاتيح الخام إلى الواجهة الأمامية:
php
// 存储时
$encrypted = $llmEncryptor->encrypt($apiKey);
// 调用时
$apiKey = $llmEncryptor->decrypt($provider->getApiKey());التكامل مع مساعد الذكاء الاصطناعي
يعيد مساعد الذكاء الاصطناعي (انظر AI 助手) استخدام بنية LlmRole/LlmProvider:
前端 → POST /api/admin/ai/chat
→ LlmRouter.chatByRole(roleCode, messages)
→ 查询 LlmRole → LlmGatewayFactory → LLM API- تُخزَّن مفاتيح API على الخادم فقط (تشفير في قاعدة البيانات)
- يتم تبديل النماذج في واجهة الإدارة دون تعديل الكود
- يقوم LlmGatewayFactory بتوجيه المزوّدين المتعددين تلقائيًا
الملفات ذات الصلة
| الملف | المسؤولية |
|---|---|
src/Service/Platform/Llm/LlmGatewayInterface.php | واجهة البوابة |
src/Service/Platform/Llm/LlmGatewayFactory.php | مصنع المحوّلات |
src/Service/Platform/Llm/LlmRouter.php | توجيه الأدوار + التحويل عند الفشل |
src/Service/Platform/Llm/ModelRegistry.php | سجل النماذج |
src/Service/Platform/LlmEncryptor.php | تشفير وفك تشفير مفاتيح API |
src/Entity/Platform/LlmProvider.php | كيان تكوين المزوّد |
src/Entity/Platform/LlmRole.php | كيان تكوين الدور |
src/Controller/Admin/Platform/LlmConfigController.php | وحدة تحكم واجهة الإدارة |