Dela via


.NET .NET Aspire Community Toolkit Ollama-integrering

omfattar:Som värd för integrering och Client integration

Not

Den här integreringen är en del av .NET.NET Aspire Community Toolkit och stöds inte officiellt av .NET.NET Aspire-teamet.

Ollama är en kraftfull språkmodell med öppen källkod som kan användas för att generera text baserat på en viss fråga. Integreringen .NET.NET Aspire Ollama erbjuder ett sätt att hosta Ollama-modeller med hjälp av docker.io/ollama/ollama containeravbildningen och komma åt dem via OllamaSharp-client.

Värdintegrering

Ollama-värdintegrering modellerar en Ollama-server som en OllamaResource-typ och ger möjlighet att lägga till modeller i server med hjälp av AddModel-tilläggsmetoden, som representerar modellen som en OllamaModelResource-typ. För att komma åt dessa typer och API:er som gör att du kan lägga till 📦 CommunityToolkit.Aspire. Hosting.Ollama NuGet-paketet i appvärd projektet.

dotnet add package CommunityToolkit.Aspire.Hosting.Ollama

För mer information, se dotnet add package eller Hantera paketberoenden i .NET-applikationer.

Lägg till Ollama-resurs

I appvärdprojektet registrerar och använder du Ollama-integreringen med hjälp av AddOllama-tilläggsmetoden för att lägga till Ollama-containern i programverktyget. Du kan sedan lägga till modeller i containern, som laddas ned och körs när containern startar med hjälp av metoden AddModel-tillägg.

var builder = DistributedApplication.CreateBuilder(args);

var ollama = builder.AddOllama("ollama");

var phi35 = ollama.AddModel("phi3.5");

var exampleProject = builder.AddProject<Projects.ExampleProject>()
                            .WithReference(phi35);

Alternativt, om du vill använda en modell från modellhubben Hugging Face kan du använda AddHuggingFaceModel-tilläggsmetoden.

var llama = ollama.AddHuggingFaceModel("llama", "bartowski/Llama-3.2-1B-Instruct-GGUF:IQ4_XS");

När .NET.NET Aspire lägger till en containerbild till appvärden, som visas i föregående exempel med avbildningen docker.io/ollama/ollama, skapar den en ny Ollama-instans på din lokala dator. Mer information finns i Livscykel för containerresurser.

Ladda ned LLM

När Ollama-containern för den här integreringen först startar laddar den ned de konfigurerade LLM:erna. Förloppet för den här nedladdningen visas i kolumnen State för den här integreringen på .NET.NET Aspire instrumentpanelen.

Viktig

Håll .NET.NET Aspire orkestreringsappen öppen tills nedladdningen är klar, annars avbryts nedladdningen.

Cacha LLM

En eller flera LLM:er laddas ned till containern som Ollama kör från, och som standard är den här containern tillfällig. Om du behöver spara en eller flera LLM:er mellan omstarter av containrar måste du montera en volym i containern med metoden WithDataVolume.

var ollama = builder.AddOllama("ollama")
                    .WithDataVolume();

var llama = ollama.AddModel("llama3");

Använd GPU:er när det är tillgängligt

En eller flera LLM:er laddas ned till containern som Ollama kör från, och som standard körs den här containern på CPU. Om du behöver köra containern i GPU måste du skicka en parameter till containerkörningen args.

var ollama = builder.AddOllama("ollama")
                    .AddModel("llama3")
                    .WithContainerRuntimeArgs("--gpus=all");

Mer information finns i GPU-stöd i Docker Desktop.

Värd för hälsokontroller för integrering

Ollama-värdintegrering lägger automatiskt till en hälsokontroll för Ollama server och modellresurserna. För Ollama serverläggs en hälsokontroll till för att kontrollera att Ollama-server körs och att en anslutning kan upprättas till den. För Ollama-modellresurser läggs en hälsokontroll till för att verifiera att modellen körs och att modellen är tillgänglig, vilket innebär att resursen markeras som felaktig tills modellen har laddats ned.

Öppna WebUI-stöd

Ollama-integreringen gav också stöd för att köra Open WebUI och få den att kommunicera med Ollama-containern.

var ollama = builder.AddOllama("ollama")
                    .AddModel("llama3")
                    .WithOpenWebUI();

Client integrering

För att komma igång med .NET.NET Aspire OllamaSharp-integreringen installerar du 📦 CommunityToolkit.Aspire.OllamaSharp NuGet-paketet i det client-konsumerande projektet, det vill säga projektet för programmet som använder Ollama client.

dotnet add package CommunityToolkit.Aspire.OllamaSharp

Lägg till Ollama client API

I Program.cs-filen för ditt client-förbrukande projekt anropar du AddOllamaClientApi-tillägget för att registrera en IOllamaClientApi för användning via beroendeinjiceringscontainern. Om resursen som tillhandahålls i appvärden och refereras till i projektet clientär en OllamaModelResource, kommer metoden AddOllamaClientApi att registrera modellen som standardmodell för IOllamaClientApi.

builder.AddOllamaClientApi("llama3");

När du har lagt till IOllamaClientApi i byggaren kan du hämta IOllamaClientApi-instansen med hjälp av beroendeinjektion. Om du till exempel vill hämta kontextobjektet från tjänsten:

public class ExampleService(IOllamaClientApi ollama)
{
    // Use ollama...
}

Lägg till nyckelat Ollama client API

Det kan finnas situationer där du vill registrera flera IOllamaClientApi instanser med olika anslutningsnamn. Om du vill registrera nyckelade Ollama-klienter anropar du metoden AddKeyedOllamaClientApi:

builder.AddKeyedOllamaClientApi(name: "chat");
builder.AddKeyedOllamaClientApi(name: "embeddings");

Sedan kan du hämta IOllamaClientApi instanser med hjälp av beroendeinjektion. Om du till exempel vill hämta anslutningen från en exempeltjänst:

public class ExampleService(
    [FromKeyedServices("chat")] IOllamaClientApi chatOllama,
    [FromKeyedServices("embeddings")] IOllamaClientApi embeddingsOllama)
{
    // Use ollama...
}

Konfiguration

Integreringen av Ollama client innehåller flera konfigurationsmetoder och alternativ för att uppfylla kraven och konventionerna i projektet.

Använda en anslutningssträng

När du använder en anslutningssträng från ConnectionStrings-konfigurationsavsnittet kan du ange namnet på anslutningssträngen när du anropar metoden AddOllamaClientApi:

builder.AddOllamaClientApi("llama");

Sedan hämtas anslutningssträngen från ConnectionStrings-konfigurationsavsnittet:

{
  "ConnectionStrings": {
    "llama": "Endpoint=http//localhost:1234;Model=llama3"
  }
}

Integrering med Microsoft.Extensions.AI

Microsoft.Extensions.AI-biblioteket innehåller en abstraktion över API:et Ollama client med hjälp av allmänna gränssnitt. OllamaSharp stöder dessa gränssnitt och kan registreras med hjälp av AddOllamaSharpChatClient och AddOllamaSharpEmbeddingGenerator tilläggsmetoder. Dessa metoder registrerar även IOllamaClientApi instanser i containern för beroendeinjektion, och de har nyckelversioner för flera instanser.

builder.AddOllamaSharpChatClient("llama");

När du har lagt till IChatClient i byggaren kan du hämta IChatClient-instansen med hjälp av beroendeinjektion. Om du till exempel vill hämta kontextobjektet från tjänsten:

public class ExampleService(IChatClient chatClient)
{
    // Use chat client...
}

Se även