Blocs de construction d’IA unifiés pour .NET à l’aide de Microsoft.Extensions.AI
L’écosystème .NET fournit des abstractions pour intégrer des services IA dans des applications et des bibliothèques .NET à l’aide des bibliothèques et Microsoft.Extensions.AI.Abstractions
des Microsoft.Extensions.AI
bibliothèques. L’équipe .NET a également amélioré les bibliothèques principales Microsoft.Extensions.*
avec ces abstractions pour les applications et les bibliothèques d’IA génératives .NET. Dans les sections à venir, vous allez apprendre :
- Concepts et fonctionnalités de base des
Microsoft.Extensions.AI
bibliothèques. - Comment utiliser des abstractions IA dans vos applications et les avantages qu’ils offrent.
- Concepts essentiels du middleware IA.
Qu’est-ce que la bibliothèque de Microsoft.Extensions.AI ?
Microsoft.Extensions.AI
est un ensemble de bibliothèques .NET principales créées en collaboration avec les développeurs dans l’écosystème .NET, y compris le noyau sémantique. Ces bibliothèques fournissent une couche unifiée d’abstractions C# pour interagir avec les services IA, tels que des modèles de langage petits et volumineux (SLMs et LLMs), des incorporations et des intergiciels.
Microsoft.Extensions.AI
fournit des abstractions qui peuvent être implémentées par différents services, tout en respectant les mêmes concepts de base. Cette bibliothèque n’est pas destinée à fournir des API adaptées aux services d’un fournisseur spécifique. L’objectif est Microsoft.Extensions.AI
d’agir comme une couche unifiante au sein de l’écosystème .NET, ce qui permet aux développeurs de choisir leurs infrastructures et bibliothèques préférées tout en garantissant une intégration et une collaboration transparentes dans l’écosystème.
Utiliser des abstractions pour les services IA courants
Les fonctionnalités d’IA évoluent rapidement, avec des modèles émergent pour des fonctionnalités courantes :
- Les fonctionnalités de conversation invitent une IA pour obtenir des informations ou une analyse des données.
- Incorporation de génération pour l’intégration aux fonctionnalités de recherche vectorielle.
- Outil appelant pour s’intégrer à d’autres services, plateformes ou code.
La Microsoft.Extensions.AI
bibliothèque fournit des abstractions pour ces types de tâches, afin que les développeurs puissent se concentrer sur le codage sur les fonctionnalités conceptuelles de l’IA plutôt que sur des plateformes ou des implémentations de fournisseurs spécifiques. Les abstractions unifiées sont essentielles pour que les développeurs fonctionnent efficacement sur différentes sources.
Par exemple, l’interface IChatClient
permet la consommation de modèles linguistiques de différents fournisseurs, que vous vous connectiez à un service Azure OpenAI ou exécutez une installation locale de Ollama. Tout package .NET qui fournit un client IA peut implémenter l’interface IChatClient
, ce qui permet une intégration transparente avec l’utilisation du code .NET :
IChatClient client =
environment.IsDevelopment ?
new OllamaChatClient(...) :
new AzureAIInferenceChatClient(...);
Ensuite, quel que soit le fournisseur que vous utilisez, vous pouvez envoyer des demandes comme suit :
var response = await chatClient.CompleteAsync(
"Translate the following text into Pig Latin: I love .NET and AI");
Console.WriteLine(response.Message);
Ces abstractions permettent le code C# idiomatique pour différents scénarios avec des modifications de code minimales, que vous utilisiez différents services pour le développement et la production, traitez les scénarios hybrides ou explorez d’autres fournisseurs de services.
Les auteurs de bibliothèques qui implémentent ces abstractions rendent leurs clients interopérables avec l’écosystème plus large Microsoft.Extensions.AI
. Les API spécifiques au service restent accessibles si nécessaire, ce qui permet aux consommateurs de coder par rapport aux abstractions standard et de passer à des API propriétaires uniquement si nécessaire.
Microsoft.Extensions.AI
fournit des implémentations pour les services suivants via des packages supplémentaires :
À l’avenir, les implémentations de ces Microsoft.Extensions.AI
abstractions feront partie des bibliothèques clientes respectives plutôt que d’exiger l’installation de packages supplémentaires.
Implémentations d’intergiciels pour les services IA
La connexion à et l’utilisation des services IA n’est qu’un aspect de la création d’applications robustes. Les applications prêtes pour la production nécessitent des fonctionnalités supplémentaires telles que la télémétrie, la journalisation et les fonctionnalités d’appel d’outils. Les Microsoft.Extensions.AI
abstractions vous permettent d’intégrer facilement ces composants dans vos applications à l’aide de modèles familiers.
L’exemple suivant montre comment inscrire un OpenAI IChatClient
. IChatClient
vous permet d’attacher les fonctionnalités de manière cohérente entre différents fournisseurs.
app.Services.AddChatClient(builder => builder
.UseLogging()
.UseFunctionInvocation()
.UseDistributedCache()
.UseOpenTelemetry()
.Use(new OpenAIClient(...)).AsChatClient(...));
Les fonctionnalités illustrées dans cet extrait de code sont incluses dans la Microsoft.Extensions.AI
bibliothèque, mais elles ne sont qu’un petit sous-ensemble des fonctionnalités qui peuvent être superposées avec cette approche. Les développeurs .NET peuvent exposer de nombreux types d’intergiciels pour créer de puissantes fonctionnalités IA.
Générer avec Microsoft.Extensions.AI
Vous pouvez commencer à créer avec Microsoft.Extensions.AI
les méthodes suivantes :
- Développeurs de bibliothèques : si vous possédez des bibliothèques qui fournissent des clients pour les services IA, envisagez d’implémenter les interfaces dans vos bibliothèques. Cela permet aux utilisateurs d’intégrer facilement votre package NuGet via les abstractions.
- Consommateurs de services : si vous développez des bibliothèques qui consomment des services IA, utilisez les abstractions au lieu de coder en dur vers un service IA spécifique. Cette approche offre à vos consommateurs la possibilité de choisir leur service préféré.
- Développeurs d’applications : utilisez les abstractions pour simplifier l’intégration dans vos applications. Cela permet la portabilité entre les modèles et services, facilite le test et la simulation, tire parti des intergiciels fournis par l’écosystème et gère une API cohérente dans votre application, même si vous utilisez différents services dans différentes parties de votre application.
- Contributeurs de l’écosystème : si vous souhaitez contribuer à l’écosystème, envisagez d’écrire des composants intergiciels personnalisés. Pour commencer, consultez les exemples du dépôt GitHub dotnet/ai-samples .
Pour obtenir un exemple de bout en bout utilisant Microsoft.Extensions.AI
, consultez eShopSupport.