.NET .NET Aspire Community Toolkit Ollama-integratie
omvat:hostingintegratie en
Client integratie
Notitie
Deze integratie maakt deel uit van de .NET.NET Aspire Community Toolkit en wordt niet officieel ondersteund door het .NET.NET Aspire team.
Ollama is een krachtig opensource-taalmodel dat kan worden gebruikt om tekst te genereren op basis van een bepaalde prompt. De .NET.NET Aspire Ollama-integratie biedt een manier om Ollama-modellen te hosten met behulp van de docker.io/ollama/ollama
containerinstallatiekopie en deze te openen via de OllamaSharp client.
Hostingintegratie
De Ollama-hostingintegratie modelleert een Ollama-server als het OllamaResource
type, en biedt de mogelijkheid om modellen aan de server toe te voegen met behulp van de AddModel
-extensiemethode, die het model vertegenwoordigt als een OllamaModelResource
type. Voor toegang tot deze typen en API's waarmee u de 📦 CommunityToolkit kunt toevoegen.Aspire. Hosting.Ollama NuGet-pakket in het app-host project.
dotnet add package CommunityToolkit.Aspire.Hosting.Ollama
Zie dotnet pakket toevoegen of Pakketafhankelijkheden beheren in .NET toepassingenvoor meer informatie.
Ollama-resource toevoegen
Registreer en gebruik in het app-hostproject de Ollama-integratie met behulp van de AddOllama
extensiemethode om de Ollama-container toe te voegen aan de opbouwfunctie voor toepassingen. Vervolgens kunt u modellen toevoegen aan de container, die wordt gedownload en uitgevoerd wanneer de container wordt gestart, met behulp van de AddModel
-extensiemethode.
var builder = DistributedApplication.CreateBuilder(args);
var ollama = builder.AddOllama("ollama");
var phi35 = ollama.AddModel("phi3.5");
var exampleProject = builder.AddProject<Projects.ExampleProject>()
.WithReference(phi35);
Als u ook een model wilt gebruiken vanuit de Hugging Face modelhub, kunt u de AddHuggingFaceModel
-extensiemethode gebruiken.
var llama = ollama.AddHuggingFaceModel("llama", "bartowski/Llama-3.2-1B-Instruct-GGUF:IQ4_XS");
Wanneer .NET.NET Aspire een containerinstallatiekopie toevoegt aan de app-host, zoals wordt weergegeven in het vorige voorbeeld met de docker.io/ollama/ollama
-installatiekopie, wordt er een nieuw Ollama-exemplaar op uw lokale computer gemaakt. Zie levenscyclus van containerresourcesvoor meer informatie.
De LLM downloaden
Wanneer de Ollama-container voor deze integratie voor het eerst wordt uitgevoerd, worden de geconfigureerde LLM's gedownload. De voortgang van deze download wordt weergegeven in de kolom State voor deze integratie op het .NET.NET Aspire-dashboard.
Belangrijk
Houd de .NET.NET Aspire orchestratie-app open totdat het downloaden is voltooid, anders wordt de download geannuleerd.
De LLM opslaan in de cache
Een of meer LLM's worden gedownload naar de container die door Ollama wordt beheerd, en standaard is deze container tijdelijk. Als u een of meer LLM's bij het opnieuw opstarten van de container wilt behouden, moet u een volume aan de container koppelen met behulp van de methode WithDataVolume
.
var ollama = builder.AddOllama("ollama")
.WithDataVolume();
var llama = ollama.AddModel("llama3");
GPU's gebruiken indien beschikbaar
Een of meer LLM's worden gedownload naar de container waarvan Ollama draait, en deze container draait standaard op de CPU. Als u de container in GPU moet uitvoeren, moet u een parameter doorgeven aan de containerruntime-argumenten.
var ollama = builder.AddOllama("ollama")
.AddModel("llama3")
.WithContainerRuntimeArgs("--gpus=all");
Zie GPU-ondersteuning in Docker Desktopvoor meer informatie.
Gezondheidscontroles voor hostingintegratie
De Ollama-hostingintegratie voegt automatisch een statuscontrole toe voor de Ollama-server en modelbronnen. Voor de Ollama-server wordt een statuscontrole toegevoegd om te controleren of de Ollama-server in bedrijf is en of er een verbinding tot stand kan worden gebracht. Voor de Ollama-modelresources wordt een statuscontrole toegevoegd om te verifiëren dat het model draait en beschikbaar is. Dit betekent dat de resource als ongezond wordt gemarkeerd totdat het model is gedownload.
Open WebUI-ondersteuning
De Ollama-integratie biedt ook ondersteuning voor het uitvoeren van Open WebUI en het laten communiceren met de Ollama-container.
var ollama = builder.AddOllama("ollama")
.AddModel("llama3")
.WithOpenWebUI();
integratie van Client
Installeer de 📦 CommunityToolkit om aan de slag te gaan met de .NET.NET Aspire OllamaSharp-integratie.Aspire.OllamaSharp NuGet-pakket in het project dat gebruikmaakt van de client, dat wil zeggen, het project voor de toepassing die de Ollama-client gebruikt.
dotnet add package CommunityToolkit.Aspire.OllamaSharp
Ollama-client-API toevoegen
Roep in het Program.cs bestand van het clientgebruikte project de AddOllamaClientApi
-extensie aan om een IOllamaClientApi
te registreren voor gebruik via de container voor afhankelijkheidsinjectie. Als de resource die is opgegeven in de app-host en waarnaar wordt verwezen in het clientverbruikende project, een OllamaModelResource
is, registreert de AddOllamaClientApi
methode het model als het standaardmodel voor de IOllamaClientApi
.
builder.AddOllamaClientApi("llama3");
Nadat u IOllamaClientApi
aan de builder hebt toegevoegd, kunt u de IOllamaClientApi
instantie verkrijgen met behulp van afhankelijkheidsinjectie. Als u bijvoorbeeld uw contextobject wilt ophalen uit de service:
public class ExampleService(IOllamaClientApi ollama)
{
// Use ollama...
}
Keyed Ollama-client-API toevoegen
Er kunnen situaties zijn waarin u meerdere IOllamaClientApi
exemplaren met verschillende verbindingsnamen wilt registreren. Als u keyed Ollama-clients wilt registreren, roept u de AddKeyedOllamaClientApi
methode aan:
builder.AddKeyedOllamaClientApi(name: "chat");
builder.AddKeyedOllamaClientApi(name: "embeddings");
Vervolgens kunt u de IOllamaClientApi
exemplaren ophalen met behulp van afhankelijkheidsinjectie. Als u bijvoorbeeld de verbinding wilt ophalen uit een voorbeeldservice:
public class ExampleService(
[FromKeyedServices("chat")] IOllamaClientApi chatOllama,
[FromKeyedServices("embeddings")] IOllamaClientApi embeddingsOllama)
{
// Use ollama...
}
Configuratie
De Ollama-clientintegratie biedt meerdere configuratiemethoden en opties om te voldoen aan de vereisten en conventies van uw project.
Een verbindingsreeks gebruiken
Wanneer u een verbindingsreeks uit de sectie ConnectionStrings
configuratie gebruikt, kunt u de naam van de verbindingsreeks opgeven bij het aanroepen van de AddOllamaClientApi
methode:
builder.AddOllamaClientApi("llama");
Vervolgens wordt de verbindingsreeks opgehaald uit de ConnectionStrings
configuratiesectie:
{
"ConnectionStrings": {
"llama": "Endpoint=http//localhost:1234;Model=llama3"
}
}
Integratie met Microsoft.Extensions.AI
De Microsoft.Extensions.AI-bibliotheek biedt een abstractie over de Ollama-client-API, met behulp van algemene interfaces. OllamaSharp ondersteunt deze interfaces en ze kunnen worden geregistreerd met behulp van de AddOllamaSharpChatClient
en AddOllamaSharpEmbeddingGenerator
extensiemethoden. Deze methoden registreren ook de IOllamaClientApi
instanties bij de container voor afhankelijkheidsinjectie en hebben versies met sleutel voor meerdere instanties.
builder.AddOllamaSharpChatClient("llama");
Nadat u IChatClient
aan de builder hebt toegevoegd, kunt u de IChatClient
instantie verkrijgen met behulp van afhankelijkheidsinjectie. Als u bijvoorbeeld uw contextobject wilt ophalen uit de service:
public class ExampleService(IChatClient chatClient)
{
// Use chat client...
}