Microsoft 365 Copilot API クライアント ライブラリ

Microsoft 365 Copilot API クライアント ライブラリは、Copilot API にアクセスする高品質で効率的で回復力のある AI ソリューションの開発を容易にするように設計されています。 これらのライブラリには、サービス ライブラリとコア ライブラリが含まれます。

サービス ライブラリは、Microsoft 365 Copilot API を操作するための豊富な型指定されたエクスペリエンスを提供するモデルと要求ビルダーを提供します。

コア ライブラリには、Copilot API との対話を容易にする高度な機能が用意されています。 これらの機能には、再試行処理、セキュリティで保護されたリダイレクト、透過的な認証、ペイロード圧縮の埋め込みサポートが含まれます。 これらの機能は、複雑さを追加することなく、Copilot API との AI ソリューションの通信の品質を高めるのに役立ちます。 さらに、コア ライブラリは、コレクションを介したページングやバッチ要求の作成などの日常的なタスクを簡略化します。

サポートされている言語

Copilot API クライアント ライブラリは現在、次の言語で使用できます。

プレビュー状態のクライアント ライブラリ

Copilot API クライアント ライブラリは、最初にリリースされたとき、または大幅な更新後にプレビュー状態になる可能性があります。 ソリューションでバージョン 1.0 と Copilot API のベータ 版のどちらを使用しているかに関係なく、運用環境のソリューションでこれらのライブラリのプレビュー リリースを使用しないでください。

クライアント ライブラリのサポート

Copilot API ライブラリは、GitHub 上のオープンソース プロジェクトです。 バグが発生した場合は、[ 問題] タブ の詳細に問題を報告します。共同作成者は、必要に応じて修正プログラムを確認してリリースします。

ライブラリをインストールする

Copilot API クライアント ライブラリは、Microsoft 365 エージェント SDKのモジュールとして含まれています。 これらのライブラリは、GitHub と一般的なプラットフォーム パッケージ マネージャーを使用してプロジェクトに含めることができます。

Copilot API .NET クライアント ライブラリをインストールする

Copilot API .NET クライアント ライブラリは、次の NuGet パッケージで使用できます。

  • Microsoft.Agents.M365Copilot - v1.0 エンドポイントにアクセスするためのモデルと要求ビルダーが含まれています。 Microsoft.Agents.M365Copilot は、Microsoft.Agents.M365Copilot.Core に依存しています。 同じ依存関係構造は、TypeScript ライブラリと Python ライブラリの両方にも適用されます。
  • Microsoft.Agents.M365Copilot.Beta - ベータ エンドポイントにアクセスするためのモデルと要求ビルダーが含まれています。 Microsoft.Agents.M365Copilot.Beta は、Microsoft.Agents.M365Copilot.Core に依存しています。 同じ依存関係構造は、TypeScript ライブラリと Python ライブラリの両方にも適用されます。
  • Microsoft.Agents.M365Copilot.Core - Copilot API を呼び出すコア ライブラリ。

Microsoft.Agents.M365Copilot パッケージをプロジェクトにインストールするには、 dotnet CLIVisual Studio のパッケージ マネージャー UI、または Visual Studio のパッケージ マネージャー コンソールを使用します。

dotnet CLI

v1.0 エンドポイントの場合:

dotnet add package Microsoft.Agent.M365Copilot

ベータ エンドポイントの場合:

dotnet add package Microsoft.Agent.M365Copilot.Beta

パッケージ マネージャー コンソール

v1.0 エンドポイントの場合:

Install-Package Microsoft.Agent.M365Copilot

ベータ エンドポイントの場合:

Install-Package Microsoft.Agent.M365Copilot.Beta

Copilot API Python クライアント ライブラリをインストールする

Copilot API Python クライアント ライブラリは、Python パッケージ インデックスで使用できます。

v1.0 エンドポイントの場合:

pip install microsoft-agents-m365copilot

ベータ エンドポイントの場合:

pip install microsoft-agents-m365copilot-beta

Copilot API TypeScript クライアント ライブラリをインストールする

Copilot API TypeScript クライアント ライブラリは npm で使用できます。

v1.0 エンドポイントの場合:

npm install @microsoft/agents-m365copilot –save

ベータ エンドポイントの場合:

npm install @microsoft/agents-m365copilot-beta –save

Copilot API クライアントを作成し、API 呼び出しを行う

次のコード例は、サポートされている言語で認証プロバイダーを使用して、Microsoft 365 Copilot API クライアントのインスタンスを作成する方法を示しています。 認証プロバイダーは、アプリケーションのアクセス トークンの取得を処理します。 言語とプラットフォームごとに、さまざまな認証プロバイダーを利用できます。 さまざまな認証プロバイダーは、さまざまなクライアント シナリオをサポートします。 シナリオに適したプロバイダーとオプションの詳細については、「認証プロバイダーの選択」を参照してください。

この例では、取得 API を呼び出す方法も示しています。 この API を呼び出すには、最初に要求オブジェクトを作成してから、要求に対して POST メソッドを実行する必要があります。

クライアント ID は、Azure portalでアプリを登録するときに生成されるアプリ登録 ID です。

using Azure.Identity;
using Microsoft.Agents.M365Copilot;
using Microsoft.Agents.M365Copilot.Models;
using Microsoft.Agents.M365Copilot.Copilot.Retrieval;

var scopes = new[] {"Files.Read.All", "Sites.Read.All"};

// Multi-tenant apps can use "common",
// single-tenant apps must use the tenant ID from the Azure portal
var tenantId = "YOUR_TENANT_ID";

// Value from app registration
var clientId = "YOUR_CLIENT_ID";

// using Azure.Identity;
var deviceCodeCredentialOptions = new DeviceCodeCredentialOptions
{
   ClientId = clientId,
   TenantId = tenantId,
   // Callback function that receives the user prompt
   // Prompt contains the generated device code that user must
   // enter during the auth process in the browser
   DeviceCodeCallback = (deviceCodeInfo, cancellationToken) =>
   {
       Console.WriteLine(deviceCodeInfo.Message);
       return Task.CompletedTask;
   },
};

// https://learn.microsoft.com/dotnet/api/azure.identity.devicecodecredential
var deviceCodeCredential = new DeviceCodeCredential(deviceCodeCredentialOptions);


//Create the client
AgentsM365CopilotServiceClient client = new AgentsM365CopilotServiceClient (deviceCodeCredential, scopes, baseURL);

try
{
  var requestBody = new RetrievalPostRequestBody
  {
      DataSource = RetrievalDataSource.SharePoint,
      QueryString = "What is the latest in my organization?",
      MaximumNumberOfResults = 10
  };

  var result = await client.Copilot.Retrieval.PostAsync(requestBody);
  Console.WriteLine($"Retrieval post: {result}");

  if (result != null)
  {
    Console.WriteLine("Retrieval response received successfully");
    Console.WriteLine("\nResults:");
    Console.WriteLine(result.RetrievalHits.Count.ToString());
    if (result.RetrievalHits != null)
    {
       foreach (var hit in result.RetrievalHits)
       {
         Console.WriteLine("\n---");
         Console.WriteLine($"Web URL: {hit.WebUrl}");
         Console.WriteLine($"Resource Type: {hit.ResourceType}");
         if (hit.Extracts != null && hit.Extracts.Any())
         {
            Console.WriteLine("\nExtracts:");
            foreach (var extract in hit.Extracts)
            {
              Console.WriteLine($"  {extract.Text}");
            }
          }
          if (hit.SensitivityLabel != null)
          {
            Console.WriteLine("\nSensitivity Label:");
            Console.WriteLine($"  Display Name: {hit.SensitivityLabel.DisplayName}");
            Console.WriteLine($"  Tooltip: {hit.SensitivityLabel.Tooltip}");
            Console.WriteLine($"  Priority: {hit.SensitivityLabel.Priority}");
            Console.WriteLine($"  Color: {hit.SensitivityLabel.Color}");
            if (hit.SensitivityLabel.IsEncrypted.HasValue)
            {
              Console.WriteLine($"  Is Encrypted: {hit.SensitivityLabel.IsEncrypted.Value}");
            }
          }
        }
      }
      else
      {
        Console.WriteLine("No retrieval hits found in the response");
      }
  }
}
catch (Exception ex)
{
    Console.WriteLine($"Error making retrieval request: {ex.Message}");
    Console.Error.WriteLine(ex);
}