Orchestrate copilot topics and actions with generative AI (preview)

Important

Power Virtual Agents capabilities and features are now part of Microsoft Copilot Studio following significant investments in generative AI and enhanced integrations across Microsoft Copilot.

Some articles and screenshots may refer to Power Virtual Agents while we update documentation and training content.

[This article is prerelease documentation and is subject to change.]

By default, a copilot responds to users by triggering the topic whose trigger phrases match most closely the user's query, and it fills topic inputs from the conversation context.

You can configure your copilot to use generative AI to choose not only from topics you created, but also from actions you added to extend the copilot.

In generative mode, a copilot can fill topic inputs, not only from the conversation context but also by generating questions to prompt the user for values. To learn more about this behavior and how to manage it, see Manage topic inputs and outputs.

How does generative mode work?

Using generative AI to determine how your copilot responds can make the conversation more natural and fluid for the users.

When a user sends a message, your copilot selects one or more actions or topics to prepare its response. Multiple factors determine the selection. The most important factor is the description of the topics and actions. Other factors include the name of a topic or actions, any input or output parameters, and their names and descriptions. Descriptions make it possible for your copilot to be more accurate when it associates a user's intent with actions and topics.

In generative mode, a copilot can select multiple actions or topics at once, to handle multi-intent queries. Once actions and topics are selected, the copilot generates a plan that determines their execution order.

When you test a copilot that uses generative mode in Copilot Studio, you can open the conversation map to follow the execution of the plan.

Turn on generative mode for a copilot

  1. Open your copilot in Copilot Studio.

  2. On the top menu bar, select Settings.

  3. Select the Generative AI tab.

  4. Under How should your copilot decide how to respond? select Generative (Preview).

  5. Select Save on the toolbar.

    Screenshot of the Generative AI page with generative actions enabled.

Important

Using generative AI to determine how to respond to users is a preview feature. 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.

Tip

When using AI-generated content, such as the generated questions when running an action action, it's a good idea to inform your users that some of the conversation may be generated by AI.

For example, you could add an extra message in the Start conversation System topic, which controls the message shown to your users when a new conversation is started with the bot.

Open the conversation map

The conversation map is available for copilots configured to responds to users in generative mode.

  • To open the conversation map, select the map icon at the top of the test pane.

  • To make the conversation map automatically appear when you send a query to your copilot in the test pane, use the down arrow and select On.

    Screenshot of the conversation map button, with the option to show it by default.

When you ask your copilot a question in the test pane, the conversation map shows a visual representation of the plan that was generated. Here, the user asked, "what are the current weather conditions?", and you can see the action that was selected to respond and the input that still needs to be collected, along with annotations from the copilot about its decision making.

Screenshot of tracing mode showing an example of how a plan is represented.

When you use the conversation map, the option to track between topics is available at the top of the conversation map. With tracking enabled, when a topic is triggered as part of a plan, the nodes within the topic appear on the conversation map as they are executed, allowing you to keep track of where you are in the conversation.

Screenshot of the option to track between topics.

Authoring descriptions

If you selected Generative for how your copilot should decide to respond, it's important to provide a high-quality description for each of the actions and topics in your copilot, to ensure your copilot selects the right topics and actions to respond to users.

For actions, authoring a description is part of the wizard used to add them to the copilot. The description is often prepopulated for you, but you can make changes as appropriate. To learn more about adding and managing actions, see Create actions for custom copilots.

For topics, once Generative is selected, Triggered by copilot appears on Trigger nodes (instead of Phrases), which allows you to add or edit the description for the topic.

Trigger node with a description for a topic in a copilot with generative orchestration of topics and actions.

Tip

When you turn on generative orchestration of topics and actions, Copilot Studio automatically generates a default description for each existing topic, based on the topic's trigger phrases. The generated description is often good enough to allow these topics to be selected in response to relevant user queries. However, it's a good practice to follow the advice provided in this article to revise the generated descriptions.

Best Practices for topic and action names and descriptions

Here are some best practices for naming topics and actions, and drafting clear, concise, and relevant descriptions for them.

Writing Style

Use simple and direct language. Avoid jargon, slang, or technical terms.

Use the active voice and the present tense for descriptions. For example, write "This action provides weather information" instead of "Weather information is provided by this action."

Relevance

Use keywords that relate to the action or topic's functionality and the user's intent. For example, if an action provides weather information, use keywords like "weather," "forecast," "temperature," "rain," "snow," and so on.

For the description, write a short and informative summary of the action's or topics's functionality. The summary should be limited to one or two sentences, explain what the action or topic does, and how it benefits the user.

Use a descriptive and unique name that is a short phrase. Avoid using generic or ambiguous names that could be confusing. For example, instead of naming an action "Weather," name it "Weather Forecast" or "Weather Report."

Use specific language to disambiguate between similar topics and actions.

For example, if your copilot already has an action that provides information about current weather conditions, but you want to add another topic that provides the weather forecast for tomorrow, make sure the names and descriptions are specific enough to avoid ambiguity. To disambiguate the action and the topic, you should give each a different name and description. It can also help to indicate what they can't do. Here are examples of names and descriptions you might use in this case.

Name: Current Weather

Description: This topic provides weather forecast for any location in the world. You can ask for the current weather, including temperature and if it's raining or snowing. It doesn't get weather forecasts for future days.

Name: Weather Forecast for Tomorrow

Description: This topic provides weather information for any location in the world for the next day. It provides the temperature. It doesn't get the current weather for today.

Examples of what not to do

Here, we include a few examples that don't follow the guidelines. This example is too vague, since it doesn’t specify what types of questions the action can answer.

Name: Answer Question

Description: This action can answer questions.

The next example uses jargon. Instead, it should spell out earnings per share (EPS).

Name: Get EPS

Description: Gets EPS for any stock ticker.

Examples of interactions with a copilot using generative AI to handle user requests

The following examples are based on a copilot that has two custom topics—one for finding store hours and another for locating a nearby store—and an action based on the prebuilt MSN Weather connector.

Example 1

In this example, the user asks, "What is the weather like in Seattle?". The copilot selects the current weather plugin action and also prepopulates the Location input with "Seattle," which it recognized from the user's question.

Screenshot of example 1, showing the weather action on the conversation map.

Example 2

In this example, the user asks, "I need to get store hours and find my nearest store." Here, the copilot selects two items, the Store Hours topic and the Store Locator topic, and chains them together to respond to both parts of the user's query.

Screenshot of example 2, showing two topics that are chained together on the conversation map.

Example 3

In this example, the user found their nearest store, which was identified as Kirkland, earlier within the conversation. The user then asked, "what's the weather like there?". Here, the copilot selects the current weather action, but prepopulates the location with "Kirkland," based on the recent conversation context.

Screenshot of example 3, showing the conversation history and the weather action on the conversation map.