---
title: "Introduction"
manual: "TYPO3 LLM Extension"
version: "0.35"
permalink: "https://docs.typo3.org/permalink/netresearch/nr-llm:introduction@0.35"
source: "Introduction/Index.rst"
modified: "2026-09-16T22:09:16+00:00"
---

# Introduction

## What does it do?

nr-llm is the **shared AI foundation for TYPO3**.
It lets administrators configure LLM providers
once in the backend — and every AI-powered
extension on the site uses them automatically.

**For extension developers**, it eliminates the
need to build provider integrations, manage API
keys, or implement caching and streaming. Add AI
capabilities to your extension with three lines
of dependency injection.

**For administrators**, it provides a backend module tree to manage all AI
connections, encrypted API keys, and provider configurations — plus a
dedicated **AI Tasks** module in the Web area where editors run prepared
tasks and decide pending approvals, gated by explicit permissions. Switch from OpenAI to Anthropic
without touching any extension code.

**For agencies**, it means consistent AI architecture across client projects, no
vendor lock-in, and a local-first option via
Ollama for data-sensitive environments.

The extension enables developers to:

-   **Access multiple AI providers** through a single, consistent API.
-   **Switch providers transparently** without code changes.
-   **Leverage specialized services** for common
    AI tasks (translation, vision, embeddings).
-   **Cache responses** to reduce API costs and improve performance.
-   **Stream responses** for real-time user experiences.
-   **Store API keys securely** as nr-vault
    identifiers (envelope encryption).

### Supported providers

| Provider | Models | Capabilities |
| --- | --- | --- |
| OpenAI | GPT-5.x series, o-series reasoning models | Chat, completions, embeddings, vision, streaming, tools. |
| Anthropic Claude | Claude Opus 4.5, Claude Sonnet 4.5, Claude Haiku 4.5 | Chat, completions, vision, streaming, tools. |
| Google Gemini | Gemini 3 Pro, Gemini 3 Flash, Gemini 2.5 series | Chat, completions, embeddings, vision, streaming, tools. |
| Ollama | Local models (Llama, Mistral, etc.) | Chat, embeddings, streaming (local). |
| OpenRouter | Multi-provider access | Chat, embeddings, vision, streaming, tools. |
| Mistral | Mistral models | Chat, embeddings, streaming. |
| Groq | Fast inference models | Chat, streaming (fast inference). |
| Azure OpenAI | Same as OpenAI | Same as OpenAI. |
| Custom | OpenAI-compatible endpoints | Varies by endpoint. |

## Key features

### AI-powered wizards

Built-in wizards reduce manual setup to a minimum:

-   **Setup wizard** guides first-time configuration
    in five steps (provider, connection test, model
    fetch, configuration, test prompt).
-   **Configuration wizard** generates a complete LLM
    configuration from a plain-language description
    of your use case.
-   **Task wizard** creates reusable one-shot prompt
    templates the same way.
-   **Model discovery** fetches available models
    directly from the provider API.

See [AI-powered wizards](https://docs.typo3.org/permalink/netresearch/nr-llm:administration-wizards@0.35) for details and
screenshots.

### Unified provider API

All providers implement a common interface, allowing you to:

-   Switch between providers with a single configuration change.
-   Test with different models without modifying application code.
-   Implement provider fallbacks for increased reliability.

**Example: Using the provider abstraction layer**

```php
// Use database configurations for consistent settings
$config = $configRepository->findByIdentifier('blog-summarizer');
$adapter = $adapterRegistry->createAdapterFromModel($config->getModel());
$response = $adapter->chatCompletion($messages, $config->toOptions());

// Or use inline provider selection
$response = $llmManager->chat($messages, ['provider' => 'openai']);
$response = $llmManager->chat($messages, ['provider' => 'claude']);
```

### Specialized feature services

High-level services for common AI tasks:

-   **`CompletionService`**

    Text generation with format control (JSON, Markdown) and creativity presets.

-   **`EmbeddingService`**

    Text-to-vector conversion with caching and similarity calculations.

-   **`VisionService`**

    Image analysis with specialized prompts for alt-text, titles, descriptions.

-   **`TranslationService`**

    Language translation with formality control,
    domain-specific terminology, and glossaries.

### Structured outputs

Schema-validated JSON from every provider:
`completeStructured()` takes a JSON schema from a named strict
subset, enforces it provider-natively where the provider can (OpenAI
`json_schema`, Gemini `responseSchema`, Ollama `format`, a forced
tool on Claude), validates the response strictly and repairs a mismatch
with one controlled round-trip. See [ADR-126: A named JSON-Schema subset, enforced strict](https://docs.typo3.org/permalink/netresearch/nr-llm:adr-126@0.35) and [ADR-128: Provider-native structured output](https://docs.typo3.org/permalink/netresearch/nr-llm:adr-128@0.35).

### Streaming support

Real-time response streaming for better user experience:

**Example: Streaming chat responses**

```php
foreach ($llmManager->streamChat($messages) as $chunk) {
    echo $chunk;
    flush();
}
```

### Tool/function calling

Execute custom functions based on AI decisions:

**Example: Tool/function calling**

```php
$response = $llmManager->chatWithTools($messages, $tools);
if ($response->hasToolCalls()) {
    // Process tool calls
}
```

### Intelligent caching

-   Automatic response caching using TYPO3's caching framework.
-   Deterministic embedding caching (24-hour default TTL).
-   Configurable cache lifetimes per operation type.

## Use cases

### Content generation

-   Generate product descriptions.
-   Create meta descriptions and SEO content.
-   Draft blog posts and articles.
-   Summarize long-form content.

### Translation

-   Translate website content.
-   Maintain consistent terminology with glossaries.
-   Preserve formatting in technical documents.

### Image processing

-   Generate accessibility-compliant alt-text.
-   Create SEO-optimized image titles.
-   Analyze and categorize image content.

### Search and discovery

-   Semantic search using embeddings.
-   Content similarity detection.
-   Recommendation systems.

### Chatbots and assistants

-   Customer support chatbots.
-   FAQ answering systems.
-   Guided navigation assistants.

## Requirements

-   **PHP**: 8.2 or higher.
-   **TYPO3**: v13.4 LTS or v14.3 LTS.
-   **HTTP client**: PSR-18 compatible (e.g., [`guzzlehttp/guzzle`](https://packagist.org/packages/guzzlehttp/guzzle)).

### Provider requirements

To use specific providers, you need:

-   **OpenAI**: API key from [https://platform.openai.com](https://platform.openai.com).
-   **Anthropic Claude**: API key from [https://console.anthropic.com](https://console.anthropic.com).
-   **Google Gemini**: API key from [https://aistudio.google.com](https://aistudio.google.com).
-   **Ollama**: Local installation from [https://ollama.ai](https://ollama.ai) (no API key required).
-   **OpenRouter**: API key from [https://openrouter.ai](https://openrouter.ai).
-   **Mistral**: API key from [https://console.mistral.ai](https://console.mistral.ai).
-   **Groq**: API key from [https://console.groq.com](https://console.groq.com).

## Credits

This extension is developed and maintained by:

-   ****Netresearch DTT GmbH****

    [https://www.netresearch.de](https://www.netresearch.de)

Built with the assistance of modern AI development tools and following TYPO3
coding standards and best practices.
