Microsoft.Extensions.AIを利用してOllama(Phi-4)を試してみる

普段のお仕事に役立つ普遍的なプログラミングTIPSや、業界で注目度が高い最新情報をお届けする「編集部ピックアップ」。
今回は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コマンドを入力し、Ollamaが利用可能か確認しておきます。

Ollamaの利用準備

Phi-4モデルのダウンロード

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

Ollamaの利用準備

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

Ollamaの利用準備

これでOllamaでPhi-4モデルを使う準備は完了です。

アプリケーションの作成

Visual Studioでコンソールアプリケーションを作成します。

アプリケーションの作成

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

  • Microsoft.Extensions.AI
  • Microsoft.Extensions.AI.Ollama
アプリケーションの作成

Program.csを以下のように更新します。Microsoft.Extensions.AIIChatClientインターフェイスを使用して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モデルを使い分けたい場合に非常に大きなメリットかと思います。

\  この記事をシェアする  /