Skip to content

External tools: AI module

In OpenOlat you are supported by AI at different points. To do this, the AI providers used must be configured in the external tools. 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 administrators and system administrators. Other roles do not reach the system administration. 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, these adjustments are made by frentix.

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

They are organised into four areas (tabs):

  • "AI providers": connect the AI services used and store an API key.
  • "AI features": define per location 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.

The four tabs of the AI module highlighted in turquoise, on the right the Add AI Provider button. Artificial intelligence page.

To the top of the page ^


AI provider

In OpenOlat, the term "AI provider" refers to the service provider whose AI models are used for the various AI-powered features on the platform.

Enable and configure the various AI providers you want to use by clicking the "Add AI Provider" button in the upper-right corner.

Important

As the operator of the platform you are legally obliged to inform your users about the usage of an AI service. The "AI providers" tab displays this notice as well.

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:

  • "Enable" toggle: The provider can be temporarily disabled and enabled again. The configuration is retained.
  • "Check API key" button: The stored key is validated directly with the provider. On success, the number of available models is displayed; in case of an error, the provider's error message is shown. For the generic AI provider the button is called "Check connection".
  • "Delete configuration" button: Removes the provider including the API key and all configurations.

Please note:

On the one hand, integrating many different AI providers allows users to leverage each provider's specific strengths. On the other hand, AI models train themselves and take previous dialogues into account. If tasks are distributed and assigned to many different AI providers, none of the models has access to the complete history of the dialogues.

Anthropic Claude

If you want to use Anthropic Claude's AI models, you can 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, you can 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 can configure a generic OpenAI-compatible AI provider, such as

  • vLLM
  • Ollama
  • LiteLLM
  • NeuralMagic
  • ...

For further specification, list the model names available on this server.

To the top of the page ^


AI features

The AI integration is configured individually for each feature, with the available models being downloaded directly from the respective provider.

You define:

  • whether to use AI (toggle button to enable it),
  • which AI provider
  • and which model should be used.

Currently, AI can be integrated into the following features:

Taxonomy Matching and Image Description Generator with provider, model and the limit fields. Tab AI features, top.

Copy a subject-specific text into the designated input field. OpenOlat will then automatically generate multiple-choice questions with answer options, as well as pre-fill a range of metadata for each question item (keywords, topic, and taxonomy).

For each feature, you can view an AI-generated sample by clicking the "Run test" link.

Example MC Question Generator:
From the subject text entered, the AI generates title, topic, keywords, question and answers. Run test dialogue.

Example Image Description Generator:
From the image entered, the AI generates a title, description, alt text and keywords. Run test dialogue.

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 perform internal reasoning steps before the actual answer.

  • "Maximum output tokens": limits how much text the model may produce. A reasoning model uses part of this budget for its reasoning steps. If the budget 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 standard cloud models. 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 length 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 Input limit 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

MC and Essay Question Generator, each with input characters, output tokens and timeout. Tab AI features, middle.

Essay Grading with input words, output tokens and timeout, with the Save button below. Tab AI features, bottom.

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.

To the top of the page ^


AI processing pools

In the "AI processing pools" section, 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.

Fields for parallel calls, the load per pool and the Refresh button. Tab AI processing pools.

To the top of the page ^


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, output 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.
  • Column filters for "AI feature" and "Status".
  • Excel download of the filtered table.

A widget above the table shows the sum of the total tokens for the selected time range.

Widget with the total tokens above the table of AI calls with duration, status and model. Tab Usage log.

To the top of the page ^


Preconfiguration via olat.properties

AI providers and AI features can also be preset directly in the configuration file olat.properties. This is particularly suitable for centrally managed deployments (e.g. Ansible or Docker images) where the same AI provider should be preconfigured on all instances.

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. The presets are loaded regardless of whether the provider or feature is enabled; to use them, enabling them in the AI module is all that is needed.

# 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=
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=
# 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.

To the top of the page ^


Further information

External Tools: Overview >
Assign roles >
Module Taxonomy >
Question pool: Create Questions >
Information and settings for items in the Media Center >
Content Editor >

To the top of the page ^