Partager via


intégration de .NET.NET Aspire Community Toolkit Ollama

inclut :Intégration d'hébergement et intégrationClient

Note

Cette intégration fait partie du community Toolkit et n’est pas officiellement prise en charge par l’équipe .

Ollama est un modèle de langage open source puissant qui peut être utilisé pour générer du texte en fonction d’une instruction donnée. L’intégration Ollama fournit un moyen d'héberger les modèles Ollama à l'aide de l'image conteneur et d'y accéder via le module OllamaSharp.

Intégration de l’hébergement

L'intégration d'hébergement Ollama modélise un server Ollama comme type OllamaResource et permet d'ajouter des modèles au server à l'aide de la méthode d'extension AddModel, laquelle représente le modèle comme un type OllamaModelResource. Pour accéder à ces types et API qui vous permettent d’ajouter le 📦 CommunityToolkit.Aspire. Hosting.Ollama package NuGet dans le projet hôte d’application .

dotnet add package CommunityToolkit.Aspire.Hosting.Ollama

Pour plus d’informations, consultez dotnet add package ou Gérer les dépendances de package dans les applications .NET.

Ajouter une ressource Ollama

Dans le projet hôte d’application, inscrivez et utilisez l’intégration Ollama à l’aide de la méthode d’extension AddOllama pour ajouter le conteneur Ollama au générateur d’applications. Vous pouvez ensuite ajouter des modèles au conteneur, qui télécharge et s’exécute au démarrage du conteneur à l’aide de la méthode d’extension 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);

Sinon, si vous souhaitez utiliser un modèle à partir du hub de modèle Visage hugging, vous pouvez utiliser la méthode d’extension AddHuggingFaceModel.

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

Lorsque .NET.NET Aspire ajoute une image conteneur à l’hôte de l’application, comme indiqué dans l’exemple précédent avec l’image docker.io/ollama/ollama, elle crée une instance Ollama sur votre ordinateur local. Pour plus d’informations, consultez cycle de vie des ressources de conteneur.

Télécharger le LLM

Lorsque le conteneur Ollama pour cette intégration se lance pour la première fois, il télécharge les LLM configurés. La progression de ce téléchargement s’affiche dans la colonne State pour cette intégration sur le tableau de bord .NET.NET Aspire.

Important

Laissez l’application d’orchestration .NET.NET Aspire ouverte jusqu’à ce que le téléchargement soit terminé, sinon le téléchargement sera annulé.

Mettre en cache le LLM

Une ou plusieurs llms sont téléchargées dans le conteneur à partir duquel Ollama est en cours d’exécution, et par défaut ce conteneur est éphémère. Si vous avez besoin de conserver une ou plusieurs machines virtuelles llms entre les redémarrages de conteneur, vous devez monter un volume dans le conteneur à l’aide de la méthode WithDataVolume.

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

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

Utiliser des GPU lorsqu’elles sont disponibles

Une ou plusieurs machines virtuelles LL sont téléchargées dans le conteneur à partir duquel Ollama s’exécute et, par défaut, ce conteneur s’exécute sur le processeur. Si vous devez exécuter le conteneur en GPU, vous devez passer un paramètre aux arguments du runtime de conteneur.

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

Pour plus d’informations, consultez prise en charge du GPU dans Docker Desktop.

Vérifications d’intégrité de l’intégration d’hébergement

L’intégration de l’hébergement Ollama ajoute automatiquement une vérification de l'état de santé pour le server Ollama et les ressources de modèle. Pour l'Ollama server, un contrôle d’intégrité est ajouté pour vérifier que l'Ollama server est en cours d’exécution et qu’une connexion peut être établie avec ce dernier. Pour les ressources du modèle Ollama, un contrôle d’intégrité est ajouté pour vérifier que le modèle est en cours d’exécution et que le modèle est disponible, ce qui signifie que la ressource est marquée comme non saine tant que le modèle n’a pas été téléchargé.

Prise en charge d’Open WebUI

L’intégration de Ollama a également fourni une prise en charge de l’exécution de Open WebUI et de la communication avec le conteneur Ollama.

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

intégration de Client

Pour commencer à utiliser l’intégration .NET.NET Aspire OllamaSharp, installez le 📦 CommunityToolkit.Aspire.OllamaSharp paquet NuGet dans le projet de consommation client, c’est-à-dire le projet pour l’application qui utilise le clientOllama.

dotnet add package CommunityToolkit.Aspire.OllamaSharp

Ajouter l’API client Ollama

Dans le fichier Program.cs de votre projet client-consumant, appelez l’extension AddOllamaClientApi pour enregistrer un IOllamaClientApi à utiliser via le conteneur d’injection de dépendances. Si la ressource fournie dans l’hôte de l’application et référencée dans le projet clientconsommatrice est une OllamaModelResource, la méthode AddOllamaClientApi inscrit le modèle comme modèle par défaut pour le IOllamaClientApi.

builder.AddOllamaClientApi("llama3");

Après avoir ajouté IOllamaClientApi au générateur, vous pouvez obtenir l’instance IOllamaClientApi à l’aide de l’injection de dépendances. Par exemple, pour récupérer votre objet de contexte à partir du service :

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

Ajouter l'API Ollama client avec clé

Il peut arriver que vous souhaitiez inscrire plusieurs instances de IOllamaClientApi avec différents noms de connexion. Pour inscrire des clients Ollama authentifiés, appelez la méthode AddKeyedOllamaClientApi :

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

Vous pouvez ensuite récupérer les instances IOllamaClientApi à l’aide de l’injection de dépendances. Par exemple, pour récupérer la connexion à partir d’un exemple de service :

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

Configuration

L’intégration client Ollama fournit plusieurs approches et options de configuration pour répondre aux exigences et conventions de votre projet.

Utiliser une chaîne de connexion

Lorsque vous utilisez une chaîne de connexion à partir de la section de configuration ConnectionStrings, vous pouvez fournir le nom de la chaîne de connexion lors de l’appel de la méthode AddOllamaClientApi :

builder.AddOllamaClientApi("llama");

Ensuite, la chaîne de connexion est récupérée à partir de la section de configuration ConnectionStrings :

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

Intégration à Microsoft.Extensions.AI

La bibliothèque Microsoft.Extensions.AI fournit une abstraction sur l’API client Ollama, à l’aide d’interfaces génériques. OllamaSharp prend en charge ces interfaces, et elles peuvent être inscrites à l’aide des méthodes d’extension AddOllamaSharpChatClient et AddOllamaSharpEmbeddingGenerator. Ces méthodes enregistrent également les instances IOllamaClientApi avec le conteneur d’injection de dépendances et disposent de versions identifiées par des clés pour plusieurs instances.

builder.AddOllamaSharpChatClient("llama");

Après avoir ajouté IChatClient au générateur, vous pouvez obtenir l’instance IChatClient à l’aide de l’injection de dépendances. Par exemple, pour récupérer votre objet de contexte à partir du service :

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

Voir aussi