External tools: AI module
In OpenOlat you are supported by AI at different points. For these points to work, you connect the AI providers you use in the AI module. The AI module supports multiple AI providers; you define per AI feature which provider and which model is used .
The AI module is part of the external tools, see External Tools: Overview >. It is located in the system administration and is configured by system administrators. Only the role system administrator opens the system administration, administrators do not reach it without this role either. How roles are granted is described in Assign roles >.
Support by frentix
Customers of frentix please contact contact@frentix.com for connecting an AI provider. frentix supports the choice of provider and model, the API key and the operation of a self-hosted model. For systems with the fx-Release, frentix makes these adjustments.
Not a frentix hosting-client? Please ask your local system operator!
Configuration
The AI module settings are located in the system administration under:
Administration > External tools > AI module
The page has the title "Artificial intelligence" and is organised into four areas (tabs):
- "AI providers": connect the AI services used and store an API key.
- "AI features": define per feature whether AI is used and with which provider and model.
- "AI processing pools": control how many AI calls are processed simultaneously.
- "Usage log": review all AI calls on the instance with tokens and status.

AI providers
In OpenOlat, the term "AI provider" refers to the service provider whose AI models are used for the various AI features on the platform.
Enable and configure the AI providers you want to use with the button "Add AI provider" on the right below the notes of the tab.
As the operator of the platform you are legally obliged to inform your users about the usage of an AI service.
Attention
The "AI providers" tab points out that the AI functionality is a beta feature. Using it may result in unexpected behaviour.
The following actions are available for each configured AI provider:
- Switch "Enable": The provider can be temporarily disabled and enabled again. The configuration is retained.
- Button "Check API key": OpenOlat validates the stored key directly with the provider. On success, OpenOlat displays the number of available models; in case of an error, the provider's error message. For the generic AI provider the button is called "Check connection".
- Button "Delete configuration": Removes the provider including the API key and all configurations.

Anthropic Claude
If you want to use Anthropic Claude's AI models, enter your API key here. Please note that using the Anthropic Claude service may incur charges on your Anthropic account.
OpenAI
If you want to use OpenAI's AI models, enter your API key here. Please note that using the OpenAI module may incur charges on your OpenAI account.
Generic AI Provider
In this section, you configure a generic OpenAI-compatible AI provider, such as
- vLLM
- Ollama
- LiteLLM
- NeuralMagic
- ...
The following fields are available:
- "Provider name": the name under which the provider is offered for selection in the AI features.
- "Base URL": the address of the OpenAI-compatible interface, for example
https://my-server:8000/v1/. - "API Key (optional)": only needed if the server requires authentication.
- "Available models": comma-separated list of the model names on this server. Needed if the models are not auto-detectable.
Use the button "Check connection" to test whether the server can be reached.
AI features
You configure each AI feature separately. OpenOlat loads the available models directly from the selected provider.
You define:
- whether to use AI (switch "Enable feature"),
- which AI provider (field "AI Provider"),
- which model should be used (field "Language model"; "Vision model" for the Image Description Generator, "Embedding model" for Taxonomy Matching),
- and whether the feature runs for persons without a choice of their own (switch "Default for users", only for "Image Description Generator" and "Essay Grading", see Default for users).
Currently, AI can be integrated into the following features:
- Taxonomy Matching (Embeddings): assignment to the matching taxonomy level via embedding model, see Module Taxonomy: Automatic assignment by AI >
- MC Question Generator (creation of multiple-choice questions), used in Question pool: Create Questions >
- Image Description Generator (creation of image descriptions, alternative text, and keywords), used in Information and settings for items in the Media Center >
- Essay Question Generator (creation of open-text questions with grading criteria)
- Essay Grading (formative AI feedback on open-text answers), used in the question pool and in the Content Editor >
The benefit of these features for authors and the places where they take effect are shown in the concept study AI features: Application map >.

For the MC Question Generator you copy a subject-specific text into the designated input field. OpenOlat generates, for example, multiple-choice questions with answer options from it and pre-fills a range of metadata for each question (keywords, topic and taxonomy).
For each feature except Taxonomy Matching, the "Run test" link shows an AI-generated sample. The link appears as soon as a provider and a model are selected.
Example MC Question Generator:

Example Image Description Generator:

Default for users
Two AI features work with the content of a person without the person calling them: the "Image Description Generator" describes every uploaded image, "Essay Grading" corrects free-text answers in a quiz. For these two features you use the switch "Default for users" to define what applies to persons who have not made a choice themselves. Every person can override the default in their personal settings in the tab "AI settings", see Personal Configuration: Settings. The other AI features are called by a person themselves, they need no default.
- "On": The feature runs for everyone who has not chosen otherwise in their personal settings.
- "Off": The feature only runs for persons who have switched it on themselves.
The switch can only be operated as long as "Enable feature" is switched on. For "Essay Grading", OpenOlat asks persons without a choice of their own at the start of a quiz in the dialog "AI correction" whether the AI may correct their answers. There the default determines which button is highlighted: "Allow once" for "On", "Not now" for "Off". The dialog appears in both cases.
A changed default only applies to persons without a stored choice. You cannot set a choice for a person, but you can delete stored choices. After that the default applies, and the dialog "AI correction" asks again:
- for one person in the user management in the tab "GUI preferences" of their user account, see Manage user settings,
- for all persons in the system administration under
Administration > Core functions > GUI preferences, with "Reset" in the row of the attributed classorg.olat.core.commons.services.ai.AiUserPreferenceService, see Core functions.
Limits per feature
For each AI feature you additionally define how much text is sent to the model, how much text the model may produce and how long OpenOlat waits for the response. The default values are also sufficient for reasoning models, that is, models that think before answering.
- "Maximum output tokens": limits how much text the model may produce. A reasoning model uses part of it to think before answering. If the value is too small, nothing is left for the answer and the call fails. Smallest permitted value: 1024.
- "Timeout (seconds)": defines how long OpenOlat waits for the response of the AI provider before the call is cancelled. Reasoning models and self-hosted models take considerably longer than models in the cloud. Smallest permitted value: 10.
- "Maximum input characters": limits the source text that is sent to the model for question generation. Smallest permitted value: 1000.
- "Maximum input words": limits the number of words of an answer that is accepted for essay grading. OpenOlat rejects longer answers with an error message before any AI call is made. The message states the configured value. Smallest permitted value: 50.
The default values per feature:
| AI feature | Maximum input characters / input words | Maximum output tokens | Timeout (seconds) |
|---|---|---|---|
| MC Question Generator | 60000 input characters | 16384 | 180 |
| Image Description Generator | none | 8192 | 180 |
| Essay Question Generator | 60000 input characters | 16384 | 180 |
| Essay Grading | 400 input words | 16384 | 600 |


For a reasoning model or a self-hosted model, keep the default values or increase them. If the default is not sufficient, increase the timeout first and the output tokens afterwards.
AI processing pools
In the "AI processing pools" tab, you define how many AI calls are executed simultaneously per server node. The appropriate size depends on the infrastructure behind the AI provider: cloud services handle many parallel calls, a self-hosted model on a single GPU only a few.
- Pool "Interactive" (threads): for AI tasks a user is actively waiting on, for example the AI correction of free-text answers.
- Pool "Batch" (threads): for long-running jobs such as question generation from page content; one job can take several minutes.
By default, 8 threads are available for "Interactive" and 2 threads for "Batch". The value per pool must be between 1 and 64.
Below the two fields, the load per pool shows how many calls are currently running and how many are waiting. The "Refresh" button reloads these values.

Usage log
The "Usage log" records every AI call on the instance, making it traceable which AI features are used how often and how many tokens are consumed. The table contains, among other things, date, AI feature, provider, model, status and duration as well as Input tokens, Output tokens and Total tokens.
The following are available for analysis:
- Time range: "This month" (preselected), "Last month", "This year", "Last year" as well as "Custom" for an own time range.
- Search filters for the columns "AI feature" and "Status".
- Download of the filtered table as an Excel file.
The "Total tokens" widget above the table shows the sum of all tokens in the selected time range.

Preconfiguration via olat.properties
If you manage your instances centrally (e.g. with Ansible or Docker images) and the same AI provider should be preconfigured on all of them, you preset AI providers and AI features directly in the configuration file olat.properties.
The following priority principle applies: The values from olat.properties act as default values. As soon as a value is saved in the AI module, the saved value permanently takes precedence. OpenOlat loads the presets regardless of whether the provider or feature is enabled; to use them, enabling them in the AI module is all that is needed.
The two keys user.default stand for the switch "Default for users" and are true by default. An existing installation therefore behaves as before after the update, until someone changes the default or their own choice, see Default for users.
# OpenAI (GPT) provider
ai.openai.enabled=false
ai.openai.api.key=
# Anthropic (Claude) provider
ai.anthropic.enabled=false
ai.anthropic.api.key=
# Generic OpenAI-compatible provider (e.g. vLLM, Ollama, LiteLLM)
# An empty base URL means: no generic preset provider
ai.generic.preset.enabled=false
ai.generic.preset.name=
ai.generic.preset.base.url=
ai.generic.preset.api.key=
# Comma-separated list of model names if not auto-detectable
ai.generic.preset.models=
# Enabled flag, provider (spi) and model per AI feature
# Possible spi values: OpenAI, Anthropic, Generic_0
ai.feature.mc-question-generator.enabled=false
ai.feature.mc-question-generator.spi=
ai.feature.mc-question-generator.model=
ai.feature.image-description-generator.enabled=false
ai.feature.image-description-generator.spi=
ai.feature.image-description-generator.model=
# Default for users without a choice of their own
ai.feature.image-description-generator.user.default=true
ai.feature.essay-generation.enabled=false
ai.feature.essay-generation.spi=
ai.feature.essay-generation.model=
ai.feature.essay-grading.enabled=false
ai.feature.essay-grading.spi=
ai.feature.essay-grading.model=
# Default for users without a choice of their own
ai.feature.essay-grading.user.default=true
# Limits per AI feature
ai.mc.generator.max.input.chars=60000
ai.mc.generator.max.output.tokens=16384
ai.mc.generator.timeout.seconds=180
ai.img.desc.max.output.tokens=8192
ai.img.desc.timeout.seconds=180
ai.essay.generation.max.input.chars=60000
ai.essay.generation.max.output.tokens=16384
ai.essay.generation.timeout.seconds=180
ai.essay.grading.max.input.words=400
ai.essay.grading.max.output.tokens=16384
ai.essay.grading.timeout.seconds=600
# Size of the processing pools (worker threads per node)
ai.task.pool.interactive.size=8
ai.task.pool.batch.size=2
# Taxonomy matching
taxonomy.matching.enabled=false
taxonomy.matching.spi=
taxonomy.matching.model=
# Minimum score at which a taxonomy level is assigned
taxonomy.matching.min.score=0.65
# pgvector is used automatically when available (PostgreSQL with pgvector).
# If pgvector is not available, matching still works via the in-memory search path.
taxonomy.matching.pgvector.enabled=true
taxonomy.matching.local.model.dir=${userdata.dir}/ai/models
# Optional prefix overrides. Leave empty for auto-detection based on the model name.
taxonomy.matching.query.prefix=
taxonomy.matching.passage.prefix=
Important
The generic preset provider is available on every installation under the fixed ID Generic_0. It is displayed in the "AI providers" tab but cannot be deleted there. Additional generic providers are created in the "AI providers" tab.
Further information
Mentioned on this page
External Tools: Overview >
Assign roles >
Module Taxonomy >
Question pool: Create Questions >
Information and settings for items in the Media Center >
Content Editor >
AI features: Application map >
Personal Configuration: Settings >
Manage user settings >
Core functions: Overview >
Further reading
How do I create an essay question with AI grading? >
Module Media Center >