アダプティブ カードを使用してリッチ応答を返す

完了

エージェントが API プラグインを使用してアクションを使用して応答を返すと、API から情報が取得され、言語モデルを使用して処理されます。 言語モデルは、エージェントの指示に一致する人間に優しい応答を返します。 定義済みの手順またはユーザーの指示に基づいて応答を動的に構築すると、エージェントの柔軟性が高くなります。 たとえば、箇条書きや表として情報を提供するように求めることができます。 ただし、この柔軟性は価格で提供されます。エージェントは、情報を提示する最善の方法を常に理解していない場合があります。

API は通常、構造化データを返すので、エージェントがユーザーに情報を表示する方法を制御できます。 エージェントが API からデータを表示する方法を制御するには、API プラグインでアダプティブ カード テンプレートを定義します。

エージェントが API からのデータを表示するために使用するアダプティブ カード テンプレートを定義するには、API プラグイン定義の応答セマンティクス部分で static_template プロパティを使用します。 次のスニペットは、アダプティブ カード テンプレートの例を示しています。

{
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "type": "AdaptiveCard",
  "version": "1.5",
  "body": [
    {
      "type": "Container",
      "items": [
        {
          "type": "Image",
          "url": "${image_url}",
          "size": "large"
        },
        {
          "type": "TextBlock",
          "text": "${name}",
          "weight": "Bolder"
        },
        {
          "type": "TextBlock",
          "text": "${description}",
          "wrap": true
        },
        {
          "type": "TextBlock",
          "text": "Allergens: ${if(count(allergens) > 0, join(allergens, ', '), 'none')}",
          "weight": "Lighter"
        },
        {
          "type": "TextBlock",
          "text": "**Price:** €${formatNumber(price, 2)}",
          "weight": "Lighter",
          "spacing": "None"
        }
      ]
    }
  ]
}

API 応答のプロパティを参照し、アダプティブ カードテンプレートの一部である ${...} 式に注目してください。 実行時に、エージェントは関数が返すデータを受け取り、指定したテンプレートの上にオーバーレイして、データが格納されたアダプティブ カードを作成します。

API から複数の項目が返されると、エージェントはアダプティブ カードを使用して 1 つの項目を表示します。 引用文献の上にマウス ポインターを置くと、ユーザーにカードが表示されます。

アダプティブ カードを使用した皿情報を含む応答を示す宣言型エージェントのスクリーンショット。

重要

関数のアダプティブ カードを構築するときは、常に 1 つの項目を表示する点に注意してください。 複数の項目を返す関数を実装するときに、1 つの項目のカードを構築するのは最初は直感に反する可能性があります。 エージェントは LLM を使用してユーザーに対する応答を構築しますが、それでも各項目の豊富なプレビューを表示する機能を提供することを望んでいるので、API 応答全体ではなく、1 つの項目のテンプレートを提供する必要があります。

API が 1 つの項目を返すと、エージェントは応答にカードを直接含めることができます。

アダプティブ カードを使用した注文情報を含む応答を示す宣言型エージェントのスクリーンショット。

ヒント

関数で使用するアダプティブ カードを構築する場合、各カード テンプレートを個別のファイルに構築するのが最も便利です。 Adaptive Card Previewer Microsoft 365 Agents Toolkit 拡張機能を使用すると、データ ファイルを作成し、Visual Studio Code で直接カードをプレビューできます。 カードの準備ができたら、その内容を API プラグイン定義ファイルにコピーします。