今回はMicrosoft.Extensions.AIからOllama(Phi-4)を使用する方法についてお届けします。
前回はMicrosoft.Extensions.AIからAzure OpenAIを利用する方法を紹介しました。今回はローカル環境でAIモデルを管理するツール「Ollama」を使用して、マイクロソフトの最新AIモデル「Phi-4」を利用する方法を確認してみます。
Ollamaとは?
Ollamaは小規模および大規模言語モデルをローカル環境で動作させるためのツールです。Metaが開発しているLlamaや、マイクロソフトが開発しているPhiなど各種AIモデルをローカル環境で実行することができます。
使ってみる
Ollamaの利用準備
公式サイトからローカル環境で使用しているOSの種類にあわせたインストーラをダウンロードします。

インストールが完了した後にターミナルを起動してollama
コマンドを入力し、Ollamaが利用可能か確認しておきます。

Phi-4モデルのダウンロード
ollama pull
コマンドを入力してPhi-4モデルをダウンロードします。

ダウンロードが完了した後にollama run
コマンドを入力してPhi-4モデルを起動します。試しに「こんにちは!」と入力すると以下のようにPhi-4モデルから回答されます。

これでOllamaでPhi-4モデルを使う準備は完了です。
アプリケーションの作成
Visual Studioでコンソールアプリケーションを作成します。

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

Program.csを以下のように更新します。Microsoft.Extensions.AI
のIChatClient
インターフェイスを使用してOllamaのクライアントOllamaChatClient
クラスを使用します。Ollamaはローカルサーバーを起動しており、http://localhost:11434
を設定してAIモデルを利用することができます。
using Microsoft.Extensions.AI;
Console.WriteLine("Microsoft.Extensions.AIを利用してOllama(Phi-4)を試してみる");
IChatClient client =
new OllamaChatClient(new Uri("http://localhost:11434/"), "phi4");
GetResponseAsync
メソッドでチャットメッセージを送信して応答を受け取ります。
Console.WriteLine(await client.GetResponseAsync("ActiveReportsについて200文字程度で簡単に教えてください。"));

応答をストリーミングで受け取る場合はGetStreamingResponseAsync
メソッドを使用します。
await foreach (var update in client.GetStreamingResponseAsync("ActiveReportsについて簡単に教えてください。"))
{
Console.Write(update);
}
チャットを行う場合は、ChatMessage
クラスのリストを使用します。ロールやチャット履歴を使用したメッセージを渡すことが可能です。
List<ChatMessage> chatHistory = new()
{
new ChatMessage(ChatRole.System, """
あなたは.NETアプリケーション開発のスペシャリストです。
""")
};
while (true)
{
// ユーザーからの入力を受け取る
Console.WriteLine("Your prompt:");
var userPrompt = Console.ReadLine();
chatHistory.Add(new ChatMessage(ChatRole.User, userPrompt));
// AIの応答をストリーミングで受け取り、チャット履歴に追加
Console.WriteLine("AI Response:");
var response = "";
await foreach (var item in
client.GetStreamingResponseAsync(chatHistory))
{
Console.Write(item.Text);
response += item.Text;
}
chatHistory.Add(new ChatMessage(ChatRole.Assistant, response));
Console.WriteLine();
}
さいごに
今回はOllama(Phi-4モデル)をMicrosoft.Extensions.AIから利用する方法を確認してみました。Ollamaを使うことでシンプルな手順でローカル環境でAIモデルを動作させることができます。Microsoft.Extensions.AIを使用することでAzure OpenAIを利用する手順や実装と大きな変更がないことは、ローカルおよびクラウド環境で各種AIモデルを使い分けたい場合に非常に大きなメリットかと思います。