Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Enthält: Hosting-Integration —&—
Client Integration
Anmerkung
Diese Integration ist Teil des .NET.NET Aspire Community Toolkit und wird nicht offiziell vom.NET.NET Aspire Team unterstützt.
Ollama ist ein leistungsfähiges Open Source-Sprachmodell, das verwendet werden kann, um Text basierend auf einer bestimmten Eingabeaufforderung zu generieren. Die .NET.NET Aspire Ollama-Integration bietet eine Möglichkeit, Ollama-Modelle mithilfe des docker.io/ollama/ollama
Containerimages zu hosten und über den OllamaSharp Client darauf zuzugreifen.
Hosting-Integration
Die Ollama-Hosting-Integration stellt einen Ollama-Server als OllamaResource
-Typ dar und bietet die Möglichkeit, dem Server Modelle mithilfe der AddModel
-Erweiterungsmethode hinzuzufügen, wobei das Modell als OllamaModelResource
-Typ repräsentiert wird. Um auf diese Typen und APIs zuzugreifen, die es Ihnen ermöglichen, das 📦 CommunityToolkitAspire.Hosting.Ollama NuGet-Paket im App-Host Projekt hinzuzufügen.
dotnet add package CommunityToolkit.Aspire.Hosting.Ollama
Weitere Informationen finden Sie unter dotnet add package oder Verwalten von Paketabhängigkeiten in .NET-Anwendungen.
Ollama-Ressource hinzufügen
Registrieren und nutzen Sie im App-Host-Projekt die Ollama-Integration mithilfe der Erweiterungsmethode AddOllama
, um den Ollama-Container zum Anwendungsbuilder hinzuzufügen. Anschließend können Sie dem Container Modelle hinzufügen, die beim Starten des Containers mithilfe der AddModel
Erweiterungsmethode heruntergeladen und ausgeführt werden.
var builder = DistributedApplication.CreateBuilder(args);
var ollama = builder.AddOllama("ollama");
var phi35 = ollama.AddModel("phi3.5");
var exampleProject = builder.AddProject<Projects.ExampleProject>()
.WithReference(phi35);
"Alternativ können Sie ein Modell aus dem Hugging Face-Modellhub verwenden und die AddHuggingFaceModel
Erweiterungsmethode nutzen."
var llama = ollama.AddHuggingFaceModel("llama", "bartowski/Llama-3.2-1B-Instruct-GGUF:IQ4_XS");
Wenn .NET.NET Aspire dem App-Host ein Containerimage hinzufügt, wie im vorherigen Beispiel mit dem docker.io/ollama/ollama
-Image gezeigt, wird eine neue Ollama-Instanz auf Ihrem lokalen Computer erstellt. Weitere Informationen finden Sie unter Lebenszyklus von Containerressourcen.
Herunterladen des LLM
Wenn der Ollama-Container für diese Integration zum ersten Mal gestartet wird, lädt er die konfigurierten LLMs herunter. Der Fortschritt dieses Downloads wird in der Statusspalte für diese Integration auf dem .NET.NET Aspire-Dashboard angezeigt.
Wichtig
Lassen Sie die .NET.NET Aspire Orchestrierungs-App geöffnet, bis der Download abgeschlossen ist, andernfalls wird der Download abgebrochen.
Zwischenspeichern der LLM
Mindestens ein LLM wird in den Container heruntergeladen, aus dem Ollama ausgeführt wird, und standardmäßig ist dieser Container flüchtig. Wenn Sie ein oder mehrere LLMs über Neustarts des Containers hinweg beibehalten müssen, sollten Sie ein Volume mit der WithDataVolume
-Methode in den Container einbinden.
var ollama = builder.AddOllama("ollama")
.WithDataVolume();
var llama = ollama.AddModel("llama3");
Verwenden von GPUs, wenn verfügbar
Mindestens ein LLM wird in den Container heruntergeladen, aus dem Ollama ausgeführt wird, und dieser Container wird standardmäßig mit der CPU ausgeführt. Wenn Sie den Container in der GPU ausführen müssen, müssen Sie einen Parameter an die Containerlaufzeitargumente übergeben.
var ollama = builder.AddOllama("ollama")
.AddModel("llama3")
.WithContainerRuntimeArgs("--gpus=all");
Weitere Informationen finden Sie unter GPU-Unterstützung in Docker Desktop-.
Hosten von Integritätsprüfungen für Integration
Die Ollama-Hostingintegration fügt automatisch eine Integritätsprüfung für die Ollama-Server- und Modellressourcen hinzu. Für den Ollama-Server wird eine Gesundheitsüberprüfung hinzugefügt, um zu überprüfen, ob der Ollama-Server ausgeführt wird und ob eine Verbindung hergestellt werden kann. Für die Ollama-Modellressourcen wird eine Gesundheitsprüfung hinzugefügt, um zu überprüfen, ob das Modell ausgeführt wird und ob das Modell verfügbar ist. Das bedeutet, dass die Ressource als nicht gesund markiert wird, bis das Modell heruntergeladen wurde.
Unterstützung für Open WebUI
Die Ollama-Integration bietet außerdem Unterstützung zum Betrieb von Open WebUI und ermöglicht die Kommunikation mit dem Ollama-Container.
var ollama = builder.AddOllama("ollama")
.AddModel("llama3")
.WithOpenWebUI();
Client Integration
Um mit der Integration von .NET.NET Aspire OllamaSharp zu beginnen, installieren Sie das 📦 CommunityToolkit.Aspire.OllamaSharp NuGet-Paket im clientkonsumierenden Projekt, also dem Projekt, das die Anwendung für den Ollama-Client enthält.
dotnet add package CommunityToolkit.Aspire.OllamaSharp
Hinzufügen der Ollama-Client-API
Rufen Sie in der Program.cs-Datei Ihres Client-Projekts die AddOllamaClientApi
-Erweiterung auf, um einen IOllamaClientApi
für die Verwendung mit dem Dependency Injection-Container zu registrieren. Wenn die im App-Host bereitgestellte Ressource, auf die im clientverwendenden Projekt verwiesen wird, ein OllamaModelResource
ist, registriert die AddOllamaClientApi
Methode das Modell als Standardmodell für die IOllamaClientApi
.
builder.AddOllamaClientApi("llama3");
Nachdem Sie IOllamaClientApi
zum Generator hinzugefügt haben, können Sie die IOllamaClientApi
Instanz mithilfe der Abhängigkeitseinfügung abrufen. So rufen Sie z. B. das Kontextobjekt aus dem Dienst ab:
public class ExampleService(IOllamaClientApi ollama)
{
// Use ollama...
}
Hinzufügen der Ollama-Client-API mit Schlüssel
Es kann Situationen geben, in denen Sie mehrere IOllamaClientApi
-Instanzen mit unterschiedlichen Verbindungsnamen registrieren möchten. Rufen Sie die AddKeyedOllamaClientApi
-Methode auf, um schlüsselierte Ollama-Clients zu registrieren:
builder.AddKeyedOllamaClientApi(name: "chat");
builder.AddKeyedOllamaClientApi(name: "embeddings");
Anschließend können Sie die IOllamaClientApi
Instanzen mithilfe der Abhängigkeitseinfügung abrufen. So rufen Sie beispielsweise die Verbindung aus einem Beispieldienst ab:
public class ExampleService(
[FromKeyedServices("chat")] IOllamaClientApi chatOllama,
[FromKeyedServices("embeddings")] IOllamaClientApi embeddingsOllama)
{
// Use ollama...
}
Konfiguration
Die Ollama-Clientintegration bietet mehrere Konfigurationsmethoden und -optionen, um die Anforderungen und Konventionen Ihres Projekts zu erfüllen.
Verwenden Sie eine Verbindungszeichenfolge
Wenn Sie eine Verbindungszeichenfolge aus dem Konfigurationsabschnitt ConnectionStrings
verwenden, können Sie beim Aufrufen der AddOllamaClientApi
-Methode den Namen der Verbindungszeichenfolge angeben:
builder.AddOllamaClientApi("llama");
Anschließend wird die Verbindungszeichenfolge aus dem Konfigurationsabschnitt ConnectionStrings
abgerufen:
{
"ConnectionStrings": {
"llama": "Endpoint=http//localhost:1234;Model=llama3"
}
}
Integration mit Microsoft.Extensions.AI
Die Microsoft.Extensions.AI-Bibliothek bietet eine Abstraktion über die Ollama-Client-API mit generischen Schnittstellen. OllamaSharp unterstützt diese Schnittstellen und kann mithilfe der AddOllamaSharpChatClient
- und AddOllamaSharpEmbeddingGenerator
-Erweiterungsmethoden registriert werden. Diese Methoden registrieren auch die IOllamaClientApi
Instanzen mit dem Container zum Einfügen von Abhängigkeiten und verfügen über Schlüsselversionen für mehrere Instanzen.
builder.AddOllamaSharpChatClient("llama");
Nachdem Sie IChatClient
zum Generator hinzugefügt haben, können Sie die IChatClient
Instanz mithilfe der Abhängigkeitseinfügung abrufen. So rufen Sie z. B. das Kontextobjekt aus dem Dienst ab:
public class ExampleService(IChatClient chatClient)
{
// Use chat client...
}