Skip to main content

Microsoft Agent Framework の統合

          Copilot SDKを Microsoft Agent Framework 内のエージェント プロバイダーとして使用して、他の AI プロバイダーと共にマルチエージェント ワークフローを構築および調整します。

この機能を使用できるユーザーについて

GitHub Copilot SDK は、すべての Copilot プランで使用できます。

メモ

          Copilot SDK は現在 パブリック プレビューです。 機能と可用性は変更される場合があります。
          [
          Copilot SDK Microsoft Agent Framework](https://devblogs.microsoft.com/semantic-kernel/build-ai-agents-with-github-copilot-sdk-and-microsoft-agent-framework/) (MAF) 内のエージェント プロバイダーとして使用して、Azure OpenAI、Anthropic、およびその他のプロバイダーと共にマルチエージェント ワークフローを作成します。

概要

Microsoft Agent Framework は、セマンティック カーネルと AutoGen の統合後継です。 これは、AI エージェントを構築、調整、デプロイするための標準インターフェイスを提供します。 専用統合パッケージを使用すると、 Copilot SDK クライアントをファースト クラスの MAF エージェントとしてラップできます。フレームワーク内の他のエージェント プロバイダーと交換できます。

概念説明
Microsoft Agent Framework.NET および Python での単一エージェントおよびマルチエージェント オーケストレーション用のオープン ソース フレームワーク
エージェント プロバイダーエージェントを利用するバックエンド (Copilot、Azure OpenAI、Anthropic など)
Orchestrator順次ワークフロー、同時実行ワークフロー、またはハンドオフ ワークフローでエージェントを調整する MAF コンポーネント
A2A プロトコルフレームワークでサポートされているエージェント間通信標準

メモ

MAF 統合パッケージは、.NET と Python で使用できます。 TypeScript と Goは、 Copilot SDK を直接使用します。標準の SDK API には、ツールの呼び出し、ストリーミング、カスタム エージェントが用意されています。

前提条件

開始する前に、以下の項目があることを確認します:

  • 選択した言語で動作する Copilot SDK セットアップ。 「Copilot SDK のはじめに」を参照してください。
  •         GitHub Copilot サブスクリプション (個人、ビジネス、エンタープライズ)。
    
  •         Copilot CLI SDK のバンドルされた CLI により、インストールまたは利用できます。
    

Installation

MAF 統合パッケージと共に Copilot SDK をインストールします。

dotnet add package GitHub.Copilot.SDK
dotnet add package Microsoft.Agents.AI.GitHub.Copilot --prerelease

Python の例については、microsoft-agent-framework リポジトリのgithub/copilot-sdk記事を参照してください。

基本的な使用方法

          Copilot SDK クライアントを MAF エージェントとして 1 回のメソッド呼び出しでラップします。 結果のエージェントはフレームワークの標準インターフェイスに準拠しており、MAF エージェントが必要な場所であればどこでも使用できます。
using GitHub.Copilot.SDK;
using Microsoft.Agents.AI;

await using var copilotClient = new CopilotClient();
await copilotClient.StartAsync();

// Wrap as a MAF agent
AIAgent agent = copilotClient.AsAIAgent();

// Use the standard MAF interface
string response = await agent.RunAsync("Explain how dependency injection works in ASP.NET Core");
Console.WriteLine(response);

Python の例については、microsoft-agent-framework リポジトリのgithub/copilot-sdk記事を参照してください。

カスタム ツールの追加

カスタム関数ツールを使用して Copilot エージェントを拡張します。 標準 Copilot SDK で定義されたツールは、エージェントが MAF 内で実行されるときに自動的に使用できます。

using GitHub.Copilot.SDK;
using Microsoft.Extensions.AI;
using Microsoft.Agents.AI;

// Define a custom tool
AIFunction weatherTool = AIFunctionFactory.Create(
    (string location) => $"The weather in {location} is sunny with a high of 25°C.",
    "GetWeather",
    "Get the current weather for a given location."
);

await using var copilotClient = new CopilotClient();
await copilotClient.StartAsync();

// Create agent with tools
AIAgent agent = copilotClient.AsAIAgent(new AIAgentOptions
{
    Tools = new[] { weatherTool },
});

string response = await agent.RunAsync("What's the weather like in Seattle?");
Console.WriteLine(response);

MAF ツールと共に、 Copilot SDKのネイティブ ツール定義を使用することもできます。

import { CopilotClient, DefineTool } from "@github/copilot-sdk";

const getWeather = DefineTool({
    name: "GetWeather",
    description: "Get the current weather for a given location.",
    parameters: { location: { type: "string", description: "City name" } },
    execute: async ({ location }) => `The weather in ${location} is sunny, 25°C.`,
});

const client = new CopilotClient();
const session = await client.createSession({
    model: "gpt-4.1",
    tools: [getWeather],
    onPermissionRequest: async () => ({ kind: "approved" }),
});

await session.sendAndWait({ prompt: "What's the weather like in Seattle?" });

警告

常にonPermissionRequestを返すように{ kind: "approved" }を設定すると、承認なしでプロンプト挿入を許可できます。 運用環境で使用する場合は、アクセス許可を付与する前に、要求されたツールとそのパラメーターを評価するポリシー ベースの承認を実装します。

Python の例については、microsoft-agent-framework リポジトリのgithub/copilot-sdk記事を参照してください。

マルチエージェント ワークフロー

MAF 統合の主な利点は、調整されたワークフローで他のエージェント プロバイダーと共に Copilot を作成することです。 フレームワークの組み込みのオーケストレーターを使用して、異なるエージェントが異なる手順を処理するパイプラインを作成します。

シーケンシャル ワークフロー

エージェントを 1 つずつ実行し、出力を次のエージェントに渡します。

using GitHub.Copilot.SDK;
using Microsoft.Agents.AI;
using Microsoft.Agents.AI.Orchestration;

await using var copilotClient = new CopilotClient();
await copilotClient.StartAsync();

// Copilot agent for code review
AIAgent reviewer = copilotClient.AsAIAgent(new AIAgentOptions
{
    Instructions = "You review code for bugs, security issues, and best practices. Be thorough.",
});

// Azure OpenAI agent for generating documentation
AIAgent documentor = AIAgent.FromOpenAI(new OpenAIAgentOptions
{
    Model = "gpt-4.1",
    Instructions = "You write clear, concise documentation for code changes.",
});

// Compose in a sequential pipeline
var pipeline = new SequentialOrchestrator(new[] { reviewer, documentor });

string result = await pipeline.RunAsync(
    "Review and document this pull request: added retry logic to the HTTP client"
);
Console.WriteLine(result);

Python の例については、microsoft-agent-framework リポジトリのgithub/copilot-sdk記事を参照してください。

同時実行ワークフロー

複数のエージェントを並列で実行し、その結果を集計します。

using GitHub.Copilot.SDK;
using Microsoft.Agents.AI;
using Microsoft.Agents.AI.Orchestration;

await using var copilotClient = new CopilotClient();
await copilotClient.StartAsync();

AIAgent securityReviewer = copilotClient.AsAIAgent(new AIAgentOptions
{
    Instructions = "Focus exclusively on security vulnerabilities and risks.",
});

AIAgent performanceReviewer = copilotClient.AsAIAgent(new AIAgentOptions
{
    Instructions = "Focus exclusively on performance bottlenecks and optimization opportunities.",
});

// Run both reviews concurrently
var concurrent = new ConcurrentOrchestrator(new[] { securityReviewer, performanceReviewer });

string combinedResult = await concurrent.RunAsync(
    "Analyze this database query module for issues"
);
Console.WriteLine(combinedResult);

ストリーミング応答

対話型アプリケーションを構築するときに、エージェントの応答をストリーミングしてリアルタイムの出力を表示します。 MAF 統合では、 Copilot SDKのストリーミング機能が保持されます。

using GitHub.Copilot.SDK;
using Microsoft.Agents.AI;

await using var copilotClient = new CopilotClient();
await copilotClient.StartAsync();

AIAgent agent = copilotClient.AsAIAgent(new AIAgentOptions
{
    Streaming = true,
});

await foreach (var chunk in agent.RunStreamingAsync("Write a quicksort implementation in C#"))
{
    Console.Write(chunk);
}
Console.WriteLine();

MAF を使用せずに、 Copilot SDK を介して直接ストリーミングすることもできます。

import { CopilotClient } from "@github/copilot-sdk";

const client = new CopilotClient();
const session = await client.createSession({
    model: "gpt-4.1",
    streaming: true,
    onPermissionRequest: async () => ({ kind: "approved" }),
});

session.on("assistant.message_delta", (event) => {
    process.stdout.write(event.data.delta ?? "");
});

await session.sendAndWait({ prompt: "Write a quicksort implementation in TypeScript" });

Python の例については、microsoft-agent-framework リポジトリのgithub/copilot-sdk記事を参照してください。

構成参照

MAF エージェントのオプション

財産タイプ説明
Instructions文字列エージェントのシステム プロンプト
ToolsAIFunction[] または リストエージェントで使用できるカスタム関数ツール
Streamingブール (bool)ストリーミング応答を有効にする
Model文字列既定のモデルをオーバーライドする

Copilot SDK オプション (パススルー)

基になる SessionConfig クライアントを作成するときに、すべての標準Copilot オプションを使用できます。 MAFラッパーは内部でSDKに処理を委任します。

SDK 機能MAF のサポート
カスタム ツール (DefineToolAIFunctionFactory)MAFツールと統合する
MCP サーバーSDK クライアントで構成済み
カスタムエージェントとサブエージェントCopilot エージェント内で使用可能
無限セッションSDK クライアントで構成済み
モデルの選択エージェントごとまたは呼び出しごとにオーバーライド可能
ストリーミング完全デルタイベントのサポート

ベスト プラクティス

適切な統合レベルを選択する

調整されたワークフローで他のプロバイダーと Copilot を作成する必要がある場合は、MAF ラッパーを使用します。 アプリケーションで Copilot のみを使用する場合、スタンドアロン SDK の方が簡単で、完全に制御できます。

// Standalone SDK — full control, simpler setup
import { CopilotClient } from "@github/copilot-sdk";

const client = new CopilotClient();
const session = await client.createSession({
    model: "gpt-4.1",
    onPermissionRequest: async () => ({ kind: "approved" }),
});
const response = await session.sendAndWait({ prompt: "Explain this code" });

エージェントのフォーカスを維持する

マルチエージェント ワークフローを構築する場合は、各エージェントに明確な手順で特定のロールを付与します。 重複する責任を回避する:

// Too vague — overlapping roles
const agents = [
    { instructions: "Help with code" },
    { instructions: "Assist with programming" },
];

// Focused — clear separation of concerns
const agents = [
    { instructions: "Review code for security vulnerabilities. Flag SQL injection, XSS, and auth issues." },
    { instructions: "Optimize code performance. Focus on algorithmic complexity and memory usage." },
];

オーケストレーション レベルでエラーを処理する

エラー処理でエージェント呼び出しをラップします。特に、1 つのエージェントのエラーによってパイプライン全体がブロックされるべきではないマルチエージェント ワークフローでは、次のようになります。

try
{
    string result = await pipeline.RunAsync("Analyze this module");
    Console.WriteLine(result);
}
catch (AgentException ex)
{
    Console.Error.WriteLine($"Agent {ex.AgentName} failed: {ex.Message}");
    // Fall back to single-agent mode or retry
}

詳細については、次を参照してください。

  •         [AUTOTITLE](/copilot/how-tos/copilot-sdk/sdk-getting-started)
    
  •         [Microsoft Agent Framework のドキュメント](https://learn.microsoft.com/en-us/agent-framework/agents/providers/github-copilot)
    
  •         [ブログ: GitHub Copilot SDK と Microsoft Agent Framework を使用して AI エージェントを構築する](https://devblogs.microsoft.com/semantic-kernel/build-ai-agents-with-github-copilot-sdk-and-microsoft-agent-framework/)