Microsoft Agent Framework をローカルLLMで試してみる その1
シリーズ一覧
一覧
Microsoft Agent Framework をローカルLLMで試してみる その1
Microsoft Agent Framework をローカルLLMで試してみる その2
Microsoft Agent Framework をローカルLLMで試してみる その3(LoggingFactory)
Microsoft Agent Framework をローカルLLMで試してみる その4(Tool)
Microsoft Agent Framework をローカルLLMで試してみる その5(AIFunction)
Microsoft Agent Framework をローカルLLMで試してみる その6(ChatHistoryProvider)
Microsoft Agent Framework をローカルLLMで試してみる その7(ChatHistoryProvider)
Microsoft Agent Framework をローカルLLMで試してみる その8(ChatHistoryProvider)
Microsoft Agent Framework をローカルLLMで試してみる その9(AIContextProvider)
Microsoft Agent Framework をローカルLLMで試してみる その10(AIContextProvider)
Microsoft Agent Framework をローカルLLMで試してみる その11(AIContextProviderで簡易RAG)
Microsoft Agent Framework をローカルLLMで試してみる その12(Structured Output)
Microsoft Agent Framework をローカルLLMで試してみる その13(ミドルウェア)
はじめに
Microsoft Agent Frameworkが遂にVersion 1.0.0としてリリースされたのでローカルLLMで動きを確認してみます。
Microsoft Agent Frameworkの導入
環境
- Visual Studio 2026
- .NET 10 SDK
- LM Studio
- GPT-OSS:20b
- Microsoft Agent Framework Ver 1.0.0
Microsoft Agent Frameworkのインストール
以下の手順でインストールを行います。
- Visual Studioを開きます。
- 「ツール」メニューから「NuGet パッケージ マネージャー」を選択し、「ソリューションの NuGet パッケージの管理」をクリックします。
- 「参照」タブで「Microsoft.Agents」を検索します。
- Agent Frameworkでは検索結果に出てこないので注意
- 「Microsoft.Agents」パッケージを選択し、「インストール」をクリックします。
- Microsoft.Agents.AI.Abstractions
- Microsoft.Agents.AI.OpenAI
- Microsoft.Agents.AI
簡単なエージェントの作成
実装
using Microsoft.Extensions.AI;
using OpenAI;
using System.ClientModel;
using Microsoft.Agents.AI;
//LM Studioの接続設定
const string lmStudioUrl = "http://localhost:1234/v1";
const string modelName = "openai/gpt-oss-20b";//私の環境ではopenaiをつけていますが通常は「gpt-oss-20b」指定で動作するかと思います。
const string dummyApiKey = "sk-dummy";
var clientOptions = new OpenAIClientOptions
{
Endpoint = new Uri(lmStudioUrl)
};
//OpenAI互換クライアントの作成
var openAIClient = new OpenAIClient(
new ApiKeyCredential(dummyApiKey),
clientOptions
);
var openAIChatClient = openAIClient.GetChatClient(modelName);
IChatClient chatClient = openAIChatClient.AsIChatClient();
//AI Agentの作成
AIAgent agent = chatClient.AsAIAgent();
//セッションの作成
AgentSession session = await agent.CreateSessionAsync();
//プロンプトの送信
AgentResponse response = await agent.RunAsync("こんにちは!",session);
//レスポンスの表示
Console.WriteLine("AI Agentの応答:");
Console.WriteLine(response);
//プロンプトの送信2回目
response = await agent.RunAsync("調子はどう?", session);
//レスポンスの表示2回目
Console.WriteLine("AI Agentの応答2回目:");
Console.WriteLine(response);
実行結果
AI Agentの応答:
こんにちは!何かお手伝いできることがありますか?お気軽にどうぞ。
AI Agentの応答2回目:
おかげさまで順調です!あなたはいかがですか?何か気になることや質問があれば、遠慮なく教えてくださいね。
解説
- AIAgentの作成
//LM Studioの接続設定
const string lmStudioUrl = "http://localhost:1234/v1";
const string modelName = "openai/gpt-oss-20b";
const string dummyApiKey = "sk-dummy";
var clientOptions = new OpenAIClientOptions
{
Endpoint = new Uri(lmStudioUrl)
};
//OpenAI互換クライアントの作成
var openAIClient = new OpenAIClient(
new ApiKeyCredential(dummyApiKey),
clientOptions
);
var openAIChatClient = openAIClient.GetChatClient(modelName);
IChatClient chatClient = openAIChatClient.AsIChatClient();
//AI Agentの作成
AIAgent agent = chatClient.AsAIAgent();
- OpenAI互換クライアントを使用して、AIAgentを作成します。
- 今回はLM StudioのOpenAI互換APIを使用しているため、OpenAIClientを作成し、そこからIChatClientを取得してAIAgentを作成しています。
- AIAgentはAIエージェントの基本となるabstractクラスでエージェントへのリクエストや会話管理のためのコア機能を提供しています。
- セッションの作成
//セッションの作成
AgentSession session = await agent.CreateSessionAsync();
-
AgentSessionは会話コンテキストの保持に使用するabstractクラスです。 - AIAgentクラスで
CreateSessionAsync()を呼び出すと、AgentSessionの具体的な実装が生成されます。 - いわゆるチャット履歴として扱えますがAIAgentクラスのChatHistoryProviderの実装次第で様々な形態のセッション管理が可能です。
- ユーザーチャットの送信
//プロンプトの送信
AgentResponse response = await agent.RunAsync("こんにちは!",session);
- 第1引数にユーザーチャットを文字列で渡します。
- ロールはユーザーチャットとして自動的に設定されます。
- 第2引数としてセッションを渡すことで、会話のコンテキストを維持したままプロンプトを送信できます。
- セッションを指定しない場合は単体のプロンプトとして処理され、会話の履歴は保持されません。
- 結果はAgentResponseとして返ってきます。
- AIAgentの応答の表示
//レスポンスの表示
Console.WriteLine("AI Agentの応答:");
Console.WriteLine(response);
- AgentResponseのMessagesプロパティには、エージェントからの応答が複数のメッセージとして格納されます。
- 今回は単純な実行なのでループは使わずにConsole.WriteLine()で確認しています。
まとめ
Microsoft Agent Frameworkを使用して、ローカルLLMで簡単なエージェントを作成し、会話のやり取りを行うことができました。AIAgentクラスとAgentSessionクラスを活用することで、会話のコンテキストを維持しながらプロンプトを送信し、エージェントからの応答を受け取ることができます。
次の記事ではAIAgentクラスをより深く掘り下げて、プロンプトのカスタマイズや会話管理の方法について解説していこうと思います。
Discussion