次の方法で共有


チュートリアル: 財務と運用のビジネス ロジックで AI ツールを作成する

財務と運用アプリでは、財務と運用コードのビジネス ロジックを使用して、Microsoft Copilot Studio でコパイロット エクスペリエンスの機能を拡張する AI ツールを作成できます。 これらのツールは、財務と運用クライアントで特定のアプリケーション コンテキストを必要としないヘッドレス操作です。 財務と運用アプリの Copilot に追加して、アプリ内チャット エクスペリエンスを拡張したり、他のカスタム コパイロットに追加することもできます。 詳細については、財務と運用のビジネス ロジックで AI ツールを作成する を参照してください。

シナリオ

AI ツールを作成して、財務と運用アプリで顧客アカウントの残高を計算しています。 このツールは、ユーザーがビジネス ロジックと自然言語で対話でき、ユーザーのプロンプトに対してコパイロット チャットで X++ を呼び出します。 次に、財務と運用アプリの Copilot のアプリ内チャットまたは任意のカスタム コパイロットにこの機能を追加できます。 このシナリオでは、顧客の残高はデータベース フィールドに格納されている値ではないので、単純な取得操作や、Copilot Studio のナレッジ ソースを使用して取得されることはありません。 AI ツールはアプリケーション コードを実行して計算を行い、応答をエージェントに返します。

このチュートリアルのステップの概要は以下の通りです:

  1. 統合開発環境で、ツール操作を定義するために X++ でクラスを作成します。 新しいクラスのセキュリティ権限を追加します。
  2. Dataverse で、X++ クラスを呼び出すカスタム API を作成します。
  3. Microsoft Copilot Studio で API をエージェントのツールとして追加します。

前提条件

このチュートリアルには次の前提条件があります。

手順1: X++ でツール操作を定義する

統合開発環境では、Copilot Studio がツールを呼び出すときに呼び出されて、コードを実行できるクラスを X++ で作成する必要があります。 このクラスは、AI 操作を定義するコード/ビジネス ロジックをカプセル化します。

  1. Visual Studio の開発プロジェクトで、以下のパッケージを参照するモデルを作成します。 モデルを作成して統合開発環境で作業する方法の詳細については、チュートリアル: X++ コードの書き込み、展開、およびデバッグ を参照してください。

    • ApplicationCommon
    • ApplicationFoundation
    • ApplicationPlatform
    • ApplicationSuite
    • ContactPerson
    • 通貨
    • ディレクトリ
  2. CustomAPICalculateCustomerBalance という名前のクラスを作成します。 次のコードを追加します。

    [CustomAPI('Calculate customer balance', 'Calculates the current balance for a customer in the local currency defined for the customer')]
    [AIPluginOperationAttribute]
    [DataContract]
    public final class CustomAPICalculateCustomerBalance implements ICustomAPI
    {
        private CustAccount accountNum;
        private CurrencyCode currencyCode;
        private boolean customerFound;
        private AmountCur balance;
        CustTable custTable;
    
        [CustomAPIRequestParameter('The customer account number', true),
            DataMember('accountNumber')]
            public CustAccount parmAccountNum(CustAccount _accountNum = accountNum)
        {
            accountNum = _accountNum;
            return accountNum;
        }
    
        [CustomAPIResponseProperty('The currency code for the customer balance'),
            DataMember('currencyCode')]
            public CurrencyCode parmCurrencyCode(CurrencyCode _currencyCode = currencyCode)
        {
            currencyCode = _currencyCode;
            return currencyCode;
        }
    
        [CustomAPIResponseProperty('Indicator whether the customer record exists'),
            DataMember('customerFound')]
            public boolean parmCustomerFound(boolean _customerFound = customerFound)
        {
            customerFound = _customerFound;
            return customerFound;
        }
    
        [CustomAPIResponseProperty('The current customer account balance'),
            DataMember('balance')]
            public AmountCur parmBalance(AmountCur _balance = balance)
        {
            balance = _balance;
            return balance;
        }
    
        public void run(Args _args)
        {
            changecompany('usmf') //Can add company as input to allow switching
            {
                custTable = CustTable::find(this.parmAccountNum());
                if (this.parmAccountNum())
                {
                    if (custTable)
                    {
                        this.parmCustomerFound(true);
                        this.parmCurrencyCode(custTable.Currency);
                        this.parmBalance(custTable.balanceAllCurrency());
                    }
                }
            }
        }
    }
    
  3. 開発プロジェクトで、アクション メニュー項目を追加します。 それに以下のプロパティ値を設定します。

    • 名前: CustomAPICalculateCustomerBalance
    • オブジェクト タイプ: クラス
    • オブジェクト: CustomAPICalculateCustomerBalance
  4. CopilotCalculateCustomerBalancePrivilege という名前の セキュリティ権限 項目を作成します。

  5. 新しい権限にエントリ ポイントを追加します。 それに以下のプロパティ値を設定します。

    • 名前: CustomAPICalculateCustomerBalance
    • オブジェクト タイプ: MenuItemAction
    • オブジェクト名: CustomAPICalculateCustomerBalance
    • アクセス レベル: 作成
  6. SalesTeamCopilotRole という名前の セキュリティ ロール 項目を作成します。

  7. 権限を新しいロールに追加します。 作成した CopilotCalculateCustomerBalancePrivilege 権限を参照するようにプロパティを設定します。

  8. コードを保存してビルドし、財務と運用環境に展開します。

手順 2: Dataverse カスタム API を作成する

  1. Power Apps を開きます。

  2. 表示名 フィールドが デモ Sales Copilot に設定されている新しいソリューションを作成します。 発行元 フィールドで、コパイロットの発行元を選択します。 選択した発行元の 接頭語 の値をメモします。 例えば、CDS 既定発行元 を選択した場合、接頭辞は cr689 です。

    重要

    この記事の後半の手順で、ソリューションにオブジェクトを作成する際に、入力するように指示される値のいくつかに、例として接頭辞 cr689 を使用します。 この例の接頭辞を、ご使用のソリューションで選択した発行元の接頭辞で置き換える必要があります。

  3. ソリューションのツール バーで、新規>詳細>その他>カスタム API を選択します。

  4. 以下の詳細を入力して、新規カスタム API を保存します:

    • 固有の名前: cr689_CustomAPICalculateCustomerBalance
    • 名前: 顧客残高を計算する
    • 表示名: 顧客残高を計算する
    • 説明: 顧客に対して定義されたローカル通貨で顧客の現在の残高を計算します
    • バインド タイプ: グローバル
    • プラグインのタイプ: Microsoft.Dynamics.Fno.Copilot.Plugins.InvokeFnoCustomAPI
  5. ソリューションのツール バーで、新規>詳細>その他>カスタム API 要求パラメーター を選択します。

  6. 以下の詳細を入力して、新規カスタム API 要求パラメーターを保存します:

    • カスタム API: 顧客残高を計算する
    • 固有の名前: cr689_CustomAPICalculateCustomerBalance_accountNumber
    • 名前: accountNumber
    • 表示名: accountNumber
    • 説明: 顧客のアカウント番号
    • 型: 文字列
    • オプション: いいえ
  7. ソリューションのツール バーで、新規>詳細>その他>カスタム API 応答プロパティ を選択します。

  8. 以下の詳細を入力して、新規カスタム API 応答プロパティを保存します:

    • カスタム API: 顧客残高を計算する
    • 固有の名前: cr689_CustomAPICalculateCustomerBalance_balance
    • 名前: 残高
    • 表示名: 残高
    • 説明: 現在の顧客アカウント残高
    • 型: 10 進
  9. 手順 7 と 8 を繰り返し、残りの 2 つの出力パラメーター currencyCodecustomerFound のそれぞれにカスタム API 応答プロパティを作成します。 この記事で先に説明したX++ クラスの名前、説明、およびデータ型を使用します。

手順 3: アクションをエージェントのツールとして追加する

  1. Copilot Studio を開いて、環境を選択します。

  2. 既存のエージェントを選択するか、新しいカスタム エージェントを作成します。

  3. エージェントの ツール メニューで、ツールの追加 を選択します。

  4. Microsoft Dataverse コネクタを検索して選択します。

  5. 選択した環境でのアンバウンド アクションの実行 を選択します。

  6. 接続 を選択し、追加および構成 を選択します。

  7. 詳細 セクションで、次の値を入力します:

    1. 名前: "顧客残高を計算する。"
    2. 説明: "顧客に対して定義されたローカル通貨で顧客の現在の残高を計算します"
  8. 入力 セクションで、次の値を入力します:

    1. 環境:塗りつぶしの使用 値を カスタム値 に設定し、(現在) を選択します。
    2. アクション名:塗りつぶしの使用 値を カスタム値 に設定し、cr689_CustomAPICalculateCustomerBalance に設定します。
    3. 入力の追加 アクションを選択し、cr689_CustomAPICalculateCustomerBalance_accountNumber を選択します。
    4. 塗りつぶしの使用 値を AIで動的に入力 に設定します。
    5. フィールドで カスタマイズ を選択します。
    6. パラメーターの 説明 フィールド: "顧客のアカウント番号。"
  9. 完了 セクションで:

    1. 詳細 セクションを開きます。
    2. cr689_CustomAPICalculateCustomerBalance_balance 出力の設定を開き、説明 に以下を入力します: "現在の顧客アカウント残高。"
    3. cr689_CustomAPICalculateCustomerBalance_currencyCode 出力の設定を開き、説明 に以下を入力します: "顧客残高の通貨コード。"
    4. cr689_CustomAPICalculateCustomerBalance_customerFound 出力の設定を開き、説明 に以下を入力します: "顧客レコードが存在するかどうかを示すインジケーター。"
  10. 新しいツールを 保存 して閉じます。

メモ

このチュートリアルでは、エージェントで生成 AI オーケストレーションが有効になっていることを前提としています。 コパイロットで既定のクラシック オーケストレーションを使用する場合、アクションを呼び出すためにコパイロットでトピックを作成する追加の手順を完了する必要があります。 詳細については、コパイロットを構成してアクションを呼び出す を参照してください。

手順 4: 新しいツール アクションをテストする

ツールをテストするには、Copilot Studio の エージェントのテスト ペインを使用します。 また、チームなどのチャンネルにエージェントを公開できます。 チャット ペインで、財務と運用環境から顧客残高について問い合わせるプロンプトに入力します。 たとえば、「顧客アカウント US-001 の現在の残高はいくらですか?」と尋ねます。