.NET .NET Aspire Community Toolkit Ollama の統合
手記
この統合は .NET.NET Aspire Community Toolkit の一部であり、は .NET.NET Aspire チームによって正式にサポート されていません。
Ollama は、指定されたプロンプトに基づいてテキストを生成するために使用できる、強力なオープン ソース言語モデルです。
.NET
.NET Aspire Ollama 統合では、docker.io/ollama/ollama
コンテナー イメージ を使用して Ollama モデルをホストし、OllamaSharpclientを介してそれらにアクセスする方法が提供されます。
ホスティング統合
Ollama ホスティング統合は、OllamaResource
型として Ollama server をモデル化し、モデルを OllamaModelResource
型として表す AddModel
拡張メソッドを使用して、server にモデルを追加する機能を提供します。
📦 CommunityToolkit を追加するために、これらの型と API にアクセスして、Aspire.Hosting.Ollama NuGet パッケージを アプリ ホスト プロジェクトに含めます。
dotnet add package CommunityToolkit.Aspire.Hosting.Ollama
詳細については、「dotnet パッケージ の追加」または「.NET アプリケーションでのパッケージの依存関係の管理」を参照してください。
Ollama リソースを追加する
アプリ ホスト プロジェクトで、AddOllama
拡張メソッドを使用して Ollama 統合を登録して使用し、Ollama コンテナーをアプリケーション ビルダーに追加します。 その後、AddModel
拡張メソッドを使用して、コンテナーの起動時にモデルをダウンロードして実行するコンテナーに追加できます。
var builder = DistributedApplication.CreateBuilder(args);
var ollama = builder.AddOllama("ollama");
var phi35 = ollama.AddModel("phi3.5");
var exampleProject = builder.AddProject<Projects.ExampleProject>()
.WithReference(phi35);
または、Hugging Face モデル ハブのモデルを使用する場合は、AddHuggingFaceModel
拡張メソッドを使用できます。
var llama = ollama.AddHuggingFaceModel("llama", "bartowski/Llama-3.2-1B-Instruct-GGUF:IQ4_XS");
.NET
.NET Aspire 前の例で示したように、docker.io/ollama/ollama
イメージを使用してコンテナー イメージをアプリ ホストに追加すると、ローカル コンピューターに新しい Ollama インスタンスが作成されます。 詳細については、「コンテナー リソースのライフサイクルの」を参照してください。
LLM をダウンロードする
この統合の Ollama コンテナーが最初に起動すると、構成済みの LLM がダウンロードされます。 このダウンロードの進行状況は、.NET.NET Aspire ダッシュボードのこの統合の State 列に表示されます。
大事な
ダウンロードが完了するまで .NET.NET Aspire オーケストレーション アプリを開いたままにしておきます。それ以外の場合、ダウンロードは取り消されます。
LLM をキャッシュする
Ollama が実行されているコンテナーに 1 つ以上の LLM がダウンロードされ、既定ではこのコンテナーはエフェメラルです。 コンテナーの再起動中に 1 つ以上の LLM を保持する必要がある場合は、WithDataVolume
メソッドを使用してコンテナーにボリュームをマウントする必要があります。
var ollama = builder.AddOllama("ollama")
.WithDataVolume();
var llama = ollama.AddModel("llama3");
使用可能な場合は GPU を使用する
Ollama が実行されているコンテナーに 1 つ以上の LLM がダウンロードされ、既定では、このコンテナーは CPU 上で実行されます。 GPU でコンテナーを実行する必要がある場合は、コンテナー ランタイム引数にパラメーターを渡す必要があります。
var ollama = builder.AddOllama("ollama")
.AddModel("llama3")
.WithContainerRuntimeArgs("--gpus=all");
詳細については、
ホスティング統合の正常性チェック
Ollama ホスティング統合により、Ollama server とモデル リソースの正常性チェックが自動的に追加されます。 Ollama serverの場合、正常性チェックが追加され、Ollama server が実行されていること、および接続を確立できることを確認できます。 Ollama モデル リソースの場合、正常性チェックが追加され、モデルが実行されていることと、モデルが使用可能であることを確認します。つまり、モデルがダウンロードされるまで、リソースは異常としてマークされます。
Open WebUI のサポート
Ollama 統合では、Open WebUI を実行し、Ollama コンテナーと通信するためのサポートも提供されました。
var ollama = builder.AddOllama("ollama")
.AddModel("llama3")
.WithOpenWebUI();
Client 統合
.NET .NET Aspire OllamaSharp 統合の使用を開始するには、📦 CommunityToolkit をインストールします。Aspire.OllamaSharp NuGet パッケージを、clientを使用するプロジェクト、つまり、Ollama clientを使用するアプリケーションのプロジェクトです。
dotnet add package CommunityToolkit.Aspire.OllamaSharp
Ollama client API の追加
client-consuming プロジェクトの Program.cs ファイルで、AddOllamaClientApi
拡張子を呼び出して、依存関係挿入コンテナーを介して使用する IOllamaClientApi
を登録します。 アプリ ホストで指定され、client-consuming プロジェクトで参照されているリソースが OllamaModelResource
の場合、AddOllamaClientApi
メソッドはモデルを IOllamaClientApi
の既定のモデルとして登録します。
builder.AddOllamaClientApi("llama3");
ビルダーに IOllamaClientApi
を追加した後、依存関係の挿入を使用して IOllamaClientApi
インスタンスを取得できます。 たとえば、サービスからコンテキスト オブジェクトを取得するには、次のようにします。
public class ExampleService(IOllamaClientApi ollama)
{
// Use ollama...
}
キー付き Ollama client API を追加する
接続名が異なる複数の IOllamaClientApi
インスタンスを登録する場合があります。 キー付き Ollama クライアントを登録するには、AddKeyedOllamaClientApi
メソッドを呼び出します。
builder.AddKeyedOllamaClientApi(name: "chat");
builder.AddKeyedOllamaClientApi(name: "embeddings");
その後、依存関係の挿入を使用して IOllamaClientApi
インスタンスを取得できます。 たとえば、サービスの例から接続を取得するには、次のようにします。
public class ExampleService(
[FromKeyedServices("chat")] IOllamaClientApi chatOllama,
[FromKeyedServices("embeddings")] IOllamaClientApi embeddingsOllama)
{
// Use ollama...
}
構成
Ollama client 統合では、プロジェクトの要件と規則を満たす複数の構成アプローチとオプションが提供されます。
接続文字列を使用する
ConnectionStrings
構成セクションの接続文字列を使用する場合は、AddOllamaClientApi
メソッドを呼び出すときに接続文字列の名前を指定できます。
builder.AddOllamaClientApi("llama");
その後、接続文字列は ConnectionStrings
構成セクションから取得されます。
{
"ConnectionStrings": {
"llama": "Endpoint=http//localhost:1234;Model=llama3"
}
}
Microsoft.Extensions.AI
との統合
Microsoft.Extensions.AI ライブラリは、ジェネリック インターフェイスを使用して、Ollama client API に対する抽象化を提供します。 OllamaSharp はこれらのインターフェイスをサポートしており、AddOllamaSharpChatClient
および AddOllamaSharpEmbeddingGenerator
拡張メソッドを使用して登録できます。 これらのメソッドは、依存関係挿入コンテナーに IOllamaClientApi
インスタンスを登録し、複数のインスタンスのキー付きバージョンも持つようになります。
builder.AddOllamaSharpChatClient("llama");
ビルダーに IChatClient
を追加した後、依存関係の挿入を使用して IChatClient
インスタンスを取得できます。 たとえば、サービスからコンテキスト オブジェクトを取得するには、次のようにします。
public class ExampleService(IChatClient chatClient)
{
// Use chat client...
}
関連項目
.NET Aspire