今回はMicrosoft Agent Frameworkを使用してAIエージェントを作成する方法についてお届けします。
Microsoft Agent Frameworkとは?
Microsoft Agent Frameworkは、2025年10月1日にプレビュー公開されたAIエージェントとマルチエージェント用のワークフローを構築するためのオープンソース開発キットで、.NETおよびPythonに対応しています。
Microsoft Agent Frameworkでは、AIアプリケーションに求められる以下の2つの機能を実装できるようになっています。
- AIエージェント
LLMを使用してユーザーからの入力を処理し、ツールと MCP サーバーを呼び出してアクションを実行し応答を生成するエージェントを作成 - ワークフロー
複数のエージェントと関数を接続して複雑なマルチステップのタスクを実行するワークフローを作成
今まではSemantic Kernel(AIエージェントの開発用フレームワーク)とAutoGen(複数のAIエージェントを連携してタスクを処理するためのオーケストレーションの開発用フレームワーク)が提供されていましたが、Microsoft Agent Frameworkはこの2つを統合したフレームワークという位置付けになっています。
本記事では、Microsoft Agent Frameworkを使用して .NETアプリケーションにAIエージェントを実装する方法ついて紹介します。
AIエージェントを作成する
前提条件
アプリケーションの作成
Visual Studioでコンソールアプリケーションを作成します。

NuGetパッケージマネージャーから以下のパッケージをインストールします。
- Microsoft.Agents.AI.OpenAI
- Azure.AI.OpenAI
- Azure.Identity

Program.csに以下のコードを追加します。ChatClientAgent
クラスを使用して、IChatClient
インターフェースに基づくエージェントを作成します。最後にGetResponseAsync
メソッドでチャットメッセージを送信して応答を受け取ります。
using Azure.AI.OpenAI;
using Azure.Identity;
using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;
Console.WriteLine("Microsoft Agent Framework Quick Start");
// Azure OpenAIクライアントの作成
var client = new AzureOpenAIClient(
new Uri("https://mescius-azure-openai-test-1.openai.azure.com/"),
new DefaultAzureCredential());
// チャットクライアントの取得
var chatClient = client.GetChatClient("mescius-gpt-5-mini-test")
.AsIChatClient();
// エージェントの作成
var agent = new ChatClientAgent(
chatClient,
instructions: "あなたはダジャレを話すのが得意です。");
// エージェントの実行
Console.WriteLine(await agent.RunAsync("私に面白いダジャレを3つ教えてください。"));
実行してみる
RunAsync
メソッドでエージェントを実行してチャットメッセージを送信し、応答を受け取ります。

応答をストリーミングで受け取る場合は、RunStreamingAsync
メソッドを使用します。
// ストリーミングでエージェントの実行
await foreach (var update in agent.RunStreamingAsync("私に面白い駄洒落を3つ教えてください。"))
{
Console.WriteLine(update);
}
チャット履歴を使ってみる
エージェントと複数回やり取りを実行する場合にチャット履歴を保持しておきたい場合があります。このような時にはGetNewThread
メソッドを使用してAgentThread
オブジェクトを作成します。RunAsync
およびRunStreamingAsync
メソッドにこのオブジェクトを渡して使用します。
// エージェントの作成
var agent = new ChatClientAgent(
chatClient,
instructions: "あなたは英語が得意です。");
AgentThread thread = agent.GetNewThread();
Console.WriteLine(await agent.RunAsync(
"私にAで始まる単語を3つ教えてください。",
thread));
Console.WriteLine(await agent.RunAsync(
"先ほど教えていただいた単語の他に、Aで始まる単語をさらに3つ教えてください。",
thread));
Console.WriteLine(await agent.RunAsync(
"先ほど教えていただいた単語の他に、Aで始まる単語をさらに3つ教えてください。",
thread));
エージェントは新しい入力に応答するときに、AgentThread
オブジェクトで保持されたチャット履歴の以前の入力と応答メッセージを参照できるようになります。

関数ツールを使ってみる
エージェントから呼び出せる関数ツールを実装してみます。指定した都市の現在時刻を取得するGetCurrentTime
メソッドを準備します。このメソッドを関数ツールに変換するには、AIFunctionFactory.Create
メソッドを使用してAIFunction
インスタンスを作成します。エージェントを作成する際にこの関数ツールを渡して利用します。
[Description("指定した都市の現在時刻を取得")]
static string GetCurrentTime([Description("現在時刻を取得する都市名")] string city)
{
//return $"{city}の時刻は{DateTime.Now.Hour}:{DateTime.Now.Minute}です。";
// 都市名とタイムゾーンIDの対応表
var cityTimeZones = new Dictionary<string, string>
{
{ "東京", "Tokyo Standard Time" },
{ "ロサンゼルス", "Pacific Standard Time" },
{ "ロンドン", "GMT Standard Time" },
{ "ニューヨーク", "Eastern Standard Time" },
{ "シドニー", "AUS Eastern Standard Time" }
};
if (cityTimeZones.TryGetValue(city, out string? timeZoneId))
{
// タイムゾーンIDからタイムゾーン情報を取得
var timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(timeZoneId);
var currentTime = TimeZoneInfo.ConvertTime(DateTime.UtcNow, timeZoneInfo);
return $"{city}の時刻は{currentTime:HH:mm}です。";
}
else
{
return $"{city}のタイムゾーンが見つかりません。";
}
}
// エージェントの作成
var agent = new ChatClientAgent(
chatClient,
instructions: "あなたは優秀なアシスタントです",
tools: [AIFunctionFactory.Create(GetCurrentTime)]);
// エージェントの実行
Console.WriteLine(await agent.RunAsync("ニューヨークは何時ですか?"));
実行すると、エージェントは関数ツールを使用して指定した都市の現在時刻を取得して応答を返します。

さいごに
今回はMicrosoft Agent Frameworkを使用してAIエージェントを作成する方法を確認してみました。今回試してみたチャット履歴や関数ツールなどの機能が非常に分かりやすいコードで実装することが可能になっている印象を受けました。まだ紹介していないワークフロー機能などその他の機能についても、今後のブログ記事で紹介していきたいと思います。