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
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 .NET.NET Aspire Ollama permet d’héberger des modèles Ollama à l’aide de l’image conteneur docker.io/ollama/ollama
et de les accéder via le client OllamaSharp.
Intégration de l’hébergement
Le modèle d’intégration Ollama hébergeant un serveur Ollama en tant que type OllamaResource
et offre la possibilité d’ajouter des modèles au serveur à l’aide de la méthode d’extension AddModel
, qui représente le modèle en tant que 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 serveur Ollama et les ressources de modèle. Pour le serveur Ollama, un contrôle d’intégrité est ajouté pour vérifier que le serveur Ollama est en cours d’exécution et qu’une connexion peut être établie à celui-ci. 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 package NuGet dans le projet utilisant le client, c’est-à-dire le projet pour l’application qui utilise le client Ollama.
dotnet add package CommunityToolkit.Aspire.OllamaSharp
Ajouter l’API cliente Ollama
Dans le fichier Program.cs de votre projet client-consommateur, 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 consommant le client est une OllamaModelResource
, la méthode AddOllamaClientApi
inscrit le modèle comme modèle par défaut pour l'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 client d'Ollama 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 du 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 cliente 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...
}