Configuration parameters and policies 

Configurations define use-case presets with model selection and parameters.

Configuration list with model assignments

Configuration list showing linked model, selection mode and parameters.

Required 

identifier (config)
Type
string
Required

true

Unique slug (e.g., blog-summarizer).

name (config)
Type
string
Required

true

Display name (e.g., Blog Post Summarizer).

model
Type
reference

Stored as model_uid. Needed for execution in fixed mode; criteria mode resolves a model without this reference.

system_prompt
Type
text

Optional system message that sets the AI's behavior.

Optional 

temperature
Type
float
Default
0.7

Creativity (0.0 = deterministic, 2.0 = creative).

max_tokens (config)
Type
integer
Default
1000

Maximum response length in tokens. Set 0 to inherit the model's max_output_tokens. Precedence: per-call option > configuration value (> 0) > model max_output_tokens (> 0) > provider default.

A reasoning model of OpenAI counts its thinking against this limit, so nr-llm sends at least 16,000 tokens for such a model unless the call switches thinking off. The value bounds the length of an answer only on a model that does not think. See ADR-241.

top_p
Type
float
Default
1.0

Nucleus sampling (0.0-1.0).

frequency_penalty
Type
float
Default
0.0

Reduces word repetition (-2.0 to 2.0).

presence_penalty
Type
float
Default
0.0

Encourages topic diversity (-2.0 to 2.0).

fallback_chain
Type
JSON (text column)
Default
(empty)

JSON object with a single key, configurationIdentifiers, whose value is the ordered list of other configuration identifiers to retry against when the primary fails with a retryable error (connection error, HTTP 5xx, or HTTP 429 rate-limit). Non-retryable errors bubble up unchanged. Streaming requests do not trigger fallback after visible output. Before the first chunk, eligible failures can fall back; see Streaming support.

Example payload:

{"configurationIdentifiers": ["claude-sonnet", "ollama-local"]}
Copied!

Identifiers are matched case-insensitively; leave empty to disable fallback. See Fallback chain.

answer_cache_ttl
Type
int (seconds)
Default
0 (off)

How long the same request to this configuration gets the same answer again without a provider call, at most 86400 (one day). It applies to a plain chat or completion. A call of an agent run, a tool call, a call bound to a response schema and a streamed answer are never answered from the cache. Only a complete text answer is stored, in JSON mode only one that parses. Evaluation runs always ask the model, and a caller can decline the cache for one call with ChatOptions::withoutAnswerCache().

The entry is the answer verbatim, so it is stored and served only where the content privacy level is full, globally and for the provider that served the answer (ADR-242). Below that the field has no effect.

The key covers the configuration and its last edit, the messages after skill injection, the per-call options, the site and the language. Saving the configuration therefore starts afresh, and flushing all caches empties it (cache nrllm_responses, tag nrllm_answers). A served answer consumes no tokens, is not charged against a budget and counts as a cache hit in telemetry. See ADR-249.

system_prompt_data_class
Type
select
Default
(empty — undeclared)

The sensitivity ceiling for confval-config-system-prompt. Declaring one refuses any send whose serving model sits in a weaker trust zone than the class allows, the same axis snippets and skills carry (ADR-144, ADR-155).

Empty means no statement was made and constrains nothing, so existing configurations behave exactly as before. The class describes the text: a configuration whose system prompt is blank declares nothing whatever this field says.

Enforcement follows the instance-wide tools.dataClassEnforcement switch — see The four keys.