|
| 1 | +--- |
| 2 | +title: Building AI plugins for discovery by Copilot (preview) |
| 3 | +description: Building AI plugins for discovery by Copilot. |
| 4 | +ms.date: 11/07/2023 |
| 5 | +author: mduelae |
| 6 | +ms.author: mkaur |
| 7 | +ms.reviewer: mkaur |
| 8 | +ms.topic: how-to |
| 9 | +ms.subservice: common |
| 10 | +manager: tapanm |
| 11 | +ms.custom: bap-template |
| 12 | +search.audienceType: |
| 13 | + - maker, admin |
| 14 | +--- |
| 15 | + |
| 16 | +# Building AI plugins for discovery by Copilot (preview) |
| 17 | + |
| 18 | +[This article is prerelease documentation and is subject to change.] |
| 19 | + |
| 20 | +Microsoft Dataverse supports three types of AI plugins – Dataverse custom APIs, Dataverse Table Search, and Dataverse File Search. Before you start building AI plugins for discoverability by Copilots across Microsoft 365, you need to decide which one of the supported AI plugin types to create. |
| 21 | + |
| 22 | +While other AI plugin types might be added as supported by Dataverse, the steps to define plugin are the same. |
| 23 | + |
| 24 | +All components within AI plugins are solution-aware, and follow the standard application lifecycle management (ALM) principles. |
| 25 | + |
| 26 | +In general, there's two main steps in defining AI plugins. |
| 27 | + |
| 28 | +1. Define the core functionality that you want to expose as an AI plugin. <br> |
| 29 | + This is a prerequisite and an existing step in Dataverse about defining a custom API or a custom connector. This means that you can define an AI plugin for your existing custom APIs or custom connectors without any major changes. |
| 30 | +1. Define the metadata of the AI plugin that can be discovered by a Copilot. |
| 31 | +This is a new step that lets you define the metadata for your AI plugin that is used by the Copilots to discover and invoke this plugin. The process includes the following three main components: |
| 32 | + 1. **AI plugin definition**: The metadata of your plugin. For example, **SalesAIPlugin/**. |
| 33 | + 1. **AI plugin operation**: A list of operations supported by your plugin. For example, **GetOpportunities**, **CreateOpportunity/**. |
| 34 | + 1. **AI plugin instance**: Controls the state of your plugin, which is **Enable** or **Disable**. |
| 35 | + |
| 36 | +Let’s get started and define our first AI plugin. In this example, we're going to define an AI plugin of type custom API. |
| 37 | + |
| 38 | +> [!Note] |
| 39 | +> A basic understanding and knowledge of application lifecycle management (ALM) in Dataverse is required to follow this example. See [Solution concepts](/power-platform/alm/solution-concepts-alm) in Power Platform ALM to learn more. |
| 40 | +
|
| 41 | + |
| 42 | +## Defining a Dataverse custom API as an AI plugin |
| 43 | + |
| 44 | +### Step 1 – Define custom API |
| 45 | + |
| 46 | +You can create a custom API using the Power Apps. More information: [Create a custom API in Power Apps](../../developer/data-platform/create-custom-api-maker-portal.md) |
| 47 | + |
| 48 | +The plugin infrastructure currently supports only custom APIs with ‘IsFunction=False’ and ‘IsPrivate=False’. Hence, ensure that your custom API isn't a function or private API. At this point, you can test your custom API using a Postman client. |
| 49 | + |
| 50 | +### Step 2 – Define AI plugin |
| 51 | + |
| 52 | +Once you define the custom API, you can define the AI plugin using Power Apps. First, [Create a solution](../data-platform/create-solution.md). Once you create a solution, follow these steps to create an AI plugin: |
| 53 | + |
| 54 | +1. In your solution, select **New** > **More** > **Other** > **AI plugin** from the drop-down. |
| 55 | +1. Enter the values for the required fields. |
| 56 | + 1. **Name**: Enter a name that starts with a prefix. For example, new_myAIPlugin |
| 57 | + 1. **PluginType**: Dataverse |
| 58 | +1. **HumanName**, **HumanDescription**, **ModelName**, **Model Description** fields control how your plugin is discovered by the large language model (LLM). So, provide meaningful values for those for your plugins. The remaining fields you can leave blank for now. |
| 59 | +1. Select **Save**. |
| 60 | + |
| 61 | +### Step 3 – Define AI operations |
| 62 | + |
| 63 | +Once you have defined an AI plugin, the next step is to add the operations you want the plugin to expose. This can be done by selecting **+ New AIPluginOperation** from the top menu bar. |
| 64 | + |
| 65 | +Enter the following fields in this form: |
| 66 | + |
| 67 | +- **Name**: Provide a name for your operation |
| 68 | +- **OperationID**: this needs to be a value with a prefix like shown below |
| 69 | +- **Custom API**: This will be a look up to the custom API you created in Step 1. |
| 70 | +- **Description**: This field is currently used by BizChat for plugin matching, so don’t leave it blank |
| 71 | + |
| 72 | +Select **Save and close**. If you have additional operations, you can add those following the same steps. |
| 73 | + |
| 74 | +:::image type="content" source="media/plugin-define-ai-operation.png" alt-text="Defile AI operations"::: |
| 75 | + |
| 76 | +### Step 4 – Package as a solution |
| 77 | + |
| 78 | +Once you add all the required plugin metadata to your solution, make sure that you add your custom API to the same solution as well. This can be done in your solution, select **Add Existing** > **More** > **Other** > **CustomAPI** from the drop-down and select the custom API you created in Step 1. |
| 79 | + |
| 80 | +Go to **Solutions** section in Power apps and select your solution. Then, select **Export** from the menu > select **Managed**. You can download the exported zip file and import into another test environment and test your changes. |
| 81 | + |
| 82 | + |
| 83 | + |
0 commit comments