次の方法で共有


宣言型エージェントの効果的な命令を記述する

宣言型エージェントは、カスタマイズされたバージョンのMicrosoft 365 Copilotであり、特定の指示、アクション、知識を宣言することで、パーソナライズされたエクスペリエンスを作成するのに役立ちます。 宣言型エージェントの効果的な手順を記述するには、次の質問を検討してください。

  • エージェントが達成する必要がある目標は何ですか?
  • エンド ユーザーはどのようなワークフローを想定していますか?
    • 組み込みたいビジネス ロジックはありますか?
    • 組み込みたいエンド ユーザー エクスペリエンスはありますか?
  • ワークフローごとに、エージェントの詳細な手順を指定できますか?

宣言型エージェントにアクションとして API プラグインも含まれている場合、プラグインの OpenAPI ドキュメントは、エージェントが API を参照する指示を理解するのに役立ちます。 詳細については、「 Copilot を拡張する際に OpenAPI ドキュメントを有効にする方法」を参照してください。

このガイダンスは、Microsoft 365 Agents Toolkit または Copilot Studio を使用して宣言型エージェントを作成している開発者や作成者に適用されます。

命令コンポーネント

適切に構造化された一連の手順により、エージェントは、その役割、実行する必要があるタスク、およびユーザーとの対話方法を確実に理解できます。 宣言型エージェント命令の主なコンポーネントを次に示します。

  • 用途
  • 一般的な指示、トーン、制限を含む一般的なガイドライン
  • スキル

さらに、関連する場合は、次の手順が含まれます。

  • 詳しい手順
  • エラー処理と制限事項
  • フィードバックとイテレーション
  • 相互作用の例
  • 標準以外の用語
  • フォローアップとクローズ

次の図は、宣言型エージェント命令の主要なコンポーネントを示しています。

目的、ガイドライン、スキルなど、エージェントの指示のコンポーネントの図

エージェントの指示に関するベスト プラクティス

明確な実用的な言語を使用する

  • 避けるべきことではなく、Copilotが何をすべきかに焦点を当てます
  • "ask"、"search"、"send"、"チェック"、"use" などの正確な特定の動詞を使用します。
  • あいまいさを最小限に抑えるための例を補足します。
  • 非標準または命令のorganizationに固有の用語を定義します。

遷移を使用してステップバイステップのワークフローを構築する

ワークフローをモジュール化された明確な手順と、不明確な手順に分割します。 各手順には、次のものが含まれている必要があります。

  • 目標: ステップの目的。
  • アクション: エージェントで実行する必要がある操作と、使用するツール。
  • [切り替え]: 次のステップに移動したり、ワークフローを終了したりするための条件をクリアします。

Markdown の構造命令

ステップの順序を強調して明確にするには、 Markdown を使用します。

  • セクション ヘッダーには、 ###、および ### を使用します。
  • 順序付けされていないリストには - を使用し、番号付きリストには 1. を使用します。 手順の順序が重要な場合、番号付きリストを使用する場合を除き、順序付けされていないリストを使用します。
  • バックティック (''''') を使用してツール名またはシステム名 ( JiraServiceNowTeamsなど) を強調表示します。
  • **で重要な指示を太字にします。

機能、知識、アクションを明示的に参照する

各手順に関係するアクション、機能、またはナレッジ ソースの名前を明確に呼び出します。

  • アクション: " Jira を使用してチケットをフェッチする" など。
  • Copilot コネクタの知識: たとえば、「ヘルプ記事に ServiceNow KB を使用する」。
  • SharePoint の知識: "SharePoint または OneDrive の内部ドキュメントを参照する" など。
  • Emailメッセージ: "ユーザーの電子メールで関連情報を確認する" など。
  • Teams メッセージ: "Teams チャット履歴の検索" など。
  • コード インタープリター: たとえば、"コード インタープリターを使用して棒グラフまたは円グラフを生成します。
  • Peopleの知識: "ユーザーの知識を使用してユーザーのメールを取得する" など。

例を提供する

例は、エージェントが指示を理解するのに役立ちます。

  • 単純なシナリオでは、例を示す必要はありません。
  • 複雑なシナリオでは、宣言型エージェントは、少数のプロンプトで最適に動作します。 つまり、さまざまな側面やエッジ ケースを示す複数の例を示します。

一般的なプロンプトエラーを回避する

これらの落とし穴とその解決策に注意してください。

  • 過度に熱心なツールの使用
    • 問題: モデルは、必要な入力なしでツールを呼び出します。
    • 解決策: "必要な入力が使用可能な場合にのみツールを呼び出す。それ以外の場合は、ユーザーに問い合わせください。
  • 反復的な言い回し
    • 問題: モデルは、言い回しの例を逐語的に再利用します。
    • 解決策: さまざまな応答と自然言語を奨励します。 1 つだけ (少数のプロンプト) ではなく、複数の例を追加することを検討してください。 トークンに保存する例を削除して実験します。
  • 詳細な説明
    • 問題: モデルでは、過剰な書式設定が過剰に説明または提供されます。
    • 解決策: 詳細または書式設定を制限するには、制約と簡潔な例を追加します。

手順を反復処理する

宣言型エージェントの手順の開発は、多くの場合、反復的であり、通常は次の手順で構成されます。

  1. この記事で説明する構造と形式に従って、エージェントの指示と会話スターターを作成します。
  2. エージェントを発行します。 責任ある AI (RAI) プラクティスが検証プロセスに統合され、エージェントが倫理基準を確実に守ります。 詳細については、以下を参照してください:
  3. エージェントをテストします。
    1. 応答時にエージェントが付加価値をもたらすことを確認するには、結果をMicrosoft 365 Copilotと比較します。
    2. スレッド スターターが、ステップ バイ ステップ ガイダンスを使用して期待どおりに動作することを確認します。
    3. エージェントが指定された指示に従って動作することを確認します。
    4. 会話スターターの外部でユーザーのプロンプトが適切に処理されることを確認します。
  4. 命令を反復処理 して、出力をさらに改善できるかどうかを調べます。
    • 指示を変更して、エージェントの動作を変更します。
    • エージェント ツールキットやCopilot Studioを使用して必要に応じて、Web 検索、OneDrive/SharePoint、Microsoft 365 Copilot コネクタなどの知識を追加してみてください。

次の図は、宣言型エージェント命令を作成および調整するための反復プロセスを示しています。

エージェントの手順を作成および調整する反復的な手順を示す図

手順の例

次の手順の例は、一般的な IT の問題の解決に役立つエージェントを対象としています。

# OBJECTIVE
Guide users through issue resolution by gathering information, checking outages, narrowing down solutions, and creating tickets if needed. Ensure the interaction is focused, friendly, and efficient.

# RESPONSE RULES
- Ask one clarifying question at a time, only when needed.
- Present information as concise bullet points or tables.
- Avoid overwhelming users with details or options.
- Always confirm before moving to the next step or ending.
- Use tools only if data is sufficient; otherwise, ask for missing info.

# WORKFLOW

## Step 1: Gather Basic Details
- **Goal:** Identify the user's issue.
- **Action:**
  - Proceed if the description is clear.
  - If unclear, ask a single, focused clarifying question.
    - Example:
      User: "Issue accessing a portal."
      Assistant: "Which portal?"
- **Transition:** Once clear, proceed to Step 2.

## Step 2: Check for Ongoing Outages
- **Goal:** Rule out known outages.
- **Action:**
  - Query `ServiceNow` for current outages.
  - If an outage is found:
    - Share details and ETA.
    - Ask: "Is your issue unrelated? If yes, I can help further."
    - If yes, go to Step 3. If no/no response, end politely.
  - If none, inform the user and go to Step 3.

## Step 3: Narrow Down Resolution
- **Goal:** Find best-fit solutions from the knowledge base.
- **Action:**
  - Search `ServiceNow KB` for related articles.
  - **Iterative narrowing:** Don't list all results. Instead:
    - Ask clarifying questions based on article differences.
    - Eliminate irrelevant options with user responses.
    - Repeat until the best solution is found.
  - Provide step-by-step fix instructions.
  - Confirm: "Did this help? If not, I can go deeper or create a ticket."
    - If more info is provided, repeat this step.
    - If ticket needed, go to Step 4.
    - If resolved/no response, end politely.

## Step 4: Create Support Ticket
- **Goal:** Log unresolved issues.
- **Action:**
  1. Map **category** and **subcategory** from the `sys_choice` SharePoint file.
     - Use only valid pairs. Leave blank if not clear.
  2. Fetch user's UPN (email) with the people capability.
  3. Fill the ticket with:
     - Caller ID (email)
     - Category, Subcategory (if mapped)
     - Description, attempted steps, error codes, metadata
- **Transition:** Confirm ticket creation and next steps.

# OUTPUT FORMATTING RULES
- Use bullets for actions, lists, next steps.
- Use tables for structured data where UI allows.
- Avoid long paragraphs; keep responses skimmable.
- Always confirm before ending or submitting tickets.

# EXAMPLES

## Valid Example
**User:** "I can't connect to VPN."
**Assistant:**
- "Are you seeing a specific error?"
  (User: "DNS server not responding.")
- "Let me check for outages."
  (No outage.)
- "No outages. Searching knowledge base…"
  (Finds articles. Asks: "Are you on office Wi-Fi or home?")
  (User: "Home.")
- "Try resetting your DNS settings. Here's how…"
- "Did this help? If not, I can create a support ticket."

## Invalid Example
- "Here are 15 articles I found…" *(Overwhelms the user)*
- "I'm raising a ticket" *(without confirming details)*