Skip to content

LLM-Konfiguration

Doggy bietet ein grafisches LLM-Konfigurationsverwaltungssystem, das flexible Konfiguration und dynamisches Umschalten zur Laufzeit für mehrere Anbieter, mehrere Modelle und mehrere Rollen unterstützt und den KI-Funktionen eine einheitliche Modellbasis bietet.

Übersicht

Das LLM-Konfigurationssystem befindet sich unter src/Service/Platform/Llm/ und orientiert sich am Plattform-Design von Symfony AI Bundle:

  • Mehrere Anbieter: OpenAI, Azure, Anthropic, Ollama, benutzerdefinierte OpenAI-kompatible Gateways
  • Grafische Verwaltung: keine YAML-Konfiguration, dynamische Verwaltung über das Backend
  • Rollen-Trennung: Konfiguration und Verwendungszweck entkoppelt, Rollen binden Modelle
  • Schlüsselverschlüsselung: API-Keys werden verschlüsselt gespeichert, das Frontend kommt nicht damit in Kontakt

Datenmodell

LlmProvider (Anbieterkonfiguration)

FeldTypBeschreibung
namestringAnzeigename, z. B. "GPT-4o"
providerstringAnbieterkennung: openai / anthropic / azure / ollama / custom
modelstringModellname: gpt-4o / claude-3-5-sonnet / ...
apiKeyencryptedAPI-Key (verschlüsselt gespeichert)
apiEndpointstringSchnittstellenadresse (optional)
optionsJSONZusätzliche Parameter: temperature, max_tokens, top_p usw.
isEnabledbooleanAktiviert oder nicht
sortOrderintSortierung

LlmRole (Rolle/Verwendungszweck)

FeldTypBeschreibung
codestringRollen-Code: view_editor / entity_generation / workflow_analysis / query_assistant / chat / coding
labelstringAnzeigename
providerIdUUIDGebundene Modellkonfiguration
systemPrompttextSystem-Prompt der Rolle
optionsJSONÜberschreibungen der Parameter auf Rollenebene
isEnabledbooleanAktiviert oder nicht

Rollen-Planung

Rollen-CodeVerwendungszweckEmpfohlenes Modell
view_editorAI-Assistent des View-Designersgpt-4o / claude-3.5-sonnet
entity_generationKI-gestützte Entitätsgenerierunggpt-4o-mini
workflow_analysisWorkflow-Analyse und -Vorschlägegpt-4o
query_assistantNatürliche Sprache → Datenabfragegpt-4o-mini
chatAllgemeiner KI-Dialogassistentgpt-4o-mini
codingCodegenerierung (Twig/JS/PHP)gpt-4o / claude-3.5-sonnet

Aufrufkette

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

LlmGatewayFactory

Leitet Adapter automatisch basierend auf dem Feld LlmProvider.provider weiter:

providerAdapterBeschreibung
openaiOpenAiGatewayOpenAI-kompatible Schnittstelle
anthropicAnthropicGatewayAnthropic-Claude-API
azureAzureGatewayAzure OpenAI
ollamaOllamaGatewayLokales Ollama
customCustomGatewayBenutzerdefiniertes OpenAI-kompatibles Gateway

Failover

LlmRouter unterstützt chatByRoleWithFallback: Fällt der Hauptanbieter aus, wird automatisch auf ein Backup-Modell herabgestuft.

Verwaltungsoberfläche

Einstieg: Systemeinstellungen → LLM-Konfiguration (/admin/platform/llm-config)

Listenansicht

  • Kartenförmige Darstellung der Anbieter, ein Anbieter kann mehrere Modellvarianten haben
  • Zeigt direkt die Rollen/Verwendungszwecke an, die an das Modell gebunden sind
  • Schalter zum Aktivieren/Deaktivieren
  • Sortieren per Drag-and-Drop

Bearbeitungsformular

  • Name, Anbieter, Modell, API-Key (verschlüsselt gespeichert), Schnittstellenadresse
  • Rollenverwaltung (LlmRoleType): Rollen-Code, System-Prompt, Modellbindung

Schlüsselverschlüsselung

LlmEncryptor verwendet den Plattform-Verschlüsselungsschlüssel zum Ver- und Entschlüsseln von API-Keys. Der Schlüssel existiert nur serverseitig, das Frontend kommt nie mit dem rohen Key in Kontakt:

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

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

Integration mit dem AI-Assistenten

Der AI-Assistent (siehe AI-Assistent) nutzt das LlmRole/LlmProvider-System wieder:

前端 → POST /api/admin/ai/chat
  → LlmRouter.chatByRole(roleCode, messages)
    → 查询 LlmRole → LlmGatewayFactory → LLM API
  • API-Keys existieren nur serverseitig (verschlüsselt in der Datenbank gespeichert)
  • Der Modellwechsel erfolgt über die Verwaltungsoberfläche, ohne Codeänderungen
  • Mehrere Anbieter werden automatisch von LlmGatewayFactory weitergeleitet

Zugehörige Dateien

DateiVerantwortung
src/Service/Platform/Llm/LlmGatewayInterface.phpGateway-Schnittstelle
src/Service/Platform/Llm/LlmGatewayFactory.phpAdapter-Factory
src/Service/Platform/Llm/LlmRouter.phpRollen-Routing + Failover
src/Service/Platform/Llm/ModelRegistry.phpModell-Registry
src/Service/Platform/LlmEncryptor.phpVer-/Entschlüsselung von API-Keys
src/Entity/Platform/LlmProvider.phpAnbieterkonfigurations-Entität
src/Entity/Platform/LlmRole.phpRollenkonfigurations-Entität
src/Controller/Admin/Platform/LlmConfigController.phpController der Verwaltungsoberfläche

Open Source unter MIT | Copyright © 2026 Doggy