最近 GitHub Copilot のアカウントを作ったので Copilot Studio のVSCode拡張で遊んでいますが、今日はその中で面白い結果が得られたのでご紹介です。 タイトルのとおり、GitHub Copilot で Copilot Studio エージェント の説明書を作らせてみました。
エージェントの設計書替わりになるといいなくらいの動機です。
VSCode拡張を使ってエージェントをローカルにクローンした後から始めますが、その手続きについてはすでに多くのブログで書かれていますので、信頼できるソースとして以下を参考にしてください。
できたもの
今回の方法で作成した説明書は下図のように、エージェントの基本的な動作、処理フロー、ツール・子エージェントの説明等を詳細に含んでいます。これなら、エージェントを作った本人以外でも、おおよそどのようなエージェントの構成なのかを理解できるでしょう。

説明書は実際にはMarkdownで書かれており、図はMermaid形式になっています。
※なお、Mermaid形式の図が含まれるMarkdownのプレビュー表示には拡張機能として「Markdown PDF」と「Markdown Preview Enhanced」を導入しています。
mermaid.jsが記載されているMarkdownファイルをPDFで出力する #VSCode - Qiita

作り方
作り方というほどではありませんが、簡単に手順を紹介します。なお、ここでは愚直にプロンプトでGitHub Copilotに指示していますが、GitHub Copilotのカスタムエージェントを作成すればもう少し簡易なプロンプトで作成してくれるかと思います。
まずローカルにクローンしたエージェントのフォルダを参照して、GitHub Copilotとチャットを開始します。

次にGitHub CopilotのAgentに対して以下のようにプロンプトを投げます
Travel Guideエージェントの構成を解析し、このエージェントの説明書を作ってください。 その際、基本的な動作、できること、カスタムトピックがあればその用途、ツールの使われ方、子エージェントの動作などの機能に関する情報を含めてください。
ここではTravel Guideというエージェントの説明書を書かせているので、最初にそれを伝えています。
このようなプロンプトを投げると、エージェントは参照させたフォルダ内のエージェント関連のファイルを解析し、まずその結果をチャットに書き出します。 その後、README.md というファイルを生成してくれました。

この段階でもなかなかいい具合に説明を書き出してくれました。

処理フローまで書いてくれたのですが、図はMermaid形式にしてほしかったので、追加で以下の通りプロンプトを投げました。
各エージェントの動作をより詳細に解説してください。 また処理フローはmermaid形式で図にしてください
これだけです。出来上がった説明書は最初に載せたような、各機能の詳細と処理フローをグラフィカルに表示したものです。
今回は親子関係のマルチエージェント構成にしたエージェントの説明書でしたので、生成されたMarkdownにも各エージェントの説明、処理が記載されています。(参考のため一部を抜粋)
## 各エージェントの詳細動作 --- ### Travel Guide(メインエージェント・オーケストレーター) | 項目 | 内容 | |---|---| | コンポーネント種別 | `GptComponent`(GPT ベースのジェネレーティブエージェント) | | スキーマ名 | `cr22e_travelGuide.gpt.default` | | 状態 | Active(公開済み) | #### 役割と責務 Travel Guide はチームの**マネージャー**として機能します。ユーザーとの直接の対話窓口であり、2つの専門サブエージェントへタスクを委譲し、得られた情報を統合してユーザーへ日本語でレポートします。 #### 処理ステップ(インストラクションに基づく) ```mermaid flowchart TD S1["ステップ1:ユーザー入力の受取\n出発地・目的地・日程・予算"] --> S2 S2["ステップ2:交通検索の委譲\nTransport route search agent へ指示\n(出発地・目的地・日程・最適ルートと費用を依頼)"] --> S3 S3["ステップ3:観光スポット検索の委譲\nRecommend place agent へ指示\n(旅行先・おすすめスポット5件の検索を依頼)"] --> S4 S4["ステップ4:統合レポートの生成\n交通情報・費用・観光スポットを日本語で提示"] ``` #### 行動指針 - 情報の正確性・最新性を確保する - 明確で簡潔な旅行推薦を行う - ユーザーの問い合わせに迅速に応じる - フレンドリーで親切なトーンを維持する - **回答は必ず日本語**で行う #### 使用するツール・機能 - **Webブラウジング(有効)**:リアルタイムの交通・観光情報を取得 - **ファイル分析(有効)**:ユーザーが添付ファイルを提供した場合に分析 - **セマンティック検索(有効)**:意味的に関連する情報を検索 - **ジェネレーティブアクション(有効)**:子エージェントをツールとして動的に呼び出し - **モデル知識(有効)**:LLM に組み込まれた一般知識を活用 --- ### Transportation route search agent(交通経路検索エージェント) | 項目 | 内容 | |---|---| | フォルダ | `agents/Agent/` | | スキーマ名 | `cr22e_travelGuide.agent.Agent` | | コンポーネント種別 | `AgentDialog`(ダイアログ型サブエージェント) | | 起動トリガー | `OnToolSelected`(Travel Guide から選択されたとき) | | 状態 | Active | #### 役割と責務 Travel Guide チームの**交通専門メンバー**として機能します。マネージャーから渡された出発地・目的地・日程をもとに最適な交通手段を調査し、移動ルートと費用をレポートします。 #### 起動メカニズム(`OnToolSelected`) このエージェントはサービスをツールとして登録されており、Travel Guide の GPT オーケストレーターが必要と判断した際に「ツール呼び出し」として自動的に起動されます。プロアクティブには起動せず、必ずマネージャーからの指示を受けて動作します。 #### ツールの説明(Travel Guide が参照する呼び出し説明文) > Upon receiving instructions from the Travel Guide agent, the system searches for a means of transportation based on information about the origin and destination, and outputs the travel route and transportation costs. #### 処理フロー ```mermaid flowchart TD A([Travel Guide から指示を受信\n出発地・目的地・日程]) --> B[最適な交通手段を検索\n公共交通機関] B --> C[移動ルートと乗換情報を特定] C --> D[交通費を算出] D --> E([Travel Guide へ結果を報告\nルート・費用・乗換情報]) ``` #### 入出力インターフェース - `inputType: {}`(入力スキーマ未定義 → 自然言語でマネージャーからの指示を受け取る) - `outputType: {}`(出力スキーマ未定義 → 自然言語でマネージャーへ結果を返す) #### インストラクション(原文) > You are a member of the Travel Guide team. > Based on the origin, destination, and itinerary given to you by your manager, you search for the best travel method. > Report to your manager the transportation costs required for the resulting travel method and the transit information. --- ### Recommend place agent(おすすめ場所エージェント) | 項目 | 内容 | |---|---| | フォルダ | `agents/Agent_jI0/` | | スキーマ名 | `cr22e_travelGuide.agent.Agent_jI0` | | コンポーネント種別 | `AgentDialog`(ダイアログ型サブエージェント) | | 起動トリガー | `OnToolSelected`(Travel Guide から選択されたとき) | | 状態 | Active | #### 役割と責務 Travel Guide チームの**観光情報専門メンバー**として機能します。マネージャーから指定された旅行先のおすすめ観光スポットを5件調査し、各スポットの概要と場所をレポートします。 #### 起動メカニズム(`OnToolSelected`) Transportation route search agent と同様に、Travel Guide の GPT オーケストレーターによってツールとして呼び出されます。独立して動作し、観光スポット情報の調査に特化した処理を実行します。 #### ツールの説明(Travel Guide が参照する呼び出し説明文) > あなたはTravel Guideチームのメンバーでおすすめ観光スポットを提示する役割のメンバーです。 > マネージャーから指示された旅行先から、おすすめの観光スポットと概要を提示します。 #### 処理フロー ```mermaid flowchart TD A([Travel Guide から指示を受信\n旅行先の地名]) --> B[おすすめ観光スポットを検索] B --> C[上位5件のスポットを選定] C --> D["各スポットの概要(説明)と\n場所(住所・エリア)を整理"] D --> E([Travel Guide へ結果を報告\nスポット名・概要・場所 × 5件]) ``` #### 入出力インターフェース - `inputType: {}`(入力スキーマ未定義 → 自然言語でマネージャーからの指示を受け取る) - `outputType: {}`(出力スキーマ未定義 → 自然言語でマネージャーへ結果を返す) #### インストラクション(原文) > あなたはTravel Guideチームのメンバーでおすすめ観光スポットを提示する役割のメンバーです。 > マネージャーから指示された旅行先から、おすすめの観光スポット5個を検索し、その観光スポットの概要と場所をマネージャーに報告してください。 ---
おわり
ということで、今回はCopilot Studioで作成したエージェントの説明書を、GitHub Copilotを使って作成してみた!という内容でした。 そもそも環境がある前提ですが、非常に手軽にドキュメント化できますので、試してみてください。
