Enable advanced AI features in Power Virtual Agents


This topic contains pre-release documentation and is subject to change.

Preview features aren't meant for production use and may have restricted functionality. These features are available before an official release so that customers can get early access and provide feedback.

Select the version of Power Virtual Agents you're using here:


AI models in Power Virtual Agents - background

In Power Virtual Agents conversational AI is infused in each step of the bot building journey wrapped in an experience friendly to business users.

Power Virtual Agents hosts multiple AI models and AI capabilities on a single service, the core of which is a transformer-based natural language understanding (NLU) model.

Traditionally, intent triggering (how an AI model determines the intent of a question posed to it, by using NLU to understand what a user is asking) is formalized as a multi-class classification problem, in which the model is highly associated with known categories; any change to these categories will result in the need to build a new AI model.

Power Virtual Agents, however, employs a language understanding model that uses an example-based approach, powered by a deep neural model. This type of large-scale model only needs to be trained once with large amounts of data using AI supercomputing, and can then be used for specific tasks with few examples without further training. The use of this model is part of the AI at Scale initiative by Microsoft, and means the way AI is developed and used is changing. Specifically for Power Virtual Agents, the use of this model allows for an intuitive way for bot makers to work on their bot content confidently, without having to involve AI experts.

With the Power Virtual Agents model, you only need to provide a few examples when you craft trigger phrases for a topic. The examples for a single topic usually consist of 5 to 10 phrases.

Shorter trigger phrases are better, and you should aim for 2 to 10 words. You just need to make sure trigger phrases are semantically different: changing a single verb or noun could be enough to expand a topic's coverage. Adding things like new articles (changing or adding 'the' or 'a' or 'an'), changing capitalization, adding contractions (you're or don't), or adding plurals won't improve the triggering because contractions are already accounted for in the AI model.

Entities used in corresponding topics will automatically be identified in user intents when matched with their trigger phrases. For example the user intent "I want to book a ticket to Boston" will match with the trigger phrase "I want to book a ticket to Paris".


The AI capabilities that are in preview are only available to bots created with English as the set language.

Advanced AI features overview

There are some specific features that further improve how the AI in Power Virtual Agents understands what your bot users are asking, and how the AI provides answers. The following video provides an overview of these features, each of which is described in further detail on this page.

Topic overlap detection

Topic overlap detection helps improve topic triggering accuracy by finding overlaps between topics. Resolving topic overlaps can help reduce the need for the bot to ask clarifying questions before triggering a topic.


Topic overlap detection is in general availability and supports all languages supported in Power Virtual Agents.

After you enable advanced AI capabilities, you can view a list of overlapped topics. In the navigation menu, select Analytics, then select the Topic triggering tab.

Screenshot showing the overlapping topics tile lists topics with their similarity score.

The list shows each overlapping topic along with a similarity score, which represents the overall overlapped status for a topic, and the number of topics that overlap with the listed one. The similarity score is determined by the AI as it evaluates how semantically similar the overlapping trigger phrases are to each other. A higher score indicates that a particular topic has one or more trigger phrases that are close to another topic's trigger phrases.

You can sort the list by its similarity score, topic name, or number of trigger phrase overlaps.

If you select an item in the list, the Topic overlap details pane will open.

Screenshot of the Topic overlap details pane showing overlaps related to Microsoft 365 language topics.

In this example, there's one trigger phrase in the "Languages support in Microsoft 365?" topic (For which languages is Microsoft 365 available?) that semantically overlaps with a trigger phrase in the "Use Microsoft 365 in other languages?" topic (Can I use Microsoft 365 in languages other than the one I originally purchased?). Here, the AI has determined that both trigger phrases are semantically similar (they contain similar phrases, words, and grammar).

Using semantically similar trigger phrases for two different topics can lead to confusion as the bot may not know which topic to open, and will need to ask follow-up questions to the bot user.

Identifying semantically similar trigger phrases can also help you determine if you have topics that themselves are similar and could be consolidated to simplify the bot authoring process, or edited to make the topics more distinct.

On the Topic overlap details pane, you can select the link to go directly to the specific topic. You can also make changes to the trigger phrase (or delete it) directly on the Topic overlap details pane. Select Save to apply any changes.

After you save the changes in the Topic overlap details pane, the overlapping status will automatically be refreshed. You can always manually refresh the topic overlap status by selecting the refresh button on the topic overlap UI.

Screenshot of the refresh icon, which looks like an arrow bent into a circle.

Topic suggestion from chat transcripts (preview)

This feature analyzes sessions between your bot and users and surfaces suggestions for you based on unmatched user input.

Once enabled, go to Analytics > Topic triggering (preview). A list of potential topics will be shown, with the number of times a query about this topic was made by users of the bot. The top 200 suggestions will be shown.

Screenshot of the Topic suggestions tile showing a list of suggestions.

The topic suggestion analyzer automatically runs once every one to two hours. It scans through all new queries made since the analyzer last ran, groups together queries to which it couldn't match an existing topic, and presents them in the list. Your bot will need at least 100 new conversations (from the last time any suggestion was generated) to trigger the process, and only those suggestions with more than three user sessions will be shown.

When you select an item in the suggestion list, a topic suggestion window will appear, showing the topic with some suggested trigger phrases. The suggested trigger phrases are based on the queries made by the bot users that couldn't be matched to an existing topic.

After reviewing the suggested trigger phrases, you can choose to delete the entire suggested topic (for example, if it's irrelevant to the bot) or add it to your list of topics by selecting Add to topics.

Screenshot of the topic editing window.

Automatic triggering improvements (preview)

Once enabled, the automatic triggering feature improves intent triggering by using AI to automatically generate new trigger phrases by analyzing previous bot traffic.

With the continuous learning in Power Virtual Agents provided by this feature, each conversation will make the next one better - using reinforcement learning and signals from responses to "Did you mean" questions: when the bot is unsure of the bot user's response it will ask a clarifying question. The bot then learns automatically from the bot user's responses and will not have to ask again.

Over time, as users interact and talk to the bot, it will get better and better.

In the following screenshot, the first time the bot comes across a question it doesn't understand, it asks for clarification.

Before auto-triggering improvements, a bot user asks a question with a spelling error "I'd like to purchase somethign," to which the bot says "Sorry, I didn't get that. Did you mean:" and then provides a few options such as Buy items or Buy service. In this case, the bot user selected Buy items.

The next time someone asks the same question, the bot doesn't ask for clarification. It knows from previous interactions that the bot user is likely asking to buy items. The bot goes straight into the purchasing topic, replying to the question "I'd like to purchase somethign" with "I am happy to help you place your order. To what state will you be shipping?"

In this example, it also understands the misspelling of "somethign" to mean "something," so it's able to carry over the improved intent triggering even though the bot user's question is spelled differently.

Screenshot of a bot conversation showing the improvements to auto triggering.

Conversation personalization (preview)

When this feature is enabled, the bot reuses information from Microsoft Graph and Azure Active Directory (Azure AD) throughout the conversation. This feature allows the bot to use already existing information to enhance and personalize future conversations. For example, if a user mentions a name, email, or zip code these properties are stored and used in later conversations without having to reprompt the user.

Specifically, with this feature enabled, when the bot asks questions such as those in the following table, the corresponding user information is pulled from Microsoft Graph and Azure AD (for authenticated users) and provided as prompts for the user to choose as an option.

Screenshot of the triggering improvements highlighted as part of topic authoring.

Sample bot questions User property automatically filled from Microsoft Graph or Azure AD

  • Where do you live?

  • For assistance with this matter you'll need to provide your address.

  • Thank you for that. Please give me 2-3 minutes to review your previous case. May I know your address?


  • OK. I'll need you to enter your annual income in order to assist.

  • OK. Can I get your annual income so I can help with that?

Annual income

  • I'll help if I can. Would you tell me when you were born please (day/month/year)?

  • What is your date of birth?

  • Could you give me your date of birth, please?

Date of birth

  • I can help you out with that. What's your business phone number so I can go ahead?

  • Will proceed if you please provide your work phone number to contact you?

Business phone number

  • Can you supply your city of residence?

  • Please provide your city of residence.

  • I agree. I'd like to know your city of residence to continue. Please tell me what city you're in.

City of residence

  • OK, no problem. Can you tell me the country where you live?

  • Let me assist you with your concern regarding your DVD. Before we proceed, please provide me with the country you are in.

Country of residence

  • For assistance with this matter you'll need to provide your email address.

  • Tell me the e-mail address where I can contact you.

Email address

  • Please tell me: what is your fax number?

  • Alright. Go ahead and enter your telefax number for me please.

Fax number

  • I'd be glad to help you with that. By the way, may I ask for your first name so that I can address you properly?

  • Please enter your name for me.

  • What's your first name?

First name

  • For assistance with this matter you'll need to provide your gender.

  • Sure, I can assist with that. What is your gender?

  • Please enter your gender.


  • What is your home phone number?

  • Please provide your home phone number.

Home phone number

  • I'll help if I can. Would you tell me your job title please?

  • Sure, I'd be glad to help. Please enter your career title to proceed.

Job title

  • Might I know your last name in order to proceed?

  • I see. Allow me to review this case number. Can you also tell me your last name for me to address you properly?

Last name

  • I'll see if I can help. Could you please enter your director's name?

  • I'll help you if I can. could you tell me your principal's name, please?

  • What is your manager's name?

  • Please share the name of your supervisor.

Manager's name

  • Wondering if you would please provide your conjugal status?

  • To assist you I'll need you to enter your marital status.

Marital status

  • Wondering if you would please provide your middle name?

  • I'd be glad to help you with that. By the way, may I ask for your middle name so that I can address you properly?

Middle name

  • Could you please provide me with your mobile phone number?

  • It's not a problem. I'll just need your cell phone number please.

Mobile phone number

  • I'll need your nickname please?

  • It's my pleasure to assist. Can you inform me of your nickname?

Nick name

  • Sure. To help with that, I'll need you to specify how many children you have please.

  • Please indicate the number of children you have.

Number of children

  • I'll see if I can help. Will you be able to enter your partner's full name?

  • Please tell me your spouse's first name.

  • Can you give me the first name of your husband or wife, please?

Spouse/partner name

  • Can you please tell me what your state of residence is?

  • I can help you out with that. What's your state of residence so I can go ahead?

State/province of residence

  • Wondering if you would please provide your zip code?

  • I can help you out with that. What's your zip code so I can go ahead?

Zip code

Enable or disable AI capabilities

  1. Open a bot you want to enable or disable the features for.
  2. Expand the Settings tab, then select AI capabilities.
  3. For each feature, select the checkbox to turn the feature on or off.
  4. Select Save at the top of the tab.

Screenshot showing the new AI capabilities section under the Manage tab.