Integracja Community Toolkit Ollama .NET.NET Aspire
obejmuje:integrację hostingu i Client integrację
Notatka
Ta integracja jest częścią
Ollama to zaawansowany model języka open source, który może służyć do generowania tekstu na podstawie danego monitu. Integracja .NET.NET Aspire Ollama umożliwia hostowanie modeli Ollama przy użyciu docker.io/ollama/ollama
obrazu kontenera i uzyskiwania do nich dostępu za pośrednictwem klienta OllamaSharp.
Integracja hostingu
Integracja hostingu Ollama modeluje serwer Ollama jako typ OllamaResource
i zapewnia możliwość dodawania modeli do serwera, używając metody rozszerzenia AddModel
, która reprezentuje model jako typ OllamaModelResource
. Aby uzyskać dostęp do tych typów i interfejsów API, które umożliwiają dodanie pakietu NuGet 📦 CommunityToolkit.Aspire. Hosting.Ollama w projekcie hosta aplikacji .
dotnet add package CommunityToolkit.Aspire.Hosting.Ollama
Aby uzyskać więcej informacji, zobacz dotnet add package lub Zarządzaj zależnościami pakietów w .NET aplikacjach.
Dodawanie zasobu Ollama
W projekcie hosta aplikacji zarejestruj się i użyj integracji Ollama przy użyciu metody rozszerzenia AddOllama
, aby dodać kontener Ollama do konstruktora aplikacji. Następnie można dodać modele do kontenera, który pobiera i uruchamia się po uruchomieniu kontenera przy użyciu metody rozszerzenia 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);
Alternatywnie, jeśli chcesz użyć modelu z Hugging Face repozytorium modeli, możesz użyć metody rozszerzeń AddHuggingFaceModel
.
var llama = ollama.AddHuggingFaceModel("llama", "bartowski/Llama-3.2-1B-Instruct-GGUF:IQ4_XS");
Gdy .NET.NET Aspire dodaje obraz kontenera do hosta aplikacji, jak pokazano w poprzednim przykładzie z obrazem docker.io/ollama/ollama
, tworzy nowe wystąpienie Ollama na komputerze lokalnym. Aby uzyskać więcej informacji, zobacz Cykl życia zasobów kontenera.
Pobieranie programu LLM
Kiedy kontener Ollama dla tej integracji uruchamia się po raz pierwszy, pobiera skonfigurowane modele LLM. Proces pobierania wyświetla się w kolumnie Stan dla tej integracji na pulpicie nawigacyjnym .NET.NET Aspire.
Ważny
Zachowaj otwartą aplikację orkiestracji .NET.NET Aspire do momentu ukończenia pobierania. W przeciwnym razie pobieranie zostanie anulowane.
Buforowanie usługi LLM
Co najmniej jeden moduł LLM jest pobierany do kontenera, z którego działa program Ollama, a domyślnie ten kontener jest efemeryczny. Jeśli musisz zachować jeden lub więcej modeli LLM po ponownym uruchomieniu kontenera, musisz zamontować wolumin w kontenerze przy użyciu metody WithDataVolume
.
var ollama = builder.AddOllama("ollama")
.WithDataVolume();
var llama = ollama.AddModel("llama3");
Użyj procesorów GPU, gdy są dostępne
Co najmniej jeden moduł LLM jest pobierany do kontenera, z którego działa program Ollama, a domyślnie ten kontener działa na procesorze CPU. Jeśli musisz uruchomić kontener na GPU, musisz przekazać parametr do argumentów środowiska uruchomieniowego kontenera.
var ollama = builder.AddOllama("ollama")
.AddModel("llama3")
.WithContainerRuntimeArgs("--gpus=all");
Aby uzyskać więcej informacji, zobacz obsługę procesora GPU w Docker Desktop.
Hostowanie kontroli kondycji integracji
Integracja hostingu Ollama automatycznie dodaje weryfikację stanu dla serwera Ollama i zasobów modelu. W przypadku serwera Ollama jest dodawana kontrola kondycji w celu sprawdzenia, czy serwer Ollama jest uruchomiony i czy można nawiązać z nim połączenie. W przypadku zasobów modelu Ollama jest dodawana kontrola kondycji w celu sprawdzenia, czy model jest uruchomiony i czy model jest dostępny, co oznacza, że zasób zostanie oznaczony jako w złej kondycji do momentu pobrania modelu.
Otwórz obsługę WebUI
Integracja Ollama zapewniała również obsługę uruchamiania Open WebUI i komunikowania się z kontenerem Ollama.
var ollama = builder.AddOllama("ollama")
.AddModel("llama3")
.WithOpenWebUI();
integracja Client
Aby rozpocząć integrację z .NET.NET Aspire OllamaSharp, zainstaluj pakiet NuGet 📦 CommunityToolkit.Aspire. OllamaSharp w projekcie, który korzysta z klienta Ollama, czyli w projekcie aplikacji, która używa tego klienta.
dotnet add package CommunityToolkit.Aspire.OllamaSharp
Dodawanie interfejsu API klienta Ollama
W pliku Program.cs projektu korzystającego z klienta wywołaj rozszerzenie AddOllamaClientApi
, aby zarejestrować IOllamaClientApi
do użycia za pośrednictwem kontenera wstrzykiwania zależności. Jeśli zasób podany w hoście aplikacji i przywoływany w projekcie korzystającym z klienta jest OllamaModelResource
, wtedy metoda AddOllamaClientApi
zarejestruje model jako domyślny model dla IOllamaClientApi
.
builder.AddOllamaClientApi("llama3");
Po dodaniu IOllamaClientApi
do konstruktora można pobrać wystąpienie IOllamaClientApi
przy użyciu wstrzykiwania zależności. Aby na przykład pobrać obiekt kontekstu z usługi:
public class ExampleService(IOllamaClientApi ollama)
{
// Use ollama...
}
Dodaj interfejs API klienta Ollama z kluczem
Mogą wystąpić sytuacje, w których chcesz zarejestrować wiele wystąpień IOllamaClientApi
z różnymi nazwami połączeń. Aby zarejestrować klientów powiązanych z kluczami w Ollama, wywołaj metodę AddKeyedOllamaClientApi
:
builder.AddKeyedOllamaClientApi(name: "chat");
builder.AddKeyedOllamaClientApi(name: "embeddings");
Następnie można pobrać wystąpienia IOllamaClientApi
za pomocą wstrzykiwania zależności. Aby na przykład pobrać połączenie z przykładowej usługi:
public class ExampleService(
[FromKeyedServices("chat")] IOllamaClientApi chatOllama,
[FromKeyedServices("embeddings")] IOllamaClientApi embeddingsOllama)
{
// Use ollama...
}
Konfiguracja
Integracja klienta Ollama zapewnia wiele metod konfiguracji i opcji spełniających wymagania i konwencje projektu.
Używanie parametrów połączenia
W przypadku używania parametrów połączenia z sekcji konfiguracji ConnectionStrings
podczas wywoływania metody AddOllamaClientApi
można podać nazwę parametrów połączenia:
builder.AddOllamaClientApi("llama");
Następnie parametry połączenia zostaną pobrane z sekcji konfiguracji ConnectionStrings
:
{
"ConnectionStrings": {
"llama": "Endpoint=http//localhost:1234;Model=llama3"
}
}
Integracja z Microsoft.Extensions.AI
Biblioteka Microsoft.Extensions.AI zapewnia abstrakcję interfejsu API klienta Ollama przy użyciu interfejsów ogólnych. OllamaSharp obsługuje te interfejsy i można je zarejestrować przy użyciu metod rozszerzenia AddOllamaSharpChatClient
i AddOllamaSharpEmbeddingGenerator
. Te metody będą również rejestrować wystąpienia IOllamaClientApi
z kontenerem iniekcji zależności i mają wersje kluczy dla wielu wystąpień.
builder.AddOllamaSharpChatClient("llama");
Po dodaniu IChatClient
do konstruktora można pobrać wystąpienie IChatClient
przy użyciu wstrzykiwania zależności. Aby na przykład pobrać obiekt kontekstu z usługi:
public class ExampleService(IChatClient chatClient)
{
// Use chat client...
}