Q&A Deprecation and the Hidden DevOps Challenge: Where Do AI Instructions Actually Live?
- Jihwan Kim
- 2 hours ago
- 4 min read
In this writing, I want to share what I learned while exploring the Prep Data for AI feature in Power BI Desktop — and why it matters far more for DevOps workflows than I initially expected.
Microsoft recently announced the deprecation of Power BI Q&A by December 2026, directing users toward Copilot as the replacement. The reasoning is straightforward: consolidate natural language capabilities into a single, more advanced experience. But as I dug deeper, I found an architectural question that should matter to anyone managing semantic models at scale: where do AI instructions actually live, and can I version-control them?
The Two Instruction Surfaces

As I explored the Prep Data for AI tooling in Power BI Desktop, I realized there are now two distinct places where AI behavior can be configured — and they have fundamentally different DevOps characteristics.
The first is semantic model AI instructions, configured through Prep Data for AI in Power BI Desktop. These instructions tell Copilot how to interpret the model: business terminology definitions, measure usage guidance, which tables to prioritize for certain question types. When I use the Prep for AI feature, these instructions are stored directly in the semantic model's metadata — specifically in the linguisticMetadata property.


The second is Data Agent instructions, configured in the Fabric service when creating a Fabric Data Agent. These instructions guide the agent in selecting data sources, routing questions, and applying organizational terminology. The Data Agent can consume multiple data sources, and its instructions live at the service level.
Here's where the DevOps story diverges completely. Semantic model AI instructions persist in TMDL. Data Agent instructions do not.
What TMDL Captures
To see exactly what happens when configuring Prep Data for AI in Power BI Desktop, I stepped through the process in Power BI Desktop with a Contoso sales model and captured TMDL snapshots at each stage. The changes are visible in any diff tool, which is precisely the point.

Before any configuration, the linguisticMetadata in the model's cultureInfo section was minimal:

This is the baseline state for any model that hasn't been touched by AI tooling. The linguisticMetadata property has existed for years — it's what powered Q&A's synonym and phrasing capabilities. Edit Q&A linguistic schema and add phrasings in Power BI Desktop - Power BI | Microsoft Learn
But at version 1.0.0, it's essentially empty.
After simplifying the data structure

The TMDL changed dramatically. The linguisticMetadata version jumped to 4.1.0, and the JSON expanded to include auto-generated entities, synonyms, and phrasings for every table and column. Each entity now includes semantic type hints (like "SemanticType": "Time" for date columns), relationship phrasings (describing how tables connect), and thesaurus-generated synonym suggestions with confidence weights.

A new annotation also appeared at the model level: PBI_ProTooling = ["DevMode","MCP-PBIModeling","TMDLView_Desktop","CopilotTooling"]. That CopilotTooling flag signals that the model has been prepared for AI consumption — and any automated validation could check for its presence.

After adding AI instructions

The version incremented to 4.2.0, and a CustomInstructions property appeared containing the full guidance text:

The instructions include business context, terminology definitions, measure usage guidance, date analysis patterns, geographic analysis notes, product hierarchy documentation, and currency handling rules — all embedded directly in the model metadata.
Why This Matters for DevOps
From a DevOps standpoint, this is foundational. When AI instructions live in the semantic model, they become part of the PBIP folder structure. They're diff-able in Git. They flow through deployment pipelines. They can be reviewed in pull requests. I can track who changed them and when.
Compare that to Data Agent instructions. When I create a Data Agent in Fabric, I configure instructions directly in the service UI. Those instructions guide how the agent selects between multiple data sources (lakehouses, warehouses, semantic models, KQL databases) and interprets organizational terminology. But there's no TMDL representation. No Git story. No obvious CI/CD integration path.
This creates a classic configuration drift scenario. My semantic model might be fully version-controlled in Azure DevOps, with AI instructions locked into my release pipeline. But the Data Agent sitting on top of it has separate instructions that someone edited last Tuesday — and nobody reviewed.
The Practical Implication
When building enterprise analytics with Copilot and Data Agents, I now have to think about instruction governance at two levels. And this isn't theoretical — it affects how I structure my release process.
For semantic models, the path is clear: use PBIP format, configure Prep Data for AI in Power BI Desktop, commit the TMDL files to source control, and let the deployment pipeline handle promotion across environments. The CustomInstructions in linguisticMetadata will travel with the model. When a business analyst updates the AI instructions to clarify that "margin" always means gross margin (not net margin), that change shows up in the pull request alongside any DAX modifications. Reviewers can see it, discuss it, and approve it before it hits production.
Microsoft's documentation notes that AI Instructions and Verified Answers from Prep for AI are fully honored by Data Agents when present in the semantic model. This suggests a reasonable pattern: push as much instruction content as possible into the semantic model layer, where it benefits from TMDL version control, and keep Data Agent instructions minimal — focused only on cross-source routing that genuinely requires service-level configuration. If I need to tell the agent to route financial questions to a specific semantic model and operational questions to a lakehouse, that belongs in the Data Agent. But business terminology? Measure guidance? I'll keep that in the semantic model.
Closing Thoughts
The Q&A deprecation isn't just a feature sunset. It's a signal that AI instruction surfaces are becoming first-class citizens in the Power BI architecture. The fact that Prep Data for AI writes directly to linguisticMetadata — making instructions part of the semantic model definition — shows Microsoft thinking about this as model metadata, not temporary configuration.
But the dual-surface problem is real. Semantic model instructions and Data Agent instructions serve overlapping purposes, live in different places, and have different version control characteristics. In a DevOps workflow, one of the trickiest parts to validate is ensuring that what's in source control matches what's actually running. With AI instructions split across model metadata and service configuration, that validation just got harder.
I hope this helps having fun in exploring Prep Data for AI and embracing this new era of AI-augmented analytics — while keeping DevOps practices intact!



Comments