Skip to main content

Requirements

To follow this guide, you’ll need:
  • An understanding of Omni modeling concepts
  • Familiarity with Omni’s model IDE
  • Familiarity with basic AI terminology such as tokens, agents, etc.

Common questions

Context is information such as:
  • Descriptions of topics and fields
  • Possible field values
  • How a field might be used
In Omni, this is provided to the AI using a context window. A context window is the amount of text an AI can read and consider at one time when answering a question or completing a task.
Using context windows allows AI models to understand and incorporate relevant information. Specifically, providing context to the LLM makes it more effective, enabling it to interpret your request accurately and generate meaningful responses.
Omni uses the following for context, in priority order:
1

Context and tuning pre-built by the Omni Engineering team

2

The ai_context parameters in the model, topics and views, if provided

3

Topic's description, if provided

4

Topic's name and base_view

5

Prioritized field properties

  • fully_qualified_name (view_name.field_name) - For example, order_items.total_sale_price
  • name - For example, total_sale_price
  • aliases
  • ai_context
  • all_values - Used to specify the possible values for the field
6

Pruned field properties

These properties will be pruned in the following order, but note that fields may be truncated entirely if required.
  1. description
  2. group_label - The categorization of the field
  3. label - If defined, the value will be used. If not provided, a title-cased field name with underscores removed will be used. For example, Total Sale Price
  4. semantic_type - The dimension or aggregate type, such as dimension, sum, count, etc. This value is evaluated based on the field definition and can’t be directly modified.
  5. data_type - The field’s data type, such as number, string, etc.
  6. sample_values - Example values for the field
  7. synonyms - Other terms used to refer to the field
Context applies to:
Omni’s model can handle ~200K characters of context:
  • ~15-25K is reserved for Omni app context, which is used to ensure queries are generated properly
  • The remaining ~175K characters are allocated for context from the semantic layer before truncation, starting with field metadata
To prevent field truncation, we recommend limiting the number of fields included in the context window to 550. Let’s look at an example to demonstrate why.
1

Topic metadata & prioritized field properties

You have a topic that you want to use for AI querying. Including the topic’s description, name, base_view, ai_context, and the included fields’ prioritized properties (ex: name), let’s say the total characters used is around 10,000.
2

Topic field metadata

In the topic, the included fields generally look like this:
The total characters used for this field’s basic metadata equals 160 characters.
3

Field-level context

You’ll likely want to add field-level context, such as description, sample_values, and ai_context. Let’s add 140 characters to account for the AI-specific metadata, which brings the total characters per field to 300 characters:
4

Remaining fields for inclusion

To get the total number of fields, divide the remaining characters available (165,000) by the total metadata characters per field:
This gives you roughly 550 fields to include in the context window before Omni begins truncating fields.
Context provided to Omni’s AI is shared with AWS Bedrock. Refer to the AI data security guide for more information.

Context and agent behavior

As the previous section explained, Omni assembles ai_context from multiple levels — model, topic, view, and field — and passes it to the Omni Agent as part of the query generation prompt. The LLM that powers the Omni Agent makes its own decisions about which context to follow, how to weight it, and how to resolve apparent contradictions. This means:
  • Model-level ai_context is not guaranteed to override topic-level ai_context. All context is passed together; the LLM decides what to prioritize.
  • Context is guidance, not strict instruction. The LLM may partially follow, fully follow, or in some cases not follow a given instruction, especially when instructions are complex or contradictory.
  • Behavior can be non-deterministic. Running the same query twice may result in different context being applied, particularly when context is large or contains conflicting signals.
Use the workbook inspector to view and debug the context for a given AI session.

Curate AI outputs across the model

You can use the model parameter ai_context to pass context shared across topics. This parameter may also be useful for topic selection in the Omni Agent.

Personalize context with user attributes

The ai_context parameter at the model, topic, and view levels supports user attributes through {{omni_attributes.<attribute_name>}} syntax. At query time, Omni substitutes each placeholder with the current user’s attribute value, allowing you to tailor AI behavior per user or group.
Topic ai_context using user attributes
User attribute references are supported in ai_context at the model, topic, and view levels only. Dimension and measure ai_context does not support this syntax — the value is used as-is. Field references and filter conditions are also not supported and will produce a validation warning.

Optimize context for different AI models

The ai_context parameter at the model, topic, and view levels supports model-specific customization through the omni_llm namespace. This ensures optimal performance across AI model options by allowing you to tailor AI instructions to the capabilities of different AI model tiers:
  • smartest - Most capable models suited for complex reasoning
  • standard - Balanced models for typical queries
  • fastest - Optimized for speed and simple requests
For example, you can provide different chain-of-thought instructions based on model tier. In the following example, the first block ({{# omni_llm.smartest }}) would apply when the model tier is smartest, and the second ({{^ omni_llm.smartest }}) would apply when the model tier is standard or fastest:
Model-level ai_context with omni_llm
You can also adjust analysis depth based on model capabilities:
Topic-level ai_context with omni_llm
See the ai_context references for models, topics, and views for more information and examples.

Optimize context for different AI agents

The ai_context parameter at the model, topic, and view levels also supports agent-specific customization through the omni_agent namespace. This lets you scope portions of your context to the AI agent that will read it, preventing bulky agent-specific content from inflating context windows for other agents. The three agent types correspond to existing AI settings configuration categories:
  • analyze - Used for search-model tool and query generation
  • build - Used for topic metadata generation and learn-from-conversation
  • simple_summarize - Used for tile/visualization summaries and query metadata
For example, you might want to provide detailed modeling conventions to the build agent while keeping the analyze agent’s context concise:
Model-level ai_context with omni_agent
You can also provide agent-specific query optimization tips at the topic level:
Topic-level ai_context with omni_agent
See the ai_context references for models, topics, and views for more information and examples.

Use constants for reusable AI context

You can define reusable AI instruction blocks as constants and reference them across multiple ai_context fields using @{constant_name} syntax. This approach helps you maintain shared context (tone, privacy guidance, domain context) in a single location instead of duplicating it across models, topics, views, and sample queries.
Model file with reusable AI context constants
You can then reference these same constants in topic-level, view-level, and sample query ai_context fields, ensuring consistent instruction blocks across your model while keeping maintenance centralized. See the constants reference for more details and examples.

Implement chain-of-thought reasoning

If you want the Omni Agent to give a more thorough explanation of what is being generated (topic selection, field selection, etc.), you can include the following context within the model’s ai_context. This can be altered and tweaked if needed, but the reference to GenerateQuery is required for proper behavior.
If you don’t want to implement chain-of-thought reasoning for all model tiers, you can provide model tier-specific instructions instead.

Output summaries in multiple languages

If you’d like the Omni Agent to summarize outputs in multiple languages, you can include the following context:

Curate topics

Topics have an ai_context parameter, which is useful for providing behavioral prompts and guidance for handling certain questions specific to the topic. For example:
ai_context for e-commerce orders topic
You can use the ai_chat_topics model parameter to curate the list of topics that the Omni Agent or embedded chat instances have access to.

Limit fields included in the context window

The Omni Agent only uses fields within the context of a topic. Fields with hidden: true are excluded from the context window. To control which fields are included, use the ai_fields parameter in a topic. For included fields, you can also provide additional context at the field level. We recommend periodically checking the Analytics > AI usage dashboard to see what questions your users are asking. This helps you identify opportunities to promote commonly used calculations and aggregations to the shared model, improving the self-serve experience over time.

Reuse logic and limit the context window with topic extensions

Topics that you’re already leveraging in Omni can be extended to further curate them for AI. Using the extends parameter, you can reuse the definition of an existing topic without needing to repeat the code. Consider the following Order Transactions topic, which you want to extend to create a curated version dedicated to AI usage:
Order Transactions topic
In a new topic, use extends: [ order_items ] to extend the Order Transactions topic. You can then specify what to include in the AI-specific topic, such as limiting fields, filtering the data for specific use cases, adding more AI context, and so on:
Orders for AI querying topic, extended from Order Transactions

Add example queries as context

Along with providing context about the topic itself, you can use the topic’s sample_queries to provide example questions. This approach is useful if you anticipate specific, recurring questions or you find that the Omni Agent struggles with date filters. To do this, you’ll want to:
  1. Create a query in a workbook that contains the correct answer to the question.
  2. In the workbook, click Model > Save as sample query to topic.
  3. When prompted, fill in the following:
    • Label - A user-friendly name for the query
    • Description - An optional description
    • Display on topic overview - If checked, the query will display as a sample query when the topic is selected in a new query tab
    • Include in AI context - If checked, the query will be included in the AI context for the topic
      • Prompt - An optional example prompt that could be used to generate this query
      • AI context - Optional, additional context for the AI
  4. When finished, click Save.
You can also use the model-level sample_queries parameter to define example queries that could be performed using the topics contained in the model.

Curate views and fields

Views also have an ai_context parameter which can be useful for passing context to AI that is specific to the view. Keeping fields organized and labeled can not only help you create a top-notch self-service experience, it can also make Omni’s AI more efficient. The following parameters can be used to add metadata to fields for the purposes of AI:
  • ai_context - Adds context useful for AI responses
  • all_values - All possible values for the field
    • Note: when the dbt integration is enabled, accepted_values tests will be ingested as all_values
  • sample_values - Example values for the field
  • synonyms - Other terms used to refer to the field
You can use the workbook or the IDE to add the parameters.
  1. In the field browser, click the (three dots icon) next to the field.
  2. Click Modeling > Edit to open the Edit field side panel. Workbook AI parameters panel
In the IDE, navigate to the view containing the field to add the parameters. For example:
products.view