IA Azure : Convertissez un Word en mp3

Vous utilisez la Lecture à voix haute de Word pour écouter vos lonnnnnnnnnng textes, mais vous aimeriez les emporter ailleurs, dans le train, en voiture ou en balade ? Le problème, c’est que Word lit le document pendant qu’il est ouvert, et c’est tout. Moi, je voulais un vrai fichier MP3, autonome, qu’on peut réécouter n’importe où. Et comme mes documents sont longs (très longs), j’ai automatisé la conversion avec un petit outil maison : WordToMp3.

Au programme : le fonctionnement de l’outil en quelques lignes, puis trois tests concrets, du dry run jusqu’à un document de 183 773 caractères transformé en plus de 3 heures d’audio.

1. Dictée, Lecture à voix haute, WordToMp3 : de quoi on parle ?

Premier réflexe à prendre : ne pas confondre les fonctionnalités. Word sait transformer la voix en texte, et le texte en voix. Mais aucune des deux ne correspond exactement à ce que je cherchais.

FonctionnalitéSensÀ quoi ça sert
Dicter (Word)Voix ➜ texteParler pour écrire un document.
Lecture à voix haute (Word)Texte ➜ lecture audioÉcouter un document dans Word.
WordToMp3Document ➜ texte extrait ➜ voix de synthèse ➜ MP3Produire un fichier audio autonome.

Mon point de départ, c’est donc la Lecture à voix haute, pas la Dictée. L’idée n’est pas d’enregistrer ce que Word lit :

WordToMp3 extrait le texte du document et demande une narration toute neuve à Azure Speech. La voix ne sera donc pas forcément celle que vous entendez dans Word.

2. Pourquoi un script pour un long document ?

Un script n’est pas la seule solution possible : une appli d’export audio ou un enregistrement de l’écran pourraient aussi faire l’affaire. Mais dès que le document dépasse quelques pages, les questions pratiques arrivent vite :

  • comment lire un vieux .doc sans toucher au fichier d’origine ?
  • comment éviter une seule requête de synthèse énorme ?
  • que se passe-t-il si le réseau coupe à la moitié ?
  • comment garder les passages dans le bon ordre ?
  • comment obtenir un seul MP3 plutôt qu’une centaine de petits fichiers ?
  • comment garder ma clé Azure et mes textes privés hors de GitHub ?

Ce qui m’intéresse ici, c’est d’avoir un traitement reproductible et capable de reprendre là où il s’est arrêté. La répartition des rôles est simple : Python orchestre, Word sert uniquement à extraire le texte, Azure Speech génère la voix et FFmpeg assemble le MP3 final.

3. Comment ça marche ?

WordToMp3 est une application en ligne de commande pour Windows, qu’on lance depuis PowerShell. Pas d’interface graphique, pas de site web : un lanceur convert.ps1 qui appelle le script Python convert.py, et c’est tout :

Concrètement, ça donne quoi ? Le traitement se déroule en cinq temps :

  1. Extraction : pour un .doc ou un .docx, le script ouvre une instance Word séparée et invisible, en lecture seule, macros désactivées. Il récupère le corps du texte (tableaux compris), puis les notes de bas de page et de fin. Il referme ensuite sans enregistrer. Les fichiers .txt en UTF-8 sont lus directement, sans Word.
  2. Découpage : le texte est nettoyé puis coupé en segments de 2 000 caractères maximum, de préférence à la fin d’un paragraphe, sinon d’une phrase.
  3. Synthèse : chaque segment est envoyé à Azure Speech (voix fr-FR-DeniseNeural par défaut), un par un, et revient sous forme de fichier WAV.
  4. Cache : chaque WAV est vérifié puis conservé à côté du futur MP3. Si on relance, les segments valides sont réutilisés.
  5. Assemblage : FFmpeg encode tous les WAV en une seule passe (MP3 128 kbit/s, 24 kHz, mono), puis relit le MP3 en entier pour vérifier qu’il est lisible avant de le publier.

Pourquoi passer par des WAV plutôt que de coller directement des MP3 ? Parce qu’un WAV non compressé se vérifie et s’ordonne facilement. Et un seul encodage final évite de mettre bout à bout des dizaines de MP3 compressés séparément.

4. Installation et lancement

Côté prérequis, rien d’exotique :

ÉlémentDétail
SystèmeWindows, avec Microsoft Word installé (pour les fichiers .doc et .docx)
PythonUn environnement virtuel local (testé chez moi avec Python 3.11.9)
DépendancesAzure Speech SDK, pywin32 et imageio-ffmpeg (qui fournit FFmpeg, pas besoin de l’installer à part)
AzureUne ressource Speech avec son endpoint et sa clé
DisqueDe la place pour le cache WAV et le MP3 final

L’installation tient en trois lignes :

python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
.\convert.ps1 --help

Ensuite, on renseigne l’endpoint de sa ressource Azure et on lance la conversion :

$env:AZURE_SPEECH_ENDPOINT = "https://your-resource.cognitiveservices.azure.com/"
.\convert.ps1 "C:\Documents\book.docx" -o "C:\Audio\book.mp3"

Si la variable AZURE_SPEECH_KEY n’est pas définie, le script demande la clé avec une saisie masquée :

Quelques options utiles : --voice pour changer de voix, --chunk-size pour la taille des segments (de 100 à 3 000 caractères), --attempts pour le nombre de tentatives par segment, et --overwrite pour remplacer un MP3 existant.

Attention : ne mettez jamais votre vraie clé dans une commande publiée, dans l’historique du terminal ou sur une capture. Masquez aussi le nom de votre ressource Azure dans vos captures. Le fichier .env.example du dépôt ne contient que des valeurs d’exemple, et le script ne charge pas les fichiers .env tout seul.

5. Trois tests concrets

Le moment de vérité. Trois tests, du plus prudent au plus costaud.

Test n°1 : le dry run, sans toucher à Azure

Avant de dépenser le moindre centime, on vérifie que l’extraction et le découpage se passent bien. Le mode --dry-run s’arrête juste avant la synthèse : pas de clé demandée, pas d’appel à Azure, pas de fichier audio.

.\convert.ps1 .\docs\article\sample-narration.txt --dry-run

Sur le texte de démonstration fourni dans le dépôt, résultat : 14820 caractères, un seul segment, aucun appel à Azure :

Attention, le dry run ne vérifie ni la clé, ni les quotas, ni la disponibilité de la voix, ni la qualité audio. Il valide juste la partie locale.

Test n°2 : un document Word de taille raisonnable

Premier vrai passage par Azure Speech avec un .docx : 14 820 caractères, découpés en 8 segments, voix fr-FR-DeniseNeural. Le script affiche l’avancement segment par segment, puis assemble et vérifie le MP3.

Extracting: C:\audio\book.docx
14,820 characters, 8 segment(s), voice fr-FR-DeniseNeural.
Document body and tables included; notes appended at the end. Images excluded.
Azure Speech key (hidden):
[1/8] Synthesizing (1638 characters)...
[2/8] Synthesizing (1957 characters)...
...
[8/8] Synthesizing (1670 characters)...
Assembling and verifying the MP3...
Done: C:\audio\book.mp3
Duration: 14.9 minutes

Et là, magie : un seul fichier MP3 de 14,9 minutes, prêt à être copié sur un téléphone :

Test n°3 : le gros morceau, un vieux .doc de plus de 180 000 caractères

C’est pour ce cas-là que j’ai écrit l’outil. Un ancien document au format .doc, de 183 773 caractères, découpé en 99 segments d’environ 1 850 caractères en moyenne.

Extracting: C:\audio\book2.doc
183,773 characters, 99 segment(s), voice fr-FR-DeniseNeural.
Document body and tables included; notes appended at the end. Images excluded.
Azure Speech key (hidden):
[1/99] Synthesizing (1812 characters)...
[2/99] Synthesizing (1122 characters)...
...
[99/99] Synthesizing (1348 characters)...
Assembling and verifying the MP3...
Done: C:\audio\book2.mp3
Duration: 191.2 minutes

Résultat : 191,2 minutes d’audio, soit un peu plus de 3 heures de narration, produites en environ 2 minutes de traitement chez moi. Au passage, ce test confirme que l’extraction via Word fonctionne aussi sur l’ancien format .doc :

Côté taille, à 128 kbit/s, on peut estimer environ 184 Mo pour ce MP3 (c’est un calcul, pas une mesure). Prévoyez aussi de la place pour le cache WAV, nettement plus gros : de l’ordre de 500 Mo pour la même durée :

6. Le cache et la reprise

Sur un document de 99 segments, une coupure réseau au segment 70 serait rageante. C’est là que le cache entre en jeu. Les WAV sont rangés dans un dossier .speech-cache à côté du MP3, dans un sous-dossier identifié par une empreinte du texte découpé, de la voix et de l’endpoint.

book.mp3
book.speech-cache/
  <empreinte SHA-256>/
    00001.wav
    00002.wav
    ...

Si on relance la même commande, chaque WAV existant est vérifié : les segments valides sont réutilisés, les manquants ou abîmés sont régénérés. Un Ctrl+C en plein traitement affiche d’ailleurs la commande pour reprendre. En cas d’erreur passagère côté Azure (timeout, service indisponible, trop de requêtes), le script fait jusqu’à 4 tentatives par segment avant d’abandonner.

Le piège classique : changer le texte, la voix, l’endpoint ou l’emplacement du MP3 crée un nouveau cache, et donc une nouvelle synthèse complète. Pour reprendre, on relance exactement la même commande.

Attention : les segments déjà en cache ne repartent pas chez Azure, mais une relance n’est pas forcément gratuite pour autant. Tout segment manquant ou invalide sera de nouveau synthétisé et facturé. Et la reprise après coupure est couverte par des tests locaux simulés, pas encore par une vraie coupure en conditions réelles.

7. Pièges et vigilance

  • Le texte part chez Azure : chaque segment est envoyé à Azure Speech. Le fichier Word lui-même n’est pas envoyé, mais tout son contenu l’est. À éviter pour un document confidentiel sans avoir vérifié les règles de traitement des données.
  • Le cache n’est pas chiffré : les WAV et le MP3 contiennent l’intégralité du document, en audio. Supprimez le cache une fois le MP3 validé.
  • Tout n’est pas lu : pas d’OCR pour les images et pages scannées, pas d’extraction dédiée des en-têtes, pieds de page et zones de texte flottantes. Les notes sont lues à la fin, pas à leur emplacement d’origine.
  • Le coût : il dépend de la voix, de l’offre et de la région. Vérifiez la page de tarification Azure Speech avant de lancer un gros document. Le dry run compte les caractères, mais ne donne pas de devis.
  • L’écoute reste indispensable : FFmpeg vérifie que le MP3 est lisible techniquement, pas que les noms propres, les dates ou les tableaux sonnent bien.

8. Conclusion

Voilà, en cinq étapes (extraction, découpage, synthèse, cache, assemblage), un long document Word devient un seul MP3 qu’on emporte partout. Concrètement, ça donne quoi ? Chez moi, un .doc de 183 773 caractères transformé en 3 h 11 d’audio en environ 2 minutes, sans toucher au fichier d’origine.

Les trois pièges à retenir :

  1. le contenu du document part chez Azure Speech, et le cache local n’est pas chiffré ;
  2. une relance réutilise les segments valides, mais pas si vous changez le texte, la voix, l’endpoint ou l’emplacement du MP3 ;
  3. un MP3 lisible n’est pas forcément une bonne narration, écoutez avant de partager.

Côté pistes d’évolution, rien n’est encore livré, mais plusieurs idées sont sur la table : un découpage par chapitre, des réglages de vitesse et de pauses, de l’OCR pour les pages scannées ou un mode pour réassembler le MP3 depuis le cache sans repasser par Azure.

Le code est sur GitHub. Foncez tester, en commençant par un dry run sur un texte non sensible.

Modèles de chatbot AI .NET !

Microsoft continue d’aider la communauté des développeurs AI et propose désormais de nouveaux modèles d’applications Chat IA développé en .NET. Avec ces modèles d’application comme point de départ, vous pouvez rapidement créer des applications web de chat avec un ou des modèles d’intelligence artificielle dédiés. Tous ces modèles d’application AI en .NET sont désormais disponibles en préversion depuis mars 2025.

Vous souhaitez vous lancer dans le développement de l’IA, mais vous ne savez pas par où commencer ? J’ai un cadeau pour vous : nous avons un nouveau modèle d’application Web de chat sur l’IA qui est maintenant disponible en avant-première. 😊 Ce modèle fait partie de nos efforts continus pour faciliter la découverte et l’utilisation du développement de l’IA avec .NET

Jordan Matthiesen

A quoi sert une application développée pour du chat IA ?

Une application de chat IA ne se contente pas de générer des réponses : elle les enrichit à partir de contenus existants (comme du code, des documents, etc.).

  • Un modèle d’embedding, qui transforme des textes en vecteurs numériques.
    → Il est utilisé pour rechercher les passages les plus pertinents dans une base de connaissances locale ou distante.
  • Un modèle génératif, qui prend ces passages et génère une réponse claire et naturelle, dans le style d’un assistant conversationnel.

Deux modèles, deux usages ?

Quand on développe une application en relation avec des modèles l’intelligence artificielle intégrant de la données, il est important de comprendre la différence entre deux grandes catégories de modèles d’IA :

1. Modèle de génération de texte (aussi appelés LLM – Large Language Models)

🔹 Objectif : Générer du texte naturel en réponse à une consigne
🔹 Entrée : Une instruction, un prompt ou une question
🔹 Sortie : Une réponse en langage humain, souvent contextualisée
🔹 Cas d’usage :

  • Assistants conversationnels (chatbots)
  • Rédaction automatique de contenu
  • Résumé ou reformulation de documents
  • Réponse à des questions en langage naturel

🧪 Exemple d’interaction :

Entrée : “Explique-moi le fonctionnement d’un moteur thermique.”
Sortie : “Un moteur thermique fonctionne en convertissant la chaleur issue de la combustion d’un carburant en énergie mécanique…”


2. Modèle d’embedding (encodage vectoriel)

🔹 Objectif : Représenter un texte sous forme de vecteur numérique pour comparaison sémantique
🔹 Entrée : Une phrase, un document, une question, etc.
🔹 Sortie : Un vecteur (tableau de nombres) capturant le sens du texte
🔹 Cas d’usage :

  • Recherche sémantique (trouver un document similaire)
  • Détection de doublons ou de similarité
  • Indexation pour des bases vectorielles
  • Classement ou regroupement de contenus (clustering)

🧪 Exemple d’interaction :

Entrée : “Comment entretenir une voiture électrique ?”
Sortie : [0.12, -0.03, 0.57, ...] (vecteur utilisable pour comparer avec d’autres)

Comment ce modèle d’application est-il construit ?

Architecture et technologies :

  • Application web Blazor (.NET) avec des composants Razor interactifs côté serveur
  • Base de données SQLite utilisée pour le cache d’ingestion via Entity Framework Core
  • Intégration avec les modèles d’IA d’Azure OpenAI Service

Fonctionnalités principales :

  1. Chat avec IA augmentée par récupération (RAG)
    • Utilise un modèle d’IA pour générer des réponses intelligentes
    • Les réponses sont enrichies par des données extraites de documents
  2. Traitement de documents
    • Ingère des fichiers PDF (stockés dans Data)
    • Extrait le texte et crée des embeddings vectoriels via un modèle de type embedding
    • Stocke les vecteurs dans un JsonVectorStore pour les recherches sémantiques
  3. Interface utilisateur
    • Composants de chat interactifs (ChatMessageList, ChatInput)
    • Rendu Markdown et sanitisation HTML via les bibliothèques JavaScript

Workflow :

  1. Au démarrage, l’application ingère les documents (par exemple des fichiers PDF), les découpe en fragments, puis les encode sous forme de vecteurs numériques grâce au modèle d’embedding (Modèle 2).
  2. L’utilisateur interagit via l’interface de chat, en posant une question en langage naturel. Cette requête est ensuite traitée par le modèle génératif (Modèle 1), mais pas directement…
  3. Avant de répondre, le système utilise le modèle d’embedding (Modèle 2) pour retrouver les passages les plus pertinents dans les documents indexés, en comparant leur sens avec celui de la question.
  4. Enfin, le modèle génératif (Modèle 1) s’appuie à la fois sur ces passages trouvés et sur ses propres connaissances générales pour générer une réponse complète, claire et contextualisée.

Comment connecte-t-on cette application avec un modèle d’IA ?

Ces exemples d’application ne contiennent pas l’intelligence artificielle elle-même, mais elle interagit avec un modèle IA externe (hébergé dans le cloud, en local ou dans un container).

Enfin, découvrez le dernier épisode du stand-up de la communauté .NET AI, dans lequel Alex, Bruno et Jordan présentent les nouveaux modèles :

Dans cet article, je vous propose de tester l’application en connectant celle-ci vers 3 modèles d’IA :

  • GitHub
  • Azure OpenAI
  • Ollama

Voici les différentes étapes que nous allons suivre :

Maintenant, il nous reste plus qu’à tester tout cela 😎💪

Etape 0 – Rappel des prérequis :

Afin de tester les différents modèles AI en .NET, nous allons avoir besoin de :

  • Un poste local
  • Un compte GitHub des modèles GitHub Models
  • Une souscription Azure si utilisation du service Azure OpenAI

Commençons par créer préparer le poste local.

Etape I – Préparation du poste local :

Rendez-vous sur la page suivante afin de télécharger Visual Studio Code :

Une fois téléchargée, lancez l’installation de ce dernier :

Rendez-vous sur la page suivante afin de télécharger la version 9.0 de .NET :

Une fois téléchargée, lancez l’installation :

Une fois l’installation réussie, fermez celle-ci :

Enfin, redémarrez le poste local :

Une fois le poste local redémarré, ouvrez Windows Terminal :

Installer les modèles de projet pour l’extension .NET liée à Microsoft.Extensions.AI, qui fait partie de l’écosystème Semantic Kernel :

dotnet new install Microsoft.Extensions.AI.Templates

Créez un dossier sur votre poste, puis positionnez-vous dedans :

Ne fermez pas cette fenêtre Windows PowerShell.

Notre environnement local est prêt. Avant de déployer des applications basées sur les templates d’IA, nous avons besoin de récupérer les identifiants de connexion (token) de certains modèles IA. Commençons par le plus simple : GitHub.

Etape II – Test de l’application avec le modèle GitHub :

Rendez-vous sur la page d’accueil de GitHub, puis authentifiez-vous, ou créez un compte au besoin :

Cliquez sur votre photo de profil en haut à droite, puis cliquez sur le bouton des Paramètres :

Tout en bas, cliquez sur le menu des paramètres suivant :

Créez un token à granularité fine, pour une utilisation personnelle de l’API GitHub :

Nommez ce token, puis choisissez une date d’expiration :

Cliquez-ici pour générer ce token :

Confirmez votre choix :

Copiez la valeur du token GitHub :

Retournez sur la fenêtre Windows PowerShell ouverte précédemment, puis lancez la commande suivante afin d’utiliser le template aichatweb pour créer une application web de chat IA en lien avec le modèle GitHub :

dotnet new aichatweb -n GitHubModels --provider githubmodels --vector-store local

Ouvrez l’explorateur Windows afin de constater la création d’un nouveau dossier ainsi que le code de l’application :

Sur votre poste local, ouvrez Visual Studio Code, puis choisissez l’action d’ouverture d’un dossier :

Sélectionnez le dossier créé par l’application IA :

Constatez l’ouverture de l’application dans Visual Studio Code :

Ouvrez la fenêtre Terminal :

Stockez un secret utilisateur localement (ici un token) de manière sécurisée pour notre projet .NET :

dotnet user-secrets set GitHubModels:Token github...

Affichez tous les secrets stockés localement pour le projet courant :

dotnet user-secrets list

Ajoutez ou retirer au besoin des fichiers PDF utilisés durant la phase d’indexation sémantique)

Compilez et exécutez l’application .NET dans le dossier courant :

dotnet run

L’application vérifie dans les sources de données si nouveau documents sont à indexer ou vectoriser :

Ce message vous indique que l’application tourne localement sur le port 5145 :

Ouvrez un navigateur web à cette adresse:port, puis posez une question à l’IA sur un sujet d’ordre général ou propre aux documents ingérés :

Constatez la rapidité du résultat et la ou les sources associés, puis cliquez dessus :

Constatez la sélection de texte en correspondance avec la question posée à l’IA :

Le test avec le modèle GitHub a bien fonctionné, pensez à détruire le token sur le portail de GitHub pour des questions de sécurité

Continuons les tests de l’application de chat IA avec le modèle Azure OpenAI.

Etape III – Test de l’application avec le modèle Azure OpenAI :

Depuis le portail Azure, commencez par rechercher le service Azure OpenAI :

Cliquez-ici pour créer un nouveau service :

Renseignez toutes les informations, conservez le modèle de prix S0 (suffisant pour nos tests), puis cliquez sur Suivant :

Cliquez sur Suivant :

Cliquez sur Suivant :

Cliquez sur Créer :

Une fois le déploiement terminé, cliquez-ici :

Copiez les 2 informations suivantes dans votre bloc-notes afin de vous y connecter plus tard à via API :

Afin de créer les deux modèle d’IA nécessaires au travers d’Azure, cliquez-ici pour ouvrir le portail Microsoft AI Foundry :

Sur ce portail, commencez par rechercher le premier modèle d’IA nécessaire à notre application :

Cliquez sur Déployer :

Conservez le nom d’origine, puis cliquez sur Déployer :

Retournez sur le catalogue des modèles d’IA, puis recherchez le second modèle d’IA nécessaire à notre application :

Cliquez sur Déployer :

Conservez le nom d’origine, puis cliquez sur Déployer :

Vérifiez la présence des 2 modèles déployés dans le menu suivant :

Retournez sur la fenêtre Windows PowerShell ouverte précédemment, puis lancez la commande suivante afin d’utiliser le template aichatweb pour créer une application web de chat IA en lien avec le service AzureOpenAI :

dotnet new aichatweb -n AzureOpenAI --provider azureopenai --vector-store local

Ouvrez l’explorateur Windows afin de constater la création d’un nouveau dossier :

Sur votre poste local, ouvrez Visual Studio Code, puis choisissez l’action d’ouverture d’un dossier :

Sélectionnez le dossier créé par l’application IA :

Constatez l’ouverture de l’application dans Visual Studio Code :

Afin de passer d’une authentification basée sur une identité Azure (DefaultAzureCredential) à une authentification explicite par clé API (AzureKeyCredential), remplacer le code suivant :

var azureOpenAi = new AzureOpenAIClient(
    new Uri(builder.Configuration["AzureOpenAI:Endpoint"] ?? throw new InvalidOperationException("Missing configuration: AzureOpenAi:Endpoint. See the README for details.")),
    new DefaultAzureCredential());

Par celui-ci, puis sauvegardez le fichier Program.cs :

var endpoint = builder.Configuration["AzureOpenAI:Endpoint"] 
    ?? throw new InvalidOperationException("Missing configuration: AzureOpenAI:Endpoint. See the README for details.");
var key = builder.Configuration["AzureOpenAI:Key"] 
    ?? throw new InvalidOperationException("Missing configuration: AzureOpenAI:Key. See the README for details.");

var azureOpenAi = new AzureOpenAIClient(new Uri(endpoint), new AzureKeyCredential(key));

Ouvrez la fenêtre Terminal :

Enregistrez localement (et de manière sécurisée) le point de terminaison de l’instance Azure OpenAI :

dotnet user-secrets set AzureOpenAI:Endpoint https://aichattemplate-rg.openai.azure.co

Enregistrez de manière sécurisée la clé API de l’instance Azure OpenAI dans les secrets utilisateur de .NET :

dotnet user-secrets set AzureOpenAI:Key 1zF4OGPseV...

Affichez tous les secrets stockés localement pour le projet courant :

dotnet user-secrets list

Ajoutez ou retirer au besoin des fichiers PDF utilisées durant la phase d’indexation sémantique)

Compilez et exécutez l’application .NET dans le dossier courant :

dotnet run

Ouvrez un navigateur web à cette adresse:port indiqué, puis posez une question à l’IA sur un sujet d’ordre général ou propre aux documents ajoutés :

Constatez la rapidité du résultat et la ou les sources associés, puis cliquez dessus :

Constatez la sélection de texte en correspondance avec la question posée :

Le test avec le service Azure OpenAI a bien fonctionné, pensez à détruire le service une fois les tests terminés.

Terminons les tests de l’application de chat IA avec le modèle local Ollama.

Etape IV – Test de l’application avec le modèle Ollama :

Rendez-vous sur la page suivante afin de télécharger Ollama :

Une fois téléchargée, lancez l’installation :

Une fois l’installation réussie, vérifiez via l’URL suivante le bon fonctionnement du service :

http://localhost:11434/

Depuis le menu Démarrer, ouvrez l’application CMD, puis lancez la commande suivante :

ollama pull llama3.2

Ollama télécharge alors la version mini de Phi3 d’environ 2 Go

ollama pull all-minilm

Ollama télécharge alors un modèle ouvert d’environ 270 Mo :

Vérifiez la liste des modèles en place avec la commande suivante :

ollama list

Retournez sur la fenêtre Windows PowerShell ouverte précédemment, puis lancez la commande suivante afin d’utiliser le template aichatweb pour créer une application web de chat IA en lien avec le modèle Ollama :

dotnet new aichatweb -n llama3.2Model --provider ollama --vector-store local

Ouvrez l’explorateur Windows afin de constater la création d’un nouveau dossier ainsi que le code de l’application :

Sur votre poste local, ouvrez Visual Studio Code, puis choisissez l’action d’ouverture d’un dossier :

Sélectionnez le dossier créé par l’application IA :

Constatez l’ouverture de l’application dans Visual Studio Code :

Ouvrez la fenêtre Terminal :

Ajoutez ou retirer au besoin des fichiers PDF utilisées durant la phase d’indexation sémantique)

Compilez et exécutez l’application .NET dans le dossier courant :

dotnet run

L’application vérifie dans les sources de données configurées si nouveau documents sont à indexer ou vectoriser :

Cette ligne vous indique que l’application tourne localement sur le port 5145 :

Ouvrez un navigateur web à cette adresse:port, puis posez une question à l’IA sur un sujet d’ordre général ou propre aux documents ajoutés :

Constatez le pic d’usage du CPU/GPU selon la configuration matérielle de votre poste local :

Constatez la rapidité/lenteur du résultat :

Conclusion

Avec l’arrivée des nouveaux templates .NET dédiés à l’intelligence artificielle, il n’a jamais été aussi simple de créer des applications web de chat connectées à des modèles IA.

Que vous choisissiez un modèle cloud (comme Azure OpenAI), un modèle public (via GitHub), ou même un modèle local (comme ceux proposés par Ollama), l’infrastructure est prête à l’emploi et parfaitement intégrée à l’écosystème .NET.