In großen TYPO3-Installationen mit mehreren Extensions, die Sprachmodelle nutzen, entsteht schnell ein unübersichtliches Geflecht: Jede Extension verwaltet ihre eigenen API-Schlüssel, nutzt unterschiedliche HTTP-Clients und implementiert eigene Fehlerbehandlungslogik. Das „N × API-Schlüssel"-Problem kennen Administrator:innen, die für ein Multisite-System fünf verschiedene Extensions konfigurieren – und bei jedem Provider-Wechsel alle Einstellungen anfassen müssen.
nr-llm löst dieses Problem mit einem Ansatz, der dem TYPO3-Caching-Framework ähnelt: Provider und Modelle werden einmal zentral konfiguriert ; alle Extensions, die von netresearch/nr-llm abhängen, greifen über eine einheitliche Service-API darauf zu. Der Fork hebt diese Extension auf TYPO3 14.3 LTS und führt ein Architektur-Refactoring durch, das Interfaces, finale Services und vereinheitlichtes Dependency Injection konsequent umsetzt. Die Lieferkette ist mit SLSA L3, Cosign und SBOM abgesichert.
Inhaltsverzeichnis
Überblick
Was wurde gemacht
Funktionen im Detail
Installation
Überblick
Die Idee hinter nr-llm ist konzeptuell schlank: Provider-Konfigurationen und API-Schlüssel gehören nicht in einzelne Extensions, sondern in eine zentrale Schicht – ähnlich dem Caching-Framework, das Cache-Backends einmal definiert und sie für alle TYPO3-Komponenten verfügbar macht. Extensions, die Sprachmodelle nutzen, deklarieren lediglich, welche Capability sie benötigen (Chat, Embedding, Translation), und erhalten den passenden Service per Dependency Injection.
Für Multisite-Installationen bedeutet das: Ein API-Schlüssel für OpenAI, konfiguriert an einer Stelle, steht allen Extensions auf allen Sites zur Verfügung. Provider-Wechsel oder Modell-Updates werden zentral vollzogen. Fällt ein Provider aus, greift die Fallback-Chain auf den nächsten konfigurierten Provider. Per-User-Budgets begrenzen den Token-Verbrauch einzelner Backend-Nutzer:innen.
Diese Extension setzt typo3/cms-core ^14.3 voraus – TYPO3 14.3 LTS ist die einzige unterstützte Version. PHP ^8.2 ist erforderlich. Ältere TYPO3-Versionen werden durch diesen Fork nicht unterstützt.

Zentrale LLM-Verwaltung: Provider, Modelle, Konfigurationen und Aufgaben liegen in einem Backend-Dashboard statt verteilt in einzelnen Extensions oder Umgebungsdateien.
Was wurde gemacht
Ausgangspunkt ist netresearch/t3x-nr-llm von Netresearch DTT GmbH , das die grundlegende Provider-Abstraktion und Service-API mitbringt. Der Fork setzt die Extension auf TYPO3 14.3 LTS (Composer-Constraints angepasst, PHPStan auf Maximum hochgezogen) und führt mehrere Architektur-Verbesserungen ein.
Auf Datenebene: XLIFF-2.0 mit ICU-Plurals wurde ergänzt, die Document-Payloads wurden pro Provider normalisiert – inklusive OpenAI-PDF-Upload, der im Original fehlte. Das Backend-UI wurde für den v14-Styleguide angepasst (Wizard, Icons, Modul-Routing). Das Architektur-Refactoring nach internem Audit umfasst extrahierte Interfaces für alle öffentlichen Services, final readonly-Services für klarere Abhängigkeiten, vereinheitlichtes Dependency Injection via #[AsTranslator] und einen isolierten BudgetService ohne Seiteneffekte auf andere Services.
Funktionen im Detail
| Bereich | Details |
|---|---|
| Provider | OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Mistral, Groq, Azure OpenAI, Custom — alle über dieselbe API |
| Services | Chat/Completion, Streaming (SSE), Vision, Embeddings, Tool/Function Calling, Translation |
| Dokument-Input | Provider-neutrales Format für PDFs; OpenAI-PDF-Upload integriert |
| Sicherheit | Verschlüsselte API-Keys via sodium (optional nr-vault); Fallback-Chain bei Fehlern/Rate-Limits |
| Berechtigungen | Per-Capability-BE-Permissions; per-User Token- und Request-Budgets |
| Lieferkette | SLSA L3, Cosign-Signaturen und SBOM für verifizierbare Releases |
| DI/Architektur | Interfaces extrahiert, Services final readonly, #[AsTranslator]-Attribut, BudgetService isoliert |
Die Provider-Abstraktion folgt dem Muster von TYPO3s Caching-Framework: Wer einen neuen Provider hinzufügen oder einen bestehenden tauschen will, ändert die zentrale Konfiguration – Extensions, die nr-llm als Abhängigkeit deklarieren, bemerken den Wechsel nicht. Die Lieferkette mit SLSA L3 und Cosign-Signaturen gibt Produktivumgebungen eine verifizierbare Basis.
Installation
composer config repositories.t3x-nr-llm vcs https://github.com/dirnbauer/t3x-nr-llm.git
composer require netresearch/nr-llm:^14.3Häufige Fragen
Fazit
nr-llm bringt Ordnung in das wachsende Feld KI-fähiger TYPO3-Extensions: Einmal konfiguriert, steht die gesamte Provider-Infrastruktur allen abhängigen Extensions bereit – ohne doppelte Schlüsselverwaltung, ohne verteilte Fehlerbehandlung. Der Fork festigt diese Basis für TYPO3 14.3 LTS mit einem sauberen Architektur-Refactoring und einer verifizierbaren Lieferkette.
nr-llm ist ein Fork von Netresearchs t3x-nr-llm. Dank an Netresearch DTT GmbH für die Vorarbeit. Die Extension steht unter der GPL-2.0-or-later-Lizenz.