Skip to content

Configuration LLM

Doggy fournit un système graphique de gestion de la configuration LLM, avec prise en charge d'une configuration flexible multi-fournisseurs, multi-modèles et multi-rôles, ainsi que d'une bascule dynamique à l'exécution, offrant un support de modèles unifié pour les fonctionnalités IA.

Aperçu

Le système de configuration LLM se trouve dans src/Service/Platform/Llm/, s'inspirant des principes de conception de Platform du Symfony AI Bundle :

  • Support multi-fournisseurs : OpenAI, Azure, Anthropic, Ollama, passerelle compatible OpenAI personnalisée
  • Gestion graphique : pas de configuration YAML, gestion dynamique via l'interface d'administration
  • Séparation des rôles : configuration et usage découplés, les rôles sont liés aux modèles
  • Chiffrement des clés : stockage chiffré des clés API, jamais exposées au frontend

Modèle de données

LlmProvider (configuration du fournisseur)

ChampTypeDescription
namestringNom d'affichage, ex. « GPT-4o »
providerstringIdentifiant du fournisseur : openai / anthropic / azure / ollama / custom
modelstringNom du modèle : gpt-4o / claude-3-5-sonnet / ...
apiKeyencryptedClé API (stockage chiffré)
apiEndpointstringURL de l'interface (facultatif)
optionsJSONParamètres supplémentaires : temperature, max_tokens, top_p, etc.
isEnabledbooleanActif ou non
sortOrderintOrdre de tri

LlmRole (rôle/usage)

ChampTypeDescription
codestringCode de rôle : view_editor / entity_generation / workflow_analysis / query_assistant / chat / coding
labelstringNom d'affichage
providerIdUUIDConfiguration de modèle liée
systemPrompttextPrompt système du rôle
optionsJSONSurcharge des paramètres au niveau du rôle
isEnabledbooleanActif ou non

Planification des usages par rôle

Code de rôleUsageModèle recommandé
view_editorAssistant IA du concepteur de vuesgpt-4o / claude-3.5-sonnet
entity_generationGénération d'entités assistée par IAgpt-4o-mini
workflow_analysisAnalyse et suggestions de workflowsgpt-4o
query_assistantLangage naturel → requête de donnéesgpt-4o-mini
chatAssistant de conversation IA génériquegpt-4o-mini
codingGénération de code (Twig/JS/PHP)gpt-4o / claude-3.5-sonnet

Chaîne d'appel

LlmRouter::chatByRole(roleCode, messages, opts)
  ├─ 查询 LlmRole(code) → 获取绑定的 LlmProvider
  ├─ LlmGatewayFactory::create(provider) → 实例化适配器
  ├─ 解密 API Key(LlmEncryptor)
  └─ 调用 LLM API(支持工具调用、流式响应)

LlmGatewayFactory

Achemine automatiquement l'adaptateur selon le champ LlmProvider.provider :

providerAdaptateurDescription
openaiOpenAiGatewayInterface compatible OpenAI
anthropicAnthropicGatewayAPI Anthropic Claude
azureAzureGatewayAzure OpenAI
ollamaOllamaGatewayOllama local
customCustomGatewayPasserelle compatible OpenAI personnalisée

Bascule en cas de panne

LlmRouter prend en charge chatByRoleWithFallback : en cas d'échec du fournisseur principal, le système bascule automatiquement vers un modèle de secours.

Interface d'administration

Point d'entrée : Paramètres système → Configuration LLM (/admin/platform/llm-config)

Page de liste

  • Affichage sous forme de cartes par fournisseur, un fournisseur pouvant correspondre à plusieurs variantes de modèles
  • Affichage direct des rôles/usages liés au modèle
  • Interrupteur pour activer/désactiver
  • Tri par glisser-déposer

Formulaire d'édition

  • Nom, fournisseur, modèle, clé API (stockage chiffré), URL de l'interface
  • Gestion des rôles (LlmRoleType) : code de rôle, prompt système, liaison de modèle

Chiffrement des clés

LlmEncryptor chiffre et déchiffre les clés API avec la clé de chiffrement de la plateforme. Les clés ne sont stockées que côté serveur, le frontend n'a jamais accès aux clés brutes :

php
// 存储时
$encrypted = $llmEncryptor->encrypt($apiKey);

// 调用时
$apiKey = $llmEncryptor->decrypt($provider->getApiKey());

Intégration à l'assistant IA

L'assistant IA (voir Assistant IA) réutilise le système LlmRole/LlmProvider :

前端 → POST /api/admin/ai/chat
  → LlmRouter.chatByRole(roleCode, messages)
    → 查询 LlmRole → LlmGatewayFactory → LLM API
  • Les clés API sont stockées uniquement côté serveur (chiffrement en base de données)
  • La bascule de modèle s'effectue dans l'interface d'administration, sans modification de code
  • Le routage multi-fournisseurs est géré automatiquement par LlmGatewayFactory

Fichiers associés

FichierRôle
src/Service/Platform/Llm/LlmGatewayInterface.phpInterface de passerelle
src/Service/Platform/Llm/LlmGatewayFactory.phpFabrique d'adaptateurs
src/Service/Platform/Llm/LlmRouter.phpRoutage par rôle + bascule en cas de panne
src/Service/Platform/Llm/ModelRegistry.phpRegistre des modèles
src/Service/Platform/LlmEncryptor.phpChiffrement/déchiffrement des clés API
src/Entity/Platform/LlmProvider.phpEntité de configuration du fournisseur
src/Entity/Platform/LlmRole.phpEntité de configuration du rôle
src/Controller/Admin/Platform/LlmConfigController.phpContrôleur de l'interface d'administration

Open source sous licence MIT | Copyright © 2026 Doggy