Fin janvier 2025, le laboratoire d'IA chinois DeepSeek a publié une version open source de DeepSeek-R1, son modèle de raisonnement, qui serait aussi performant que le modèle o1 d'OpenAI sur certains critères d'évaluation de l'IA. R1 est disponible sur la plateforme de développement d'IA Hugging Face sous licence MIT, ce qui signifie qu'il peut être utilisé commercialement sans restrictions.
Voici comment créez des applications intelligentes avec .NET et DeepSeek R1. Pour rappel, la plateforme .NET (prononcée "dot net") est un cadre logiciel open source et gratuit pour les systèmes d'exploitation Windows, Linux et macOS. Le projet est principalement développé par les employés de Microsoft par l'intermédiaire de la Fondation .NET et est publié sous licence MIT.
Le modèle DeepSeek R1 a fait l'objet d'une attention particulière ces derniers temps. L'une des questions que l'on nous pose est la suivante : "Puis-je utiliser DeepSeek dans mes applications .NET ?" La réponse est oui ! Je vais vous expliquer comment utiliser la bibliothèque Microsoft.Extensions.AI (MEAI) avec DeepSeek R1 sur GitHub Models afin que vous puissiez commencer à expérimenter avec le modèle R1 dès aujourd'hui.
MEAI facilite l'utilisation des services d'IA
La bibliothèque MEAI fournit un ensemble d'abstractions unifiées et d'intergiciels pour simplifier l'intégration des services d'IA dans les applications .NET.
En d'autres termes, si vous développez votre application avec MEAI, votre code utilisera les mêmes API quel que soit le modèle que vous décidez d'utiliser "sous la couverture". Cela réduit la friction nécessaire à la création d'une application d'IA .NET, car vous n'aurez qu'à vous souvenir de la façon de faire d'une seule bibliothèque (MEAI), quel que soit le service d'IA que vous utilisez.
Et pour MEAI, l'interface principale que vous utiliserez est IChatClient.
Discutons avec DeepSeek R1
GitHub Models vous permet d'expérimenter une tonne de modèles d'IA différents sans avoir à vous soucier de l'hébergement. C'est un excellent moyen de commencer à développer l'IA gratuitement. Et GitHub Models est mis à jour en permanence avec de nouveaux modèles, comme le R1 de DeepSeek.
L'application de démonstration que nous allons construire est une simple application console et elle est disponible sur GitHub à codemillmatt/deepseek-dotnet. Vous pouvez la cloner ou la forker pour la suivre, mais nous parlerons également des éléments importants ci-dessous.
Tout d'abord, prenons soin de quelques prérequis :
- Rendez-vous sur GitHub et générez un jeton d'accès personnel (PAT). Ce jeton sera votre clé d'accès aux modèles GitHub. Suivez ces instructions pour créer le PAT. Vous aurez besoin d'un jeton classique.
- Ouvrez le projet DeepSeek.Console.GHModels. Vous pouvez ouvrir la solution complète dans Visual Studio ou seulement le dossier du projet si vous utilisez VS Code.
- Créez une nouvelle entrée de secrets d'utilisateur pour le GitHub PAT. Nommez-la GH_TOKEN et collez le PAT que vous avez généré comme valeur.
Maintenant, explorons un peu le code :
- Ouvrez le fichier Program.cs dans le projet DeepSeek.Console.GHModels.
- Les deux premières choses à remarquer sont l'initialisation des variables modelEndpoint et modelName. Ces variables sont standard pour le service GitHub Models, elles seront toujours les mêmes.
- Maintenant, la partie amusante ! Nous allons initialiser notre client de chat. C'est ici que nous allons nous connecter au modèle DeepSeek R1.
Code : Sélectionner tout IChatClient client = new ChatCompletionsClient(modelEndpoint, new AzureKeyCredential(Configuration["GH_TOKEN"])).AsChatClient(modelName);
Ceci utilise le package Microsoft.Extensions.AI.AzureAIInference pour se connecter au service GitHub Models. Mais la fonction AsChatClient renvoie une implémentation de IChatClient. Et ça, c'est super cool. Car quel que soit le modèle que nous choisissons dans GitHub Models, nous écrirons toujours notre application avec l'interface IChatClient ! - Ensuite, nous passons notre question, ou notre invite, au modèle. Et nous allons nous assurer que nous obtenons une réponse en continu, de cette façon nous pouvons l'afficher au fur et à mesure qu'elle arrive.
Code : Sélectionner tout 1
2
3
4
5
6var response = client.CompleteStreamingAsync(question); await foreach (var item in response) { Console.Write(item); }
Voilà, c'est fait ! Allez-y et exécutez le projet. Il se peut que la réponse mette quelques secondes à arriver (beaucoup de gens sont en train d'essayer le modèle !). Vous remarquerez que la réponse n'est pas la même que celle d'un chatbot "normal". DeepSeek R1 est un modèle de raisonnement, il veut donc comprendre et raisonner à travers les problèmes. La première partie de la réponse sera son raisonnement et sera délimitée par \<think> et est assez intéressante. La deuxième partie de la réponse sera la réponse à la question que vous avez posée.
Voici un exemple partiel de réponse :
Code : | Sélectionner tout |
1 2 3 4 5 6 | <think> Okay, let's try to figure this out. The problem says: If I have 3 apples and eat 2, how many bananas do I have? Hmm, at first glance, that seems a bit confusing. Let me break it down step by step. So, the person starts with 3 apples. Then they eat 2 of them. That part is straightforward. If you eat 2 apples out of 3, you'd have 1 apple left, right? But then the question shifts to bananas. Wait, where did bananas come from? The original problem only mentions apples. There's no mention of bananas at all. ... |
Dois-je utiliser les modèles GitHub ?
Vous n'êtes pas limité à exécuter DeepSeek R1 sur GitHub Models. Vous pouvez l'exécuter sur Azure ou même localement (ou sur GitHub Codespaces) à travers Ollama. J'ai fourni 2 applications console supplémentaires dans le dépôt GitHub qui vous montrent comment le faire.
La plus grande différence entre la version GitHub Models est l'endroit où le modèle DeepSeek R1 est déployé, les informations d'identification que vous utilisez pour vous y connecter, et le nom spécifique du modèle.
Si vous déployez sur Azure AI Foundry, le code est exactement le même. Voici quelques instructions sur la façon de déployer le modèle DeepSeek R1 dans Azure AI Foundry.
Si vous souhaitez exécuter localement sur Ollama, nous avons fourni une définition de devcontainer que vous pouvez utiliser pour exécuter Ollama dans Docker. Il récupérera automatiquement une petite version paramétrée de DeepSeek R1 et la démarrera pour vous. La seule différence est que vous utiliserez le package NuGet Microsoft.Extensions.AI.Ollama et initialiserez le IChatClient avec le OllamaChatClient. L'interaction avec DeepSeek R1 est la même.
Note : Si vous exécutez cette opération dans un espace de code GitHub, le démarrage prendra quelques minutes et vous utiliserez environ 8 Go d'espace - soyez donc vigilant en fonction de votre plan d'espace de code.
Bien entendu, il s'agit de simples applications Console. Si vous utilisez .NET Aspire, il est facile d'utiliser Ollama et DeepSeek R1. Grâce à l'intégration d'Ollama dans la boîte à outils communautaire .NET Aspire, il vous suffit d'ajouter une ligne et le tour est joué !
Code : | Sélectionner tout |
var chat = ollama.AddModel("chat", "deepseek-r1");
Résumé
DeepSeek R1 est un nouveau modèle de raisonnement passionnant qui attire beaucoup d'attention et vous pouvez construire des applications .NET qui l'utilisent dès aujourd'hui en utilisant la bibliothèque Microsoft.Extensions.AI. Les modèles GitHub réduisent la friction pour commencer et l'expérimenter. Allez-y et essayez les échantillons et consultez nos autres échantillons MEAI !
Source : "Build Intelligent Apps with .NET and DeepSeek R1 Today!"
Et vous ?
Pensez-vous que cette méthode est crédible ou pertinente ?
Quel est votre avis sur le sujet ?
Voir aussi :
Microsoft héberge désormais "R1" sur Azure AI et GitHub : OpenAI accuse le chinois DeepSeek d'avoir copié ses données pour former son modèle d'IA, son plus grand bailleur de fonds ne l'a pas retirée pour autant
Microsoft annonce .NET 9 et apporte des améliorations radicales à l'ensemble de la pile .NET qu'il s'agisse des langages de programmation, des outils de développement ou des charges de travail