.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
.NET Aspire