---
title: "Feature Provider Overrides"
manual: "AI Foundation"
version: "1.2"
permalink: "https://docs.typo3.org/permalink/nitsan/ns-t3af:feature-provider-overrides@1.2"
source: "DeveloperGuide/FeatureProviderOverrides/Index.rst"
modified: "2026-09-15T06:30:06+00:00"
---

# Feature Provider Overrides

Feature provider overrides allow an extension to offer a dedicated default AI provider for a specific feature while still using AI Foundation’s shared provider registry.

Use this when one feature should use a different model or provider than the global default. Examples include SEO generation, page generation, content generation, and LLM-based translation.

## How it works

AI Foundation owns the provider rows. The child extension exposes feature-specific provider fields in **AI Foundation > AI Features**. At runtime, the feature resolves the provider in this order:

1.  Provider selected in the runtime modal, if the request includes one.
1.  Feature default saved in AI Features.
1.  Global default provider fallback.

## Supported implementation hook

Child extensions register provider dropdowns by implementing:

`NITSAN\NsT3AF\Contract\FeatureProviderFormOptionsInterface`

Register the service with:

`t3af.feature_provider_form_options`

AI Foundation uses the registered service to render provider options in the feature settings drawer.

## Known feature fields

AI Assistant uses feature-specific default provider fields such as:

-   `defaultProviderForSeo`
-   `defaultProviderForPages`
-   `defaultProviderForContent`
-   `defaultProviderForTranslation`
-   `defaultModel`
-   `defaultEmbeddingsModel`

Each dropdown lists enabled providers from **AI Providers**. The **Default (inherit global provider)** option keeps the feature on the global provider path.

## Translation note

`defaultModelForTranslation` still selects the translation backend, such as DeepL, Google, or an AI-based path. `defaultProviderForTranslation` applies only to LLM completion paths that use the AI Foundation completion gateway.

## Configuration workflow

1.  Register a feature card with [Custom AI Features](https://docs.typo3.org/permalink/nitsan/ns-t3af:custom-ai-features@1.2).
1.  Add the provider field to that feature’s settings schema.
1.  Implement `FeatureProviderFormOptionsInterface`.
1.  Tag the service with `t3af.feature_provider_form_options`.
1.  Flush caches.
1.  Open **AI Foundation > AI Features** and verify the provider dropdown.
1.  Save a default provider and test the runtime feature.

## Best practices

-   Keep provider field names stable.
-   Always include an inherit/default option.
-   Use the same label, **AI Provider**, when the same choice appears in runtime modals.
-   Resolve providers through the feature runtime path instead of reading provider rows directly.
-   Do not hardcode provider IDs in feature logic.

## Verification

1.  Open **AI Foundation > AI Providers** and confirm at least one provider is enabled.
1.  Open **AI Foundation > AI Features**.
1.  Open the feature settings drawer.
1.  Confirm the provider dropdown contains enabled providers.
1.  Save a feature default.
1.  Open the feature runtime modal and confirm the saved provider is preselected.

## Troubleshooting

**Dropdown is missing**

-   Confirm the form-options service implements the correct interface.
-   Confirm the service is tagged with `t3af.feature_provider_form_options`.
-   Confirm the related feature card and scope provider are active.

**Runtime uses the wrong provider**

-   Confirm the request field name matches the saved setting.
-   Confirm the feature handles `default` or empty values as fallback.
-   Confirm the saved provider row still exists and is enabled.

## Related documentation

-   [Custom AI Features](https://docs.typo3.org/permalink/nitsan/ns-t3af:custom-ai-features@1.2)
-   [Extension Integration](https://docs.typo3.org/permalink/nitsan/ns-t3af:extension-integration@1.2)
-   [AI Providers](https://docs.typo3.org/permalink/nitsan/ns-t3af:ai-providers@1.2)
-   [AI Features](https://docs.typo3.org/permalink/nitsan/ns-t3af:ai-features@1.2)
