Skip to main content

Atoti Intelligence Essentials

This is part of the Atoti Intelligence Essentials offer.
Providing context about your cubes improves Visualize This responses: the more the LLM knows about the business meaning of cubes, dimensions, hierarchies, levels, and measures, the more relevant the visualizations it produces. Configuration is optional but recommended.

Prerequisites

Visualize This must be enabled before adding configuration. See Set up Visualize This in Java or Set up Visualize This in Python for setup instructions.

Atoti Java SDK

Add Visualize This configuration to the application configuration file. Add the following to application.yaml:

Configuration parameters

The following table describes each configuration parameter:

Alternative: XMLA_DESCRIPTION property

Descriptions for dimensions, hierarchies, and levels can also be sourced from the XMLA_DESCRIPTION property set directly on the OLAP element schema definition. When this property is present on an element, Visualize This reads it as the element’s description. This is useful when descriptions are already defined in the cube schema, and you want to avoid duplicating them in the application configuration file. If both XMLA_DESCRIPTION and the application configuration file provide a description for the same element, the two values are concatenated.
The XMLA_DESCRIPTION property applies to dimensions, hierarchies, levels, and measures only. Cubes and measure folders must be described through the application configuration file.

Partial configuration

Configuration does not require descriptions for all elements. Provide descriptions only for elements that need additional context.

How to turn Visualize This off

An application can serve Atoti Intelligence without serving chat. Setting atoti.ai.chat.enabled to false, available from Atoti 6.2.1, registers no chat endpoint:
The chat endpoints are then absent, and every call to them answers 404 Not Found. The /versions endpoint stops advertising the activeviam/ai/chat namespace, so service discovery no longer offers chat. The Atoti UI reports chat as absent, and shows no chat panel. The activeviam/ai namespace stays advertised as long as Auto-Explain is enabled. Every other Atoti Intelligence feature keeps working, Auto-Explain and the MCP server included. The setting defaults to true.
Turning chat off differs from configuring no LLM. An application with no LLM keeps advertising the activeviam/ai/chat namespace, and refuses each call to it with 404 Not Found. Chat stays discoverable there, and starts answering as soon as an LLM is configured.
In the Atoti Python SDK, set AiConfig.chat_enabled to False:
A session started that way serves no chat, and Session.chat reports chat as absent.

Dynamic tool discovery

Visualize This can send the LLM every available tool on each request. Alternatively, it can send only the tools that match the current request. Dynamic tool discovery, available from Atoti 6.2.0, is the second mode. The model calls a tool-search tool that queries a keyword index and receives only the matching tools. This reduces prompt token usage and improves tool selection. Atoti enables dynamic tool discovery by default under the Atoti Intelligence Essentials license. Without that license it stays off.
Dynamic tool discovery applies to both SDKs, and both can turn it off. Beyond the opt-out, the settings described in this section can only be configured through the Atoti Java SDK.

How to opt out

Turning dynamic tool discovery off sends the whole tool set to the model on every request instead. This restores the behavior Atoti used before dynamic tool discovery existed. A small tool set, where search adds no benefit, is one reason to turn it off. Debugging which tools the model can see is another. In the Atoti Java SDK, set spring.ai.chat.client.tool-search-advisor.enabled to false:
In the Atoti Python SDK, set AiConfig.dynamic_tool_discovery to False:

Atoti defaults

Dynamic tool discovery is Spring AI’s tool search advisor, configured under the spring.ai.chat.client.tool-search-advisor prefix. Atoti overrides three of its properties: Every other setting — result limits, session eviction, the tool-search instructions given to the model — keeps its Spring AI default. See the Spring AI documentation for the full list of properties and their behavior.
Atoti does not ship spring-ai-vector-store. Add that dependency and a VectorStore bean to the application before setting tool-index-type to vector.

Atoti Python SDK

The chat is available on the session through Session.chat. Its system_prompt is a custom addition to Atoti’s built-in system prompt: it is empty by default, and any value you set is appended to the built-in prompt to give the LLM extra context about your cubes. Reading it queries the server; assigning it takes effect on the next chat run and requires the ROLE_ADMIN role.
The system prompt is global: it applies to every request rather than to a specific cube (the assistant infers which cube a request targets). Use it for overall guidance.To give the assistant more information about a specific cube, set descriptions on its measures and hierarchies — for example cube.measures["Revenue.SUM"].description and cube.hierarchies["Product"].description. The assistant reads these descriptions through its tools. The Java SDK additionally accepts cube, dimension, level, and measure-folder descriptions through application.yaml.

How to serve no chat

Set AiConfig.chat_enabled to False to register no chat endpoint, as described in How to turn Visualize This off.

How to opt out of dynamic tool discovery

Dynamic tool discovery is on by default. Set AiConfig.dynamic_tool_discovery to False to send the whole tool set to the model on every request instead:
The remaining dynamic tool discovery settings are not exposed in the Atoti Python SDK. Configure them through the Atoti Java SDK, as described in Atoti defaults.