Sdílet prostřednictvím


integrace .NET.NET Aspire Community Toolkit Ollama

zahrnuje:integraci hostování a integraciClient

Poznámka

Tato integrace je součástí sady Community Toolkit a není oficiálně podporovaná týmem .

Ollama je výkonný opensourcový jazykový model, který lze použít k vygenerování textu na základě dané výzvy. Integrace Ollama poskytuje způsob, jak hostovat modely Ollama pomocí image kontejneru a přistupovat k nim prostřednictvím klienta OllamaSharp.

Integrace hostování

Ollama umožňuje hostování integračních modelů serveru Ollama jako typ OllamaResource a poskytuje možnost přidávat modely na server pomocí rozšiřující metody AddModel, která představuje model jako typ OllamaModelResource. Abyste měli přístup k těmto typům a rozhraním API, které vám umožňují přidat 📦 CommunityToolkit.Aspire.Hosting.Ollama NuGet balíček v projektu hostitele aplikace .

dotnet add package CommunityToolkit.Aspire.Hosting.Ollama

Další informace najdete v tématu dotnet add package nebo Správa závislostí balíčků v .NET aplikacích.

Přidejte prostředek Ollama

V projektu hostitele aplikace zaregistrujte a využijte integraci Ollama pomocí metody rozšíření AddOllama pro přidání kontejneru Ollama do tvůrce aplikací. Pak můžete přidat modely do kontejneru, který se stáhne a spustí při spuštění kontejneru pomocí metody rozšíření 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);

Alternativně, pokud chcete použít model z úložiště modelů Hugging Face, můžete použít rozšiřující metodu AddHuggingFaceModel.

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

Když .NET.NET Aspire přidá do hostitele aplikace obraz kontejneru, jak je ukázáno v předchozím příkladu s obrazem docker.io/ollama/ollama, vytvoří to na vašem lokálním počítači novou instanci Ollama. Další informace najdete v tématu životní cyklus prostředků kontejneru.

Stažení LLM

Když se kontejner Ollama pro tuto integraci poprvé spustí, stáhne nakonfigurované LLM. Průběh tohoto stahování se zobrazí ve sloupci State pro tuto integraci na řídicím panelu .NET.NET Aspire.

Důležitý

Nechte aplikaci pro orchestraci .NET.NET Aspire otevřenou, dokud nebude stahování dokončeno, jinak se stahování zruší.

Uložte LLM do mezipaměti

Jeden nebo více LLM se stáhne do kontejneru, ze kterého běží Ollama, a ve výchozím nastavení je tento kontejner dočasný. Pokud potřebujete zachovat jeden nebo více LLM napříč restartováním kontejneru, musíte k kontejneru připojit svazek pomocí metody WithDataVolume.

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

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

Použití GPU, pokud je k dispozici

Jeden nebo více LLM se stáhne do kontejneru, ze kterého běží Ollama, a ve výchozím nastavení se tento kontejner spouští na procesoru. Pokud potřebujete kontejner spustit v GPU, musíte předat parametr do argů modulu runtime kontejneru.

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

Další informace najdete v tématu podpora GPU v Docker Desktop.

Hostování kontrol stavu integrace

Integrace hostování Ollama automaticky přidává kontrolu stavu pro serverové a modelové prostředky Ollama. U serveru Ollama se přidá kontrola stavu, která ověří, jestli je server Ollama spuštěný a že se k němu dá navázat připojení. U zdrojů modelu Ollama se přidá zdravotní kontrola, která ověří, že je model spuštěný a dostupný, což znamená, že zdroj bude označen jako nezdravý, dokud se model nestáhne.

Podpora open WebUI

Integrace Ollama také poskytuje podporu pro spuštění Open WebUI a komunikaci s kontejnerem Ollama.

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

integrace Client

Pokud chcete začít s integrací .NET.NET Aspire OllamaSharp, nainstalujte sadu 📦 CommunityToolkit.Aspire. OllamaSharp balíček NuGet v projektu, který využívá klienta, tj. projekt pro aplikaci, která používá klienta Ollama.

dotnet add package CommunityToolkit.Aspire.OllamaSharp

Přidání klientského rozhraní API Ollama

V souboru Program.cs projektu, který využívá klienta, zavolejte rozšíření AddOllamaClientApi a zaregistrujte IOllamaClientApi pro použití prostřednictvím kontejneru injektáže závislostí. Pokud je prostředek poskytnut v rámci hostitele aplikace a odkazován v projektu využívajícím klienta jako OllamaModelResource, pak metoda AddOllamaClientApi zaregistruje model jako výchozí model pro IOllamaClientApi.

builder.AddOllamaClientApi("llama3");

Po přidání IOllamaClientApi do vytvářeče můžete získat instanci IOllamaClientApi pomocí vkládání závislostí. Pokud chcete například načíst kontextový objekt ze služby:

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

Přidání klíčeného rozhraní API klienta Ollama

Mohou nastat situace, kdy chcete zaregistrovat více instancí IOllamaClientApi s různými názvy připojení. Pokud chcete zaregistrovat klienty Ollama s klíči, zavolejte metodu AddKeyedOllamaClientApi:

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

Potom můžete načíst instance IOllamaClientApi pomocí injektování závislostí. Například pokud chcete načíst připojení z ukázkové služby:

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

Konfigurace

Integrace klienta Ollama poskytuje několik přístupů a možností konfigurace pro splnění požadavků a konvencí projektu.

Použijte připojovací řetězec

Při použití připojovacího řetězce z oddílu konfigurace ConnectionStrings můžete při volání metody AddOllamaClientApi zadat název připojovacího řetězce:

builder.AddOllamaClientApi("llama");

Připojovací řetězec se poté načte z oddílu konfigurace ConnectionStrings.

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

Integrace s Microsoft.Extensions.AI

Knihovna Microsoft.Extensions.AI poskytuje abstrakci rozhraní API klienta Ollama pomocí obecných rozhraní. OllamaSharp podporuje tato rozhraní a lze je zaregistrovat pomocí AddOllamaSharpChatClient a AddOllamaSharpEmbeddingGenerator rozšiřujících metod. Tyto metody také zaregistrují instance IOllamaClientApi v kontejneru pro injekci závislostí a mají verze s klíči pro více instancí.

builder.AddOllamaSharpChatClient("llama");

Po přidání IChatClient do vytvářeče můžete získat instanci IChatClient pomocí vkládání závislostí. Pokud chcete například načíst kontextový objekt ze služby:

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

Viz také