Copilot Studioのエージェントを別環境へ移行する方法|ソリューションのエクスポート・インポート手順

Copilot Studioで作成したエージェントをエクスポートしようとすると、現状の仕様ではそのエージェントがいる環境のソリューション一覧に飛ばされる。

Power Platformに慣れてるとソリューションでエクスポートしろってことだな、ってのはなんとなくわかるけど、Copilot StudioからPower Platformを触り始めた方から、移行方法がさっぱりわからないとの質問を頂いた。

ということで、この記事では、作成したエージェントをソリューションに梱包し、別環境(別テナント含む)へエクスポート&インポートする手順を解説。

スポンサーリンク

なぜCopilot Studioの移行に「ソリューション」が必要なのか?

現時点で、Copilot StudioはPower PlatformのALM(アプリケーションライフサイクル管理)に完全に統合されており、エージェントの移行にはソリューションの使用が必須となっている。

これは、Copilot Studioで作成したエージェントが、Power AutomateのフローやAI Builderのプロンプトなど、外部の様々なオブジェクト(依存関係)と密接に連携しているため。

ソリューションを使用して移行することで、エージェント本体だけでなく、これら「エージェントが呼び出す機能」もパッケージ化して、安全に一緒に運ぶことが可能。

ということで、実際にソリューションを使用したエクスポートとインポート手順を以下に解説。

事前準備:移行するエージェントと依存関係の確認

今回はこのエージェントをエクスポートし、別環境にインポートしてみる。
このエージェントには、カスタムトピックやツール、環境変数などが入っているので、これらをまとめて移行する。

【図解】エージェントをエクスポート/インポートする手順

エージェントのエクスポートとインポートは以下の手順で行う。

  1. 1. (作成していなければ)ソリューションの作成
  2. 2. エクスポート
  3. 3. インポート

手順1. 新規ソリューションの作成とエージェントの追加

まずはエージェントをエクスポートするための「ソリューション」を作成する。
※既にエージェントとエージェントに関わるコンポーネント(カスタムトピック、ツールなど)が1つのソリューションにまとまっている場合は、本手順は不要。

まずは[…]マークから、[エージェントのエクスポート]を選択する。
すると移行対象のエージェントが存在する環境の「ソリューション一覧」が開くので、[新しいソリューション]の作成を押す。
※ちなみにこの導線自体がすでに「わかりにくい」と思う…
ソリューションにわかりやすい名前を付け、公開元(企業名など、特になければDefault Publisher)を指定し、[作成]。
すると空のソリューションができるので、[既存を追加]から[エージェント]→[エージェント]を押して、
移行対象のエージェントを追加、
すると対象のエージェントとそれにまつわるコンポーネントたちがソリューションに追加される。
念のため、エージェントの[…]→[詳細]→[必須オブジェクトを追加]を使って、追加漏れがある場合はそれらを追加する。
※注意:ソリューション作成後に、Copilot Studio側で新しいフローなどを追加した場合は、再度この『必須オブジェクトを追加』を実施すること

以上でソリューションの作成は完了。

手順2. ソリューションのエクスポート(マネージド/アンマネージドの選択)

続いてエクスポート。

先ほど作成したソリューションの[概要]タブから、[エクスポート]を選択し、
[すべての変更を公開]し、[次へ]を押す。
マネージドソリューションの依存関係で[次へ]を押して、
任意のバージョンを入力し、「マネージド」か「アンマネージド」かを選択(今回はアンマネージド)、[エクスポート]を押す。
※今回はあくまでデモなので「アンマネージド」選択。
💡 マネージドとアンマネージドの違い
Power Platformにおけるソリューションは、環境間の移動(Dev→Prod)において以下の2種類を使い分ける。

  • アンマネージド (Unmanaged): 「開発用の生データ」
    • 役割: 開発環境用
    • 特徴: 中身を編集可能
    • 削除時: ソリューションの「ガワ」だけ消えて、中身(アプリやフロー)は環境に残留する
    • 使い道: 開発環境の移動、ソース管理システムへのチェックイン、プロトタイプの配布 など
  • マネージド (Managed): 「本番用の封印パッケージ」
    • 役割: 検証・本番環境用。
    • 特徴: 原則として編集不可(ロックされている)
    • 削除時: ソリューションごと中身もきれいに一括削除される(アンインストール可能)
    • 使い道: テスト環境・本番環境へのリリース など

※本番環境は絶対に「マネージド」というわけではありません。

エクスポートが完了したら、zipファイルをダウンロードする。

これでエクスポートは完了。

手順3. 別環境へのインポートと接続設定

最後インポート。

Copilot Studioで移行対象の環境へ移動し、[エージェントのインポート]を押す。
移行対象環境のソリューション一覧が開くので、[ソリューションをインポート]から[参照]を押し、先ほどのzipをアップロードする。

[次へ]を押して、
(必要に応じて)接続参照や環境変数を設定し、[インポート]を押す。
※移行先環境に必要な接続がない場合は『新しい接続』を押して作成し、元の画面に戻って『一覧を更新』を押すと選択できるようになる

インポートが無事完了したら、
Copilot Studioにエージェントが表示され、
動作確認も可能。

これがエージェントの移行(エクスポート、インポート)の流れ。

以下、おまけでCLIを使用した移行の紹介(ただし未検証です)。

【参考】Power Platform CLIでの移行が推奨されない理由

※以下未検証です。

実はPower Platform CLIでもエージェントの移行はできる可能性がある。

1. テンプレートの出力 : pac copilot extract-template

まずは以下のコマンドを使用し、テンプレートを出力する。

pac copilot extract-template `
   --environment 【環境ID】 `
   --bot 【エージェントID】 `
   --templateFileName 【ファイル名】.yaml

2. テンプレートを使用した新規作成 : pac copilot create –templateFileName

そして、以下のコマンドを使用し、先ほど作成したテンプレートを利用し、新しいエージェントを作成する。

pac copilot create --templateFileName 【ファイル名】.yaml
Microsoft Power Platform CLI コパイロット コマンド グループ - Power Platform
Microsoft Power Platform CLI コパイロット コマンド グループのコマンドとパラメータについて説明します。

移行できるのはテンプレートに含まれるもののみ

この方法だと、別の環境へ移行できるのは「テンプレート」に含まれるもののみとなる。

■含まれるもの

  • トピック (Topics): トリガーフレーズ、メッセージ、質問ノード、条件分岐などのロジック。
  • 変数 (Variables): トピック内で定義・使用される変数。
  • システムトピックのカスタマイズ: OnUnknownIntent(わからない場合)などをいじっていた場合、その変更内容。
  • エンティティ呼び出し: 標準エンティティやカスタムエンティティを利用する「設定」は含まれる。
■含まれない・要注意なもの

  • Power Automate フロー本体 (×):
    • YAML内にはフローのID(GUID)だけが記述されている。
    • 重要: 移行先に「同じIDのフロー」が存在しないと、インポート後にボットがエラーを吐く(「フローが見つかりません」)。フローは別途ソリューションで運ぶ必要がある。
  • 接続情報 (Connections) (×):SharePointやOutlookへの接続認証情報は含まれない。インポート時に再接続が必要。
  • ナレッジソース (△):仕様上は含まれるはずだけど、「一部のナレッジソースが欠落する」という報告がGitHubで上がっている 。特にSharePoint連携などは不安定な可能性大。
  • 環境変数 (×):環境変数の定義自体はDataverse側の話なので、このYAMLには含まれない。

結論:確実な移行にはソリューションを使おう

ということで、正直現時点でCLIを使用して移行する必要性は見つからないので、ソリューションを使用した移行が推奨。

関連記事

コメント

タイトルとURLをコピーしました