Combinez Copilot Studio avec Windows 365 pour Agent

Depuis l’annonce d’Opal, Microsoft a franchi une nouvelle étape vers des assistants capables de réfléchir et d’agir. Windows 365 pour Agent prolonge cette vision en offrant un PC cloud entièrement géré pour les agents IA : il exécute des tâches réelles au sein de Windows en toute sécurité. Ce nouvel article vous montre comment, pas à pas, créer un Computer‑Using Agent dans Microsoft Copilot Studio, connecter ce nouvel agent à un Cloud PC, puis le déclencher depuis un flux Power Automate.

Pour vous donner une première idée sur Opal, voici le lien sur mon premier article parlant justement d’Opal et de ses fonctionnalités.

Ensuite, beaucoup d’informations présentes dans cet article sont issues de la documentation Microsoft.

Qu’est-ce que Windows 365 pour Agent ?

Windows 365 pour les agents fait partie des nouveautés récemment annoncées par Microsoft :

Windows 365 pour les agents fournit une nouvelle classe de PC cloud pour l’utilisation de l’agent, basée sur la même plateforme Windows 365 qui alimente Windows 365 pour les entreprises. Au cœur de la plateforme se trouve le PC cloud, un bureau virtuel Windows ou Linux dans le cloud Microsoft.

Microsoft Learn

En d’autres termes, il s’agit de machines virtuelles Windows, ou Linux, dans le cloud, gérées via Microsoft, auxquelles des agents d’IA peuvent accéder pour effectuer des tâches complexes de façon autonome ou semi-autonome :

Pourquoi faire ?

Imaginez votre entreprise disposant de nombreux Cloud PCs prêts à effectuer des tâches administratives, comme la création de notes de frais ou autres ?

Imaginez ensuite que ces agents puissent être sollicités par des humains, d’autres agents ou encore des déclencheurs automatiques ?

Une fois en marche, l’agent sait exactement ce qu’il doit faire, il dispose d’un environnement sécurisé, potentiellement connecté à des ressources Cloud ou on-premise.

Il est même capable de solliciter l’intervention humaine si nécessaire :

Tout cela ….

Qu’est-ce qu’un pool de Cloud PCs ?

Le pool de cloud PC offre des machines virtuelles à vos agents Copilot Studio pour effectuer des tâches informatiques sans avoir à configurer et gérer des machines physiques. Si vous développez des agents qui doivent interagir avec des applications Windows (comme ouvrir des fichiers, utiliser des logiciels ou naviguer sur des sites web), un pool Cloud PC gère l’infrastructure pour vous.

Microsoft Learn

Actuellement, Microsoft permet d’évaluer le pool de PC cloud en autorisant la création de maximum de deux pools de PC cloud par tenant, sans avoir besoin d’un plan de facturation Windows 365 pour les agents dans votre environnement Power Platform.

L’utilisation du pool de PC cloud n’est pas facturable lorsqu’elle est déclenchée à partir d’une conversation de test intégrée, et chaque tenant dispose de 50 heures d’utilisation gratuite du pool de PC cloud pour l’agent publié s’exécutant de manière autonome.

Pourquoi utiliser un Computer‑Using Agent ?

Un Computer‑Using Agent (CUA) associe l’intelligence d’un agent Copilot avec la capacité d’exécuter des actions réelles sur un PC cloud. Il peut effectuer des tâches répétitives ou multi-étapes : extraire des informations d’un PDF, remplir un formulaire web, mettre à jour un fichier Excel, etc.

L’intérêt est de décharger l’utilisateur final des tâches manuelles tout en respectant les contrôles de sécurité (liste d’URL autorisées, authentification via Entra ID, suivi des actions).

Windows 365 pour Agent vs Power Automate Unattended RPA ?

Windows 365 pour Agent introduit un changement de paradigme : ce n’est plus le flow qui pilote l’exécution, mais un agent IA disposant d’un PC cloud complet.

  • Automatisation agent-centric
  • Capacité de raisonnement contextuel
  • L’agent décide comment accomplir l’objectif, dans un cadre contrôlé

En opposition, Power Automate Unattended RPA était conçu pour exécuter des scénarios pré-définis, sans interaction humaine, sur une machine dédiée. Le flux décide quand et quoi exécuter, et le robot applique uniquement et exactement les étapes décrites.

Quels sont les prérequis pour Windows 365 pour Agent ?

Certains prérequis sont nécessaires pour profiter de ce service :

  • Licences : une licence Microsoft 365 Copilot avec accès au programme Frontier et un abonnement Windows 365 Enterprise ou Business.
  • Gestion de l’identité et des appareils : votre Cloud PC doit être joint à Entra ID et inscrit dans Intune (ou Configuration Manager) pour appliquer les stratégies de sécurité.
  • Environnement Power Platform : un environnement Power Platform avec Dataverse pour héberger votre agent Copilot Studio.
  • Power Automate Desktop : le machine runtime doit être installé sur le Cloud PC pour permettre l’automatisation de l’interface utilisateur.

Une fois ces prérequis atteints, la mise en place de ce nouveau type d’agent est très facile car elle passe par la plate-forme désormais très connue, Copilot Studio :

Quelles versions d’OS sont prises en charge ?

Les Cloud PC Windows 365 pour Agent sont disponibles sous Windows 11 et Linux.
Pour ce tutoriel, Windows 11 a été utilisé car les extensions du navigateur et Power Automate Desktop y sont pleinement supportées.

Comment la sécurité est-elle gérée ?

Le Cloud PC est isolé et rattaché à Entra ID, ce qui permet d’appliquer des politiques conditionnelles et de gestion des appareils via Intune.

Dans Power Automate, vous pouvez définir une liste d’URL autorisées pour limiter les sites que l’agent peut ouvrir. Les identifiants nécessaires aux actions (login Microsoft 365, mots de passe) sont stockés dans un coffre sécurisé :

Enfin, chaque exécution laisse une trace dans l’historique du Cloud PC et dans Copilot Studio › Activity, facilitant l’audit :

Combien coûte Windows 365 pour Agent ?

Durant la phase de préversion, l’utilisation d’un poste pour un agent Copilot est facturée cinq crédits Copilot.

Chaque exécution de l’utilisation de l’ordinateur s’appuie sur un modèle d’IA qui exécute une séquence d’étapes. Une étape peut impliquer une ou plusieurs actions de bas niveau (par exemple, cliquer, taper ou naviguer). Chaque étape consomme 5 crédits Copilot.

Microsoft propose un détail de la facturation via cet exemple :

Si vous configurez l’utilisation de l’ordinateur pour remplir un formulaire de feuille de temps en ligne, l’exécution peut effectuer les étapes suivantes :

  • Lancer le navigateur et accéder au portail de la feuille de temps.
  • Sélectionner Créer une nouvelle feuille de temps.
  • Remplir les champs Heure de début, Heure de fin et Code de projet.
  • Sélectionner le bouton Soumettre.

Dans cet exemple, l’utilisation de l’ordinateur exécute 4 étapes, consommant au total 20 crédits Copilot.

Puis‑je utiliser mon propre poste plutôt qu’un Cloud PC ?

Oui, lors de la configuration de l’outil Computer Use, vous pouvez choisir l’option Bring‑your‑own machine et installer le machine runtime sur un poste local.

C’est d’ailleurs ce que nous ferons dans l’Etape IIa :

Toutefois, l’utilisation d’un Cloud PC évite d’exposer votre machine de production et simplifie la gestion des permissions.

Comme pour les tests sur Opal, l’architecture repose sur trois entités :

  • Copilot Studio : le cerveau qui orchestre l’agent, gère les prompts et déclenche les outils.
  • Windows 365 pour Agent : le corps qui exécute les actions UI au travers du machine runtime.
  • Power Automate : le déclencheur qui surveille un événement (arrivée d’e‑mail, webhook, etc.) et invoque l’agent avec les paramètres nécessaires.

Voici les différentes étapes de notre test :

Ce test s’appuie sur la même base que l’exercice réalisé sur Opal. Ce nouvel exemple IA effectue les actions suivantes :

  • La réception d’un e‑mail notifiant l’arrivée d’une nouvelle facture
  • L’extraction des données d’un PDF
  • La saisie automatique un formulaire web
  • La saisie automatique un formulaire SharePoint
  • La saisie automatique un feuille Excel

Etape 0 – Rappel des prérequis :

Avant de commencer, assurez‑vous d’avoir :

  1. Un abonnement Windows 365 Enterprise
  2. Une licence Microsoft 365 Copilot

Commençons par configurer un tout nouvel environnement sur Power Platform.

Etape I – Configuration Power Platform :

Ouvrez le Power Platform Admin Center, puis cliquez ici pour créer un nouvel environnement :

Choisissez un type d’environnement adapté : Sandbox ou Production, activez Dataverse (Sans Dataverse, Copilot Studio ne pourra pas créer d’agent), puis assurez‑vous que la région est compatible avec Windows 365 pour Agent :

Cliquez sur Sauvegarder, puis attendez que ce dernier soit créé :

Une fois le nouvel environnement prêt, vous pouvez y accéder depuis une URL dans la forme suivante :

https://copilotstudio.preview.microsoft.com/environments

Vous devriez alors pouvoir sélectionner le choix suivant car maintenant dégrisé :

Avant d’aller plus loin sur Copilot Studio, il est nécessaire de s’intéresser au poste que va utiliser l’agent pour effectuer les opérations.

Plusieurs choix s’offrent à vous :

Les étapes IIa et IIb de cet article vous proposent de tester différentes alternatives.

Etape IIa – Utilisation d’un PC personnel :

Pour mes tests, j’ai décidé d’utiliser un Cloud PC Entreprise via Power Automate afin que ce dernier le considère comme une machine personnelle.

Si vous êtes dans le même cas que le mien, ouvrez une session Windows de votre Cloud PC :

Sur votre Cloud PC, ouvrez le portail de Power Automate, choisissez le bon environnement créé via Power Platform, puis allez dans vos machines :

Téléchargez le Power Automate machine runtime :

Installez‑le sur le Cloud PC :

Acceptez les conditions, puis démarrez l’installation :

Attendez quelques minutes la fin de l’installation :

Sélectionnez l’extension de navigateur (Edge, Chrome ou Firefox) selon votre usage :

Confirmez l’action d’installation :

Après cela, ouvrez l’application Power Automate machine runtime sur votre Cloud PC :

Connectez-vous avec vos identifiants Microsoft 365 :

Enregistrez la machine dans l’environnement Power Platform créé :

Attendez quelques minutes le message de succès de l’inscription de votre poste :

Dans la liste des machines doit figurer votre Cloud PC avec le statut Connecté :

L’option Computer use est pour le moment encore désactivée. Lisez attentivement l’avertissement : l’agent ne pourra accéder qu’aux sites autorisés et la machine sera contrôlée via l’interface utilisateur.

Si vous êtes d’accord, cliquez sur Activer pour confirmer :

Votre machine est maintenant prête à exécuter des instructions IA. Vous pouvez également configurer une liste d’URL autorisées (allowlist) pour restreindre les destinations.

À la place d’utiliser une machine personnelle, il est aussi possible d’utiliser un Pool de Cloud PC.

Etape IIb – Utilisation d’un Pool de Cloud PC :

Il est possible, durant cette phase de préversion, de tester la création d’un Cloud PC Pool, composé de machines virtuelles hébergées sur Azure.

Pour cela, rendez-vous dans la console d’administration de Power Platform afin d’autoriser Microsoft à créer des machines virtuelles aux US, potentiellement en dehors de votre région :

Ouvrez Copilot Studio, sélectionnez l’environnement créé, puis créez un nouvel agent comme ceci :

Ne renseignez rien, cliquez directement ici :

Cliquez ici pour créer un Pool de Cloud PCs :

Renseignez son nom, puis cliquez sur Créer :

La création du pool commence et déclenche également la création de deux Cloud PCs :

Environ 30 minutes plus tard, les Cloud PC dédiés à Copilot Studio sont correctement provisionnés :

Le Pool de Cloud PCs est visible dans la console de Power Automate :

Ces machines virtuelles provisionnées sont également visibles dans Intune :

Etape III – Configuration Entra :

Comme tous mes tests reposent sur des postes Windows 365, certains prérequis IT sont nécessaires pour assurer un bon fonctionnement :

  • Un tenant Intune et Microsoft Entra valides
  • Restrictions d’inscription des types d’appareils Intune configurées
  • L’authentification Microsoft Entra pour RDP est activée
  • Dialogue d’invite de consentement caché pour les groupes d’appareils cibles
  • Principaux de service requis créés (Windows 365 et Azure Virtual Desktop)

Afin de masquer la boîte de dialogue en configurant la liste des hôtes Windows 365 approuvés, je crée un groupe dans Entra ID contenant les hôtes de session :

Autorisez Microsoft Entra dans l’authentification pour Windows sur le tenant via Azure Cloud Shell depuis le portail Azure :

Importez les deux modules Microsoft Graph suivants, puis connectez-vous avec le compte aux permissions appropriées :

Import-Module Microsoft.Graph.Authentication
Import-Module Microsoft.Graph.Applications

Connect-MgGraph -Scopes "Application.Read.All","Application-RemoteDesktopConfig.ReadWrite.All"

Je récupère l’ID d’objet pour le principal du service Microsoft Remote Desktop :

$WCLspId = (Get-MgServicePrincipal -Filter "AppId eq 'a4a365df-50f1-4397-bc59-1a1564b8bb9c'").Id

Je modifie la propriété isRemoteDesktopProtocolEnabled sur True :

If ((Get-MgServicePrincipalRemoteDesktopSecurityConfiguration -ServicePrincipalId $WCLspId) -ne $true) {
    Update-MgServicePrincipalRemoteDesktopSecurityConfiguration -ServicePrincipalId $WCLspId -IsRemoteDesktopProtocolEnabled
}

Enfin, toujours dans la même session d’Azure Cloud Shell, j’ajoute l’ID de groupe à une propriété sur le principal du service SSO Microsoft Remote Desktop :

$tdg = New-Object -TypeName Microsoft.Graph.PowerShell.Models.MicrosoftGraphTargetDeviceGroup
$tdg.Id = "<Group object ID>"
$tdg.DisplayName = "<Group display name>"
New-MgServicePrincipalRemoteDesktopSecurityConfigurationTargetDeviceGroup -ServicePrincipalId $WCLspId -BodyParameter $tdg

Enfin, profitez-en pour exclur cette même application dans vos règles d’accès conditionnel Entra afin de ne pas bloquer votre Cloud PC avec un prompt de MFA :

Passons maintenant à la création de notre agent dans Copilot Studio.

Etape IV – Création de l’agent :

Si cela n’est pas déjà fait, ouvrez Copilot Studio, sélectionnez l’environnement créé, puis créez un nouvel agent :

Renseignez les informations suivantes :

  • Nom de l’agent : Invoicing Agent
  • Icône pour personnaliser l’avatar
  • Description :
Automates a deterministic invoice-processing workflow using Computer Use. The agent always executes the Invoice Entry tool once per trigger and never retries or reasons.

Choisissez le modèle d’IA suivant :

Renseignez ensuite la description suivante, puis sauvegardez :

When the trigger fires : 
- Do not ask questions.
- Do not reply to the user.
- Do not request clarification.
- Ignore the email content completely.
- Do not interpret the email.
- Do not extract data from the email.
- Immediately execute the tool "Invoice Entry" exactly once

Importez des documents (PDF, Word, sites SharePoint) qui aideront l’agent à répondre aux questions. Si votre scénario est purement déterministe, cette section peut rester vide :

Pour lancer l’agent à la réception d’un e‑mail de facture, ajoutez-lui un déclencheur :

Recherchez et sélectionnez le déclencheur When a new email arrives in a shared mailbox (V2) :

Saisissez l’adresse de la boîte partagée (ex. Invoices‑inbox@contoso.com), puis cliquez sur Créer :

Dans Settings › Generative AI, activez l’orchestration générative si vous souhaitez que l’agent puisse raisonner :

Dans Topics, désactivez tous les sujets système pour éviter les réponses conversationnelles :

L’outil Computer Use est le cœur de notre agent car il décrit exactement ce que l’agent doit faire sur le PC. Cliquez alors ici pour le créer :

Dans les outils disponibles, choisissez Computer use :

Rédigez des étapes claires et impératives. Utilisez le vous pour s’adresser à l’agent afin d’être cohérent avec le style formel du blog. Voici plusieurs exemples simples proposés par Microsoft :

ScenarioNameDescriptionInstructions
Invoice processingTransfer and submit invoice detailsTransfer invoice data from a PDF and submit it to another form.1. Go to https://computerusedemos.blob.core.windows.net/web/Contoso/invoice-manager.html, set the Date filter to Last 24 hours, and open the invoice PDF.
2. In a new tab, open https://computerusedemos.blob.core.windows.net/web/Contoso/index.html and fill out the form with the data from that PDF. Submit the invoice form, no confirmation needed.
Data entrySubmit inventory itemsAdd products to the inventory system.1. Go to https://computerusedemos.blob.core.windows.net/web/Adventure/index.html.
2. Submit a new entry for each of the following items:
Rear Derailleur, RD-4821, 50, 42.75, Tailspin Toys
Pedal Set, PD-1738, 80, 19.99, Northwind Traders
Brake Lever, BL-2975, 35, 14.50, Trey Research
Chainring Bolt Set, CB-6640, 100, 5.25, VanArsdel, Ltd.
Bottom Bracket, BB-9320, 60, 24.90, Tailwind Traders
Data extractionLook up portfolio manager and valueGet the manager name and value for a portfolio.1. Go to https://computerusedemos.blob.core.windows.net/web/Portfolio/index.html.
2. Find the row for Fourth Coffee and record the Portfolio Manager name and the current Portfolio Value exactly as shown.
3. Return those two values as the final output.

Cliquez ensuite sur Ajouter :

Nommez votre outil, puis indiquez-lui une description :

Processes exactly one invoice only. Runs once per trigger. Must not repeat under any condition.

Choisissez Computer‑Using Agent (Preview) :

Selon votre cas (IIa ou IIb), sélectionnez Bring‑your‑own machine ou Cloud PC Pool :

Fournissez les identifiants nécessaires de votre utilisateur de test :

Cliquez sur Ajouter :

Créez une nouvelle connexion à votre PC :

Renseignez les identifiants de votre utilisateur de test :

Attendez la validation de la connexion :

Enregistrez l’outil afin de pouvoir effectuer un premier test.

Etape V – Test de l’outil Computer‑Using Agent :

Toujours sur Copilot Studio, cliquez sur Test pour lancer un test interactif :

Copilot Studio ouvre alors un écran du Cloud PC et exécute chaque étape en votre présence :

  • Récupération de la dernière facture :
  • Saisie de la facture dans le formulaire web :
  • Saisie de la facture dans le formulaire Microsoft Office :
  • Saisie de la facture dans la feuille Excel :

Quand le test est terminé, la mention suivante apparaît :

Tous les lancements de l’agent sont visibles et traçables dans l’onglet suivant :

Afin de vous faire une meilleure idée du processus complet, voici un enregistrement accéléré de toutes les étapes :

Passons maintenant au dernier test incluant le test du déclencheur de notre agent via l’envoi d’un e-mail vide à l’adresse de messagerie partagée.

Etape VI – Test du déclenchement de l’agent :

Commencez par cliquer sur Publier dans l’en‑tête de l’agent pour le rendre disponible. Les utilisateurs autorisés pourront ainsi déclencher l’agent en lui envoyant un e‑mail ou via une commande spécifique :

Envoyez un e‑mail de test à la boîte partagée :

Dans les activités de Copilot Studio, observez une ligne indiquant que le déclencheur a été détecté :

Cliquez dessus pour ouvrir la vue détaillée de chaque action générant une copie d’écran :

La dernière copie d’écran nous indique la feuille Excel, preuve que le traitement a pu aller jusqu’au bout :

Conclusion

Windows 365 pour Agent marque une évolution importante dans la façon dont nous concevons l’automatisation : on ne parle plus simplement d’exécuter un scénario figé, mais de fournir à un agent IA un environnement Windows complet, sécurisé et gouverné, capable d’agir dans des interfaces qui n’exposent aucune API.

Dans cet article, nous avons volontairement construit un scénario déterministe afin de démontrer que cette approche n’est pas réservée aux cas d’usage “expérimentaux”. Lorsqu’il est correctement cadré, un Computer-Using Agent peut s’intégrer dans un SI existant tout en respectant les exigences de sécurité, de traçabilité et de gouvernance attendues en entreprise.

Cette solution reste toutefois en préversion. Elle implique une réflexion approfondie sur les coûts, la disponibilité régionale et la gestion des identités, et ne remplace pas les automatisations API-first ou les scénarios RPA classiques lorsqu’ils sont plus adaptés.

Windows 365 pour Agent ouvre cependant une voie nouvelle : celle d’agents capables d’opérer dans des environnements hérités ou fermés, là où aucune intégration moderne n’est possible. C’est probablement dans ces zones “grises” du système d’information que cette technologie prendra tout son sens.

Opal sur Windows 365 : quand un agent IA dispose enfin d’un vrai poste de travail

Ces derniers mois, on parle beaucoup d’agents IA, d’automatisation et de “copilots capables d’agir”. Mais dans la réalité du terrain, dès qu’un processus sort des APIs bien propres et documentées, tout s’arrête très vite. Formulaires web sans connecteurs, portails fournisseurs legacy, applications internes sans automatisation possible… C’est exactement là que, jusqu’à présent, l’IA savait quoi faire… mais ne pouvait rien exécuter. C’est précisément ce fossé entre “savoir quoi faire” et “pouvoir le faire” qu’Opal vient combler.

Avec Opal, Microsoft franchit un cap important : pour la première fois, un agent IA ne se contente plus de raisonner ou de proposer des actions : il dispose d’un véritable poste de travail Windows pour les exécuter.

Dans cet article, je vous propose un retour sur Opal, son lien étroit avec Windows 365, son mode de fonctionnement, ses limites actuelles, et surtout dans quels cas d’usage réels cette approche prend tout son sens.

Qu’est-ce que le projet Opal dans Microsoft 365 Copilot ?

Annoncé durant l’Ignite 2025, Opal est une nouvelle capacité de Copilot orientée vers l’automatisation de tâches concrètes et complexes, au-delà de la simple génération de texte ou de réponses. Cette fonctionnalité expérimentale est disponible via le programme Frontier de Microsoft 365 Copilot.

Opal n’est pas un nouveau Copilot de plus :

  • Opal n’est ni un chatbot, ni un simple outil de RPA, ni une extension de Power Automate.
  • C’est un agent IA qui opère dans un environnement Windows réel, avec les mêmes contraintes qu’un utilisateur humain.

Pour faire simple, il s’agit d’un agent IA qui exécute pour vous des tâches réelles et multi-steps dans un environnement sécurisé, en utilisant un PC cloud Windows 365 pour interagir avec des applications web ou systèmes comme le ferait un humain (cliquer, remplir des formulaires, naviguer, etc.).

Toutes les organisations sont confrontées au défi des tâches manuelles répétitives, qui prennent un temps précieux et les détournent de leurs priorités stratégiques, de leur créativité et de leurs activités à fort impact.

Pensez au temps nécessaire pour rassembler des informations provenant de plusieurs sites et outils dans le cadre d’un audit de conformité, pour intégrer de nouveaux employés avec des commandes d’équipement et des accès au système, ou pour valider des bons de commande.

Toutes ces tâches importantes doivent être accomplies, et c’est précisément le type de travail pour lequel Opal a été conçu.

Microsoft Techcommunity

Microsoft met également une FAQ disponible juste ici.

Dans quels cas Opal peut être utile ?

Les entreprises disposent encore de dizaines d’applications sans API, sans connecteur et sans automatisation possible. Opal cible précisément ce vide. Quand aucune API n’existe, Power Automate s’arrête. Opal, lui, continue via l’interface utilisateur.

Opal n’est ni Power Automate, ni un RPA classique : c’est un agent IA capable d’interagir avec un PC cloud Windows 365 :

  • Dès qu’un processus nécessite de cliquer dans une application web ou legacy
  • Télécharger une facture depuis un portail fournisseur, la renommer, puis la déposer dans SharePoint est un scénario typique Opal.

Par contre, Opal n’est pas conçu pour les processus temps réel ni transactionnels critiques.

Quel est le lien entre Windows 365 et Opal ?

Microsoft 365 Copilot sait raisonner, analyser et décider, mais il ne peut pas exécuter d’actions réelles sans poste de travail. Le lien entre Windows 365 et Opal est alors fondamental : Opal a besoin d’un véritable environnement Windows pour pouvoir agir.

Les actions Opal sont exécutées dans un Cloud PC dédié, sans accès direct au poste de l’utilisateur. Le PC cloud Windows 365 sert donc d’environnement sécurisé et isolé pour les actions de l’agent.

On peut résumer l’architecture ainsi :

  • Windows 365 = le corps
  • Opal = les mains
  • Copilot = le cerveau

Ici, Windows 365 fournit à votre IA :

  • une isolation complète du poste de l’utilisateur
  • un PC cloud dédié à l’agent IA
  • un navigateur Edge réel
  • un système de fichiers Windows
  • une session utilisateur contrôlée
  • une identité Microsoft Entra associée

Pourquoi Microsoft n’utilise pas un simple navigateur sandbox ?

Un simple navigateur sandboxé ne permet pas de couvrir les scénarios ciblés par Opal.
Opal n’est pas conçu pour exécuter une action isolée, mais pour enchaîner des tâches complexes, multi-applications et persistantes dans le temps.

Les agents Opal doivent parfois :

  • télécharger et stocker des fichiers localement,
  • ouvrir et manipuler des fichiers Excel, PDF ou CSV,
  • interagir avec plusieurs onglets et fenêtres,
  • conserver un état entre plusieurs étapes,
  • utiliser une identité utilisateur complète (cookies, sessions, certificats),
  • fonctionner avec des extensions navigateur ou des paramètres Edge spécifiques.

Un navigateur isolé et éphémère ne permet pas cela de manière fiable. Un système d’exploitation Windows complet est donc nécessaire pour garantir la continuité, la stabilité et la sécurité de l’exécution.

À quoi à accès Opal sur ces postes Windows 365 ?

Par défaut, Opal n’a accès à aucun site web.

Toute navigation sortante est bloquée tant qu’aucune URL n’a été explicitement autorisée dans le portail d’administration Opal. Sans cette configuration :

  • l’agent ne peut pas ouvrir de site web,
  • il ne peut pas effectuer de recherche internet,
  • il ne peut pas se connecter à une application SaaS.

Ce modèle repose sur une approche deny by default, essentielle pour limiter le périmètre d’action de l’agent IA et éviter toute dérive ou accès non maîtrisé.

Chaque URL autorisée devient ainsi un périmètre fonctionnel clairement défini pour l’agent Opal.

Quels sont les prérequis pour activer Opal sur son tenant ?

Les prérequis exacts ne sont pas encore officiellement figés par Microsoft. À ce jour, Opal est uniquement disponible :

  • dans le cadre du programme Microsoft 365 Copilot Frontier,
  • avec une licence Microsoft 365 Copilot active pour les utilisateurs concernés.

Les dépendances techniques observées incluent également :

  • Microsoft Intune (gestion des Cloud PC),
  • Windows 365 (provisionnement des postes agents),
  • Microsoft Entra ID (identité et accès),
  • Microsoft Graph (onboarding automatisé).

Combien coûte Opal ?

Microsoft n’a communiqué aucun tarif dédié pour Opal à ce stade. Opal n’est pas facturé comme une licence distincte.

Il est inclus, pour le moment, comme fonctionnalité expérimentale du programme Frontier, accessible uniquement avec une licence Microsoft 365 Copilot valide.

Le coût indirect à prendre en compte reste principalement :

  • les licences Windows 365 associées aux Cloud PC agents,
  • les licences Intune,
  • et la licence Microsoft 365 Copilot par utilisateur.

Où les utilisateurs trouvent-ils Opal ?

Les utilisateurs ne trouvent pas Opal comme une application classique dans leur menu Microsoft 365. Opal apparaît dans l’interface Copilot, une fois que l’administrateur a activé la fonctionnalité sur le tenant.

L’URL directe est https://opal.frontier.microsoft365.com peut aussi être utilisée.

Pas de promesses marketing ici : uniquement ce que j’ai pu tester, observer et configurer moi-même sur un tenant Microsoft 365 étape par étape :

Etape 0 – Rappel des prérequis :

Avant toute chose, assurez-vous :

  • d’avoir accès au programme Frontier,
  • de disposer d’un compte Administrateur général,
  • d’avoir Intune et Windows 365 fonctionnels sur le tenant,
  • d’avoir des licences Microsoft 365 Copilot assignées.

Etape I – Configuration du tenant :

Connectez-vous au portail d’administration de Microsoft 365, et depuis le menu de gauche, ouvrez les paramétrages de Copilot, puis sélectionnez Opal (Frontier) dans la liste des fonctionnalités Copilot :

Dans le panneau de configuration Opal, l’option Specific user groups permet de restreindre l’accès à Opal à des groupes Microsoft Entra ID précis, puis sauvegardez :

Etape II – Configuration d’Opal :

Puis cliquez ici pour vous rendre sur le portail d’administration d’Opal afin de continuer la suite de la configuration.

https://opal.frontier.microsoft365.com/admin

Si le message suivant apparaît, vérifiez que vous êtes bien authentifié avec un compte administrateur général, attendez quelques minutes, puis revenez sur le même portail :

Une fois sur le portail d’administration d’Opal, avant d’aller plus loin, prenez le temps de lire le message d’avertissement affiché en évidence :

Afin de mettre en route Opal sur votre tenant Microsoft, téléchargez le script PowerShell suivant via un clic droit :

Le script OpalOnboard.ps1 automatise l’onboarding d’Opal dans un tenant Microsoft 365 via Microsoft Graph, il :

  • installe/charge les modules Microsoft Graph nécessaires, puis se connecte à Graph avec des droits d’admin,
  • crée (si absents) 8 service principals (Opal, Windows 365, AVD, Windows Cloud Login, etc.) pour que le tenant ait les identités applicatives requises,
  • crée un groupe dynamique de devices (“Opal App Device Group”) basé sur une règle de type enrollmentProfileName == « Windows 365 Opal Device Pool »,
  • configure le service principal “Windows Cloud Login” pour activer le RDP et cibler ce groupe de devices,
  • télécharge une policy Edge au format JSON depuis une URL Microsoft, la crée côté Intune (Settings Catalog), puis assigne la policy au groupe de devices.

Sur votre poste local, installez et ouvrez PowerShell 7 :

winget search --id Microsoft.PowerShell

Ouvrez PowerShell 7 avec les droits d’administrateur, exécutez le script, confirmez l’action d’exécution, puis laissez-vous guider :

.\OpalOnboard.ps1

Après l’installation de module, le script se connecte à votre tenant grâce à un compte d’administrateur :

Acceptez les permissions nécessaires :

Si l’erreur suivante apparaît, fermez puis rouvrez simplement PowerShell :

Confirmez les actions d’exécution de création :

  • Création de principaux de services, si absents :
    • 03b184b5-8cb6-45d1-bef1-10db52790f06 Opal – Primary App
    • 90c719d1-2849-4e57-a1d1-0c9edb406be2 Opal Native (On-box agent)
    • 0af06dc6-e4b5-4f28-818e-e78e62d137a5 Windows 365
    • 9cdead84-a844-4324-93f2-b2e6bb768d07 Azure Virtual Desktop
    • a85cf173-4192-42f8-81fa-777a763e6e2c AVD Client
    • 50e95039-b200-4007-bc97-8d5790743a63 AVD ARM Provider
    • 270efc09-cd0d-444b-a71f-39af4910ec45 Windows Cloud Login
    • 351add99-7ff7-4e1f-870f-f98b509209c2 Cloud Device Platform
  • Création d’un groupe dynamique de machines :
    • Nom ame: Opal App Device Group
    • Type: groupe de sécurité
    • (device.enrollmentProfileName -eq « Windows 365 Opal Device Pool »)
  • Configuration du Windows Cloud Login avec notre nouveau groupe de machines :
  • Création de la police Microsoft Edge via Intune :
  • Assignation de la police au groupe dynamique de machines :

Une fois le processus correctement terminé, le message suivant apparaît :

Si cela n’est pas automatique, cliquez sur le bouton de rafraîchissement afin de constater la validation de cette étape :

Enfin, lancez la dernière étape d’onboarding :

Attendez quelques minutes la fin de l’étape suivante :

Quelques minutes plus tard, constatez le succès final de l’étape d’onboarding, puis cliquez sur Suivant :

Une fois l’onboarding technique terminé, vous devez configurer le pool de Cloud PC Windows 365 qui sera utilisé par Opal pour exécuter les tâches.

Etape III – Configuration du pool de machines Windows 365 :

Quelques points importants à retenir :

  • Le Cloud PC est le poste de travail de l’agent Opal, pas celui de l’utilisateur.
  • Toutes les actions (navigation, clics, téléchargements) sont exécutées dans ces Cloud PC Windows 365.
  • Les restrictions d’accès aux sites web permettent de contrôler précisément le périmètre d’action de l’agent.

Cette étape se réalise encore depuis le portail d’administration Opal.

Cette première section permet de définir où seront hébergés les Cloud PC et combien de machines Windows 365 seront créées. Il est recommandé d’utiliser la même région que vos utilisateurs Microsoft 365 :

La création du pool de machines peut prendre plusieurs minutes. Vous pourrez suivre l’état d’avancement directement dans cette section. Ce pictogramme vous indique l’état en cours du provisionnement, ou du re-provisionnement quand un traitement Opal est terminé :

Environ 30 minutes plus tard, les machines Windows 365 sont provisionnées sur votre tenant :

Vous pouvez même retrouver ces nouvelles machines Windows 365 sur votre portail Intune :

Le modèle de machines Windows 365 est d’ailleurs spécifique à ce service d’IA :

Comme attendu, le groupe dynamique de machines Windows 365 regroupe bien celles-ci :

Et la police créée via le script d’onboarding s’affecte bien sur les machines Windows 365 :

De retour sur la console d’administration, ajoutez le ou les sites auxquels les machines auront accès pour effectuer leurs tâches. Dans mon test, je vais ajouter le site suivant :

https://computerusedemos.blob.core.windows.net

L’écran Starters permet de créer des actions prédéfinies proposées aux utilisateurs d’Opal. Un starter correspond à une instruction prête à l’emploi, associée à un site web précis, que l’utilisateur pourra lancer en un seul clic :

Une fois un premier Starter créé, cliquez sur Suivant :

Microsoft recommande de créer un profil Enrollment Status Page (ESP) personnalisé, spécifiquement pour les machines Opal. Ce profil permet notamment de :

  • réduire le temps d’initialisation du Cloud PC,
  • éviter les écrans ESP bloquants,
  • empêcher l’attente d’applications non nécessaires.

Le profil ESP doit être assigné aux appareils correspondant au pool Opal, à l’aide du critère :

enrollmentProfileName = "Windows 365 Opal Device Pool"

Une fois la configuration entièrement complétée, cliquez ici pour terminer le processus :

La suite consiste désormais à créer vos premiers scénarios métier afin de transformer Opal en véritable agent opérationnel capable d’exécuter des tâches concrètes sur des applications web réelles.

Etape IV – Premiers tests d’Opal :

L’URL pour utiliser Opal est celle-ci :

https://opal.frontier.microsoft365.com

Il est aussi possible de retrouver Opal depuis la page d’accueil de Copilot :

Sur Opal, saisissez le prompt suivant afin d’effectuer plusieurs actions, puis cliquez sur Démarrer :

Navigate to https://computerusedemos.blob.core.windows.net/web/Contoso/invoice-manager.html. Filter the invoices by selecting "Last 24 Hours" to find the most recent invoice. Open the PDF of the most recent invoice. In a new browser tab, go to:
https://computerusedemos.blob.core.windows.net/web/Contoso/index.html Fill out the invoice submission form using the data extracted from the PDF. Submit the form without asking for confirmation.

Opal commence par se connecter à une des machines Windows 365 préalablement provisionnées :

Opal attend ensuite que Windows 11 finalise sa configuration OS :

Si besoin, cliquez sur l’image de la VM pour avoir plus de détail. Comme ici, Edge s’ouvre et affiche le site web contenant les factures :

La dernière facture est ouverte pour y récupérer toutes les informations :

Un nouvel onglet s’ouvre dans Edge afin de saisir la nouvelle facture dans le système de comptabilité :

Une fois la saisie complète, une notification apparaît à la fin du traitement de saisie :

Opal compare l’état obtenu aux actions demandées :

Une dernière phase de revue est déclenchée afin que l’utilisateur puisse contrôler le travail effectué :

L’utilisateur n’a qu’à confirmer pour que le travail soit considéré comme terminé :

Afin de vous faire une meilleure idée du traitement effectué par Opal, le voici en fonctionnement :

Etape V – Quelques remarques sur Opal :

Au travers de différents tests, plusieurs points méritent d’être soulignés :

  • Sans finalisation de la configuration d’Opal, le message suivant apparaît pour les utilisateurs :
  • Sans licence Microsoft 365 Copilot, l’accès à Opal retourne une erreur 403 :
  • Après chaque traitement, la machine Windows 365 utilisée est réinitialisée et repart sur un état propre :
  • Il faut attendre environ 15 minutes avant que la machine soit de nouveau disponible pour un autre traitement :
  • Le bouton Pause permet de suspendre temporairement l’exécution sans annuler le scénario, tout en conservant le contexte courant. Cela est très utile si l’utilisateur souhaite reprendre la main quand l’agent part dans une mauvaise direction :
    • l’agent arrête immédiatement d’exécuter des actions (clics, saisies, navigation, appels d’outils)
    • le contexte et l’état courant sont conservés (où il en est dans la tâche)
  • Opal peut décider de s’arrêter de lui-même s’il rencontre une situation ambiguë ou non résoluble, et attend alors une instruction humaine.
  • Durant la phase de traitement d’Opal, 3 autres actions sont possibles :
    • Répéter la requête initiale : Cette action relance exactement le même job depuis le début, en réutilisant la requête initiale, les mêmes instructions et le même contexte de départ. C’est comme cliquer sur “Rejouer le scénario”, sans modifier quoi que ce soit.
    • Terminer le travail : Cette action met fin au job en cours et empêche toute poursuite de ce run, mais le job reste disponible dans l’interface.
    • Supprimer le travail : Le job n’est plus visible ni relançable, mais cela ne désactive pas automatiquement un trigger externe (mail, événement, etc.) s’il existe.

Conclusion

Opal marque une rupture importante dans l’approche de l’automatisation chez Microsoft.
Là où Power Automate s’arrête faute d’API, Opal continue grâce à un véritable poste de travail Windows 365 piloté par une IA.

Nous ne sommes plus dans la simple génération de contenu, mais dans l’exécution réelle de tâches métier, au plus proche du travail humain.

Les premiers usages montrent un potentiel considérable, à condition de bien cadrer les périmètres, les accès et les scénarios. On ne parle pas encore d’autonomie totale, mais d’un changement profond dans la manière dont une IA peut interagir avec des systèmes existants.

Opal n’est pas encore prêt pour des processus critiques temps réel, mais il ouvre clairement la voie à une nouvelle génération d’agents opérationnels.

Quelques nouveautés sur M365 Copilot

Microsoft 365 Copilot évolue constamment, et à un rythme très soutenu. Comme beaucoup, j’ai du mal à suivre ces changements en temps réel, car plusieurs facteurs entrent en jeu. D’abord, le temps nécessaire pour se tenir à jour représente déjà une contrainte importante. S’y ajoutent la diversité des canaux de communication utilisés par Microsoft pour annoncer les nouveautés, ainsi que les disparités de déploiement : certaines fonctionnalités sont disponibles plus tôt dans certains tenants ou pays que dans d’autres. Bref, chacun fait comme il peut, et c’est déjà pas mal.

Cela étant dit, j’aimerais prendre un moment pour faire le tour de quelques nouveautés que je trouve particulièrement intéressantes. Ces informations proviennent à la fois des notes officielles de Microsoft et de certaines chaînes YouTube qui font, il faut le reconnaître, un excellent travail de vulgarisation et de démonstration :

Mon objectif est donc de partager avec vous certaines de ces découvertes et, lorsque c’est possible, d’y ajouter quelques retours issus de mes propres tests :

Fonctionnalité I – Utilisez plus souvent GPT-5 :

Depuis plusieurs mois maintenant, GPT‑5 est désormais intégré comme modèle principal pour Copilot. L’utilisation de GPT-5 permet une réponse plus riche : meilleure compréhension du contexte, capacité à traiter des documents volumineux ou complexes :

Copilot Chat est en train de passer au dernier modèle d’IA générative d’OpenAI, le modèle GPT-5, en tant que LLM principal de prise en charge. Essayez GPT-5 avec vos invites Copilot en sélectionnant le bouton Essayer GPT-5 en haut à droite dans Copilot Chat.

Microsoft

Vous pouvez utiliser le bouton Essayer GPT-5 dans Copilot Chat que vous disposiez ou non d’une licence Microsoft 365 Copilot, mais l’accès peut être limité en période de forte charge.

L’activation du mode GPT-5 est visible en haut à droite de Copilot :

Quelques remarques :

  • Vous devez activer GPT-5 pour chaque nouvelle conversation.
  • Vous pouvez activer GPT-5 même après avoir commencé à saisir votre premier prompt, et cela sans en perdre la saisie,
  • Il n’est pas possible de basculer sur GPT-5 dès que la conversation a démarré.
  • Une fois GPT-5 activé, la conversation continuera de travailler avec lui :

Voici un exemple de prompt que je souhaite poser à GPT-4 et GPT-5 pour voir leur réponse et les comparer :

Agis comme un architecte cloud senior chargé de présenter à la direction d’une entreprise internationale (800 employés, multi-sites, multi-fuseaux) une proposition stratégique complète pour moderniser son environnement Microsoft 365.

Contexte : L’entreprise a une infrastructure hybride (Active Directory local, Exchange on-premises, quelques workloads déjà sur Azure).
Les équipes utilisent encore des outils locaux (fichiers partagés, VPN, emails internes) et peinent à collaborer efficacement à distance.
La direction veut réduire les coûts, améliorer la sécurité, et accélérer la collaboration avec Microsoft 365 et Azure AD/Entra ID.

Tâche : 
- Rédige un document de cadrage exécutif présentant :
- Une synthèse stratégique (valeur métier, enjeux, risques, bénéfices attendus)
- Une proposition d’architecture cible (identités, sécurité, collaboration, données, gouvernance)
- Un plan de transformation (étapes, jalons, gouvernance projet, rôles, communication interne)
- Des indicateurs de succès (KPIs), différenciant la vision IT et la vision métier
- Une conclusion exécutive résumant l’impact global de la transformation

Contraintes :

- Rédige avec un ton professionnel, synthétique et narratif.
- Le document doit sembler prêt à être présenté à un COMEX.
- Utilise la mise en page Markdown avec des titres, sous-titres et éventuellement des tableaux synthétiques.
- Sois précis mais fluide : évite les listes sèches et ajoute des transitions naturelles.

Et cela nous permet de sortir une comparaison des réponses données par Copilot en fonction de ces deux modèles, vu par ChatGPT :

  • Avec le même prompt, GPT-4 fait un très bon travail de structuration technique, il produit un livrable cohérent et complet.
  • GPT-5, lui, comprend le contexte exécutif : il ne se contente pas d’empiler des points, il raconte la transformation, hiérarchise l’information, et adapte le ton à une audience de direction.

Pourquoi devoir recliquer à chaque fois ?

Cela peut paraître agaçant, mais le bouton existe pour des questions économiques : cela permet d’éviter une activation automatique, et donc une meilleure maîtrise des coûts et des performances.

Fonctionnalité II – Explorer avec l’agent Researcher :

L’agent Researcher de Microsoft 365 Copilot s’apparente à un assistant de recherche avancé, spécialement conçu pour traiter des tâches complexes et multi-étapes.

Plutôt que de se contenter d’une réponse rapide à une question, l’agent Researcher croise vos contenus professionnels (documents, courriels, discussions, fichiers) avec des sources web fiables pour produire un rapport structuré : sections thématiques, visuels (graphiques, tableaux), et citations explicites des sources.

Researcher est donc particulièrement utile quand il s’agit de faire de la veille technologique, un benchmark, une analyse d’un domaine, ou l’élaboration d’un dossier que l’on pourra partager ou présenter :

Il diffère de la fonction de “chat classique” de Copilot : alors que celle-ci vise rapidité, synthèse simple ou support conversationnel, Researcher est optimisé pour un travail en profondeur avec plus de réflexion, plus de temps de traitement et un livrable plus riche.

Quand privilégier Research par rapport Chat classique :

  • Si tu dois préparer une réunion, un dossier stratégique ou un benchmark, Researcher va compiler et croiser les informations pertinentes bien au-delà de ce que le chat classique peut proposer.
  • Pour toute question nécessitant de vérifier, nuancer ou justifier avec des sources croisées et fiables, Researcher est clairement plus adapté.
  • ​Lorsque la rapidité n’est pas la priorité et qu’il te faut de la profondeur, de la précision et une vue d’ensemble.

Peut-être que le second agent, Analyst, pourrait aussi vous être utile :

Fonctionnalité III – Partagez vos prompts avec vos équipes

Historiquement, Microsoft 365 Copilot permettait déjà de sauvegarder des prompts dans une galerie personnelle, offrant ainsi la possibilité de retrouver facilement ses requêtes récurrentes et de les réutiliser :

Cette fonctionnalité a évolué pour aller plus loin : désormais, il est possible non seulement de conserver ses prompts, mais aussi de les partager avec une équipe, favorisant la collaboration et la cohérence dans l’usage des prompts au sein d’un groupe.

Commencez par sauvegarder un prompt dans la galerie personnelle :

Retournez dans la galerie afin de partager :

Sélectionnez d’une équipe spécifique :

Cela crée un nouvel onglet dans la galerie montrant les prompts partagés dans la galerie aux équipes :

Fonctionnalité IV – Activez Claude dans M365 Copilot :

Claude est un modèle d’intelligence artificielle développé par Anthropic, conçu pour offrir des capacités avancées de génération de texte, d’analyse et d’assistance contextuelle. Il se distingue par son approche axée sur la sécurité et la transparence, ce qui en fait un outil fiable pour les entreprises souhaitant intégrer l’IA dans leurs processus.

Depuis peu, il est possible d’activer Claude via le portail Microsoft 365 Admin Center. Cette fonctionnalité permet aux administrateurs de rendre Claude disponible pour les utilisateurs en quelques clics :

Une fois activé, le statut change dans la console, confirmant que Claude est opérationnel :

Voici l’interface avant activation, sans le bouton Claude :

Voici l’interface après activation, avec le bouton Claude :

Voici l’interface avec utilisation du modèle Claude :

Je souhaite en savoir un peu plus sur lui-même, et donc je lui pose la question sur le modèle utilisé :

Il en ressort plusieurs pistes de modèles envisagés :

Attention néanmoins une chose importante :

Lorsque votre organisation choisit d’utiliser un modèle Anthropic, elle accepte de partager ses données avec Anthropic afin d’alimenter les fonctionnalités. Ces données sont traitées en dehors de tous les environnements et contrôles d’audit gérés par Microsoft ; par conséquent, les accords clients de Microsoft, y compris les Conditions des produits et l’Addendum relatif au traitement des données, ne s’appliquent pas.

Microsoft Learn

Cela nous amène donc à se soumettre aux règles de traitement des données émises par Anthropic :

Pour évaluer l’impact de Claude, un prompt a été testé avec et sans Claude :

Who are the key players on the [Stade Toulousain / La Rochelle] rugby team, and what are their 2025 Top 14 stats — including appearances, tries, tackles, points, and how long they've been with the club?

Prompt avec Researcher et Claude :

Prompt avec Researcher sans Claude :

L’objectif est de comparer les réponses et d’identifier les différences de raisonnement entre Research, et Research + Claude via l’analyse de chatGPT-5 :

Ce test met en évidence la valeur ajoutée de Claude en termes de précision et de contextualisation :

CritèreKey Players and 2025 Top 14 JLO.docxKey Players and 2025 Top 14 ANNA.docx
Structure du texteExplicative, incomplète, avec excuses techniques.Structurée, complète, avec tableaux et données détaillées.
Niveau de donnéesGénéralités (meilleurs marqueurs du championnat, sources officielles citées, pas de chiffres précis par joueur).Statistiques chiffrées par joueur, par équipe (apparitions, essais, plaquages, points, année d’arrivée).
Style de tonExcuses, proposition d’alternatives, formulation prudente et narrative.Informatif, orienté data, structuré en tableaux avec contexte analytique.
Sources citéesLNR.fr, All.Rugby, Ultimate Rugby, RugbyPass (mais sans données concrètes).LNR.fr et sources officielles, mentionnées à la fin de chaque section.
Degré de complétudeFaible : pas de données par joueur.Élevé : tableau complet pour Toulouse et La Rochelle.
LangageRédigé à la première personne (“I apologize”, “Would you like me to…”).Neutre et objectif (“Below is the full Toulouse squad…”).
Style d’IA reconnaissableTypique d’un agent de type Claude (Anthropic) : ton empathique, explicatif, s’excuse pour limitations.Typique d’un agent Research classique / GPT : structuration analytique, données brutes et tables.

chatGPT-5 identifie très facilement le fonctionnement de Researcher avec et sans Claude :

FichierType probable de générationJustification
Key Players and 2025 Top 14 JLO.docx🧠 Claude (Anthropic)Ton conversationnel, excuses, impossibilité d’accéder aux données, approche narrative typique d’Anthropic.
Key Players and 2025 Top 14 ANNA.docx🔍 Research classique (type OpenAI)Présentation analytique, structuration en tableaux complets, ton factuel et format de rapport structuré.

Fonctionnalité V – Créez une conversation de groupe Teams à la suite de prompts :

Une fois la conversation démarrée avec Copilot, un bouton apparaît en haut à droite. Il permet la création nouveau groupe de conversation avec l’IA et d’autres personnes :

Copilot vous demande le nom des participants à ce nouveau groupe de conversation, ainsi que la longueur de l’historique de conversation Copilot :

Une fois le nouveau groupe de conversation créé, celui-ci est accessible directement depuis Teams :

Les membres de ce nouveau groupe de conversation sont visibles et l’IA en fait bien partie :

Fonctionnalité VI – Activer le programme Microsoft Frontier pour Copilot :

Le mode Frontier n’est pas une simple option, mais fait partie d’un programme Microsoft d’initiative d’accès anticipé aux fonctionnalités expérimentales de Microsoft 365 Copilot :

  • Il permet aux utilisateurs sélectionnés (avec une licence Copilot) de tester des capacités IA avancées avant leur disponibilité générale.
  • L’objectif est de recueillir des retours pour améliorer les fonctionnalités avant leur lancement officiel.

Les fonctionnalités Frontier sont disponibles pour tous les clients Microsoft 365 disposant d’une licence Copilot. Les paramètres d’administration de votre organisation peuvent déterminer qui peut accéder et utiliser les fonctionnalités Frontier.

De plus, les personnes ayant un abonnement Microsoft 365 Personnel, Famille ou Premium peuvent également accéder et utiliser les fonctionnalités Frontier.

Il existe deux principales façons d’essayer les fonctionnalités Frontier :

  • Agents Frontier : Suivez les étapes indiquées dans « Accéder aux agents Frontier ».
  • Fonctionnalités principales des applications Microsoft : Suivez les étapes indiquées dans « Accéder aux fonctionnalités principales des applications Microsoft ».

L’activation du mode Frontier se fait via le portail Microsoft 365 Admin Center. Cette fonctionnalité permet aux administrateurs de le rendre disponible pour certains utilisateurs en quelques clics :

Définissez les utilisateurs concernés par les tests de Frontier :

Il faut compter plusieurs heures avant de voir apparaître les agents et les modes agents apparaître dans les environnements de vos utilisateurs :

Voici par exemple les agents Frontier disponibles :

L’autre fonctionnalité est le mode agent, disponibles sur Word ou Excel :

Le mode agent dans Word vous permet d’utiliser Copilot de manière plus interactive. Dites simplement à Copilot ce que vous voulez, par exemple « résumer les commentaires récents des clients et mettre en évidence les tendances clés », et il rédigera, affinera et mettra en forme votre document pour vous.

L’écriture devient une conversation : vous vous concentrez sur vos idées et Copilot gère les détails avec les styles et la mise en forme intégrés de Word. 

Microsoft

Il est possible de demander à Copilot de rédiger, reformuler ou compléter des sections. L’IA pose des questions pour clarifier et améliore le contenu jusqu’à ce que l’on soits satisfait. C’est ce que Microsoft appelle le vibe writing :

Le mode Agent transforme Word en un espace de travail interactif où tu peux collaborer avec l’IA de manière conversationnelle, plutôt que par des commandes ponctuelles :

Fonctionnalité VII – Créez vos applications grâce à l’agent App Builder :

App Builder est un agent intégré à Microsoft 365 Copilot, disponible via le programme Frontier :

App Builder, un agent qui fonctionne avec Microsoft Copilot, transforme vos idées en applications. Aucun codage requis ! Il suffit de décrire ce dont vous avez besoin, et une application personnalisée est générée pour vous.

Quels types d’applications pouvez-vous créer ? Les possibilités sont infinies : créez une application RSVP pour des événements, une application de gestion des dépenses pour soumettre vos frais, une application pour organiser et gérer des scrums, et bien plus encore !

Microsoft

Depuis le portail Microsoft 365 Chat, vous pouvez ajouter cet agent très facilement :

Il suffit ensuite de lui demander de créer votre application, comme « Crée une app pour suivre les incidents » :

Et l’agent commence à se mettre au travail :

Quelques minutes plus tard, un premier résultat apparaît :

Comme avec tout autre agent, la conversation doit continuer afin de lui demander de faire des améliorations ou des corrections :

Un site SharePoint est même créé afin de stocker les informations de l’application, sous forme de listes :

Je teste l’application via l’ajout d’une nouvelle saisie, puis je sauvegarde :

La nouvelle saisie est bien présente :

Elle est également retranscrite dans la liste SharePoint :

Certaines demandes se terminent en erreur, mais App Builder arrive à effectuer les corrections :

Une fois l’application terminée, je peux mettre à jour la nouvelle version si je suis satisfait des modifications :

Pour le moment, l’application créée via App Builder reste uniquement accessible via ce dernier, mais peut être lancée, partagée ou modifiée :

Conclusion

À travers ces différentes fonctionnalités, une tendance se dessine : Microsoft 365 Copilot devient moins un simple assistant conversationnel et davantage un environnement complet d’agents capables d’explorer, d’analyser, de créer et de collaborer au rythme des besoins.

Les modèles disponibles, les capacités étendues de Researcher, l’arrivée d’App Builder ou encore l’ouverture aux modèles tiers enrichissent l’écosystème, tout en demandant une veille constante tant les évolutions sont rapides.

Ce panorama illustre surtout une chose : chacun peut désormais adapter Copilot à ses usages, qu’il s’agisse de mieux comprendre un sujet, de structurer un livrable, d’automatiser un processus ou de tester des fonctionnalités avant leur mise à disposition générale.

Amusez-vous avec MCP & Copilot grâce à Chuck Norris

Microsoft met à disposition un nouveau lab sympa pour tester la création et l’intégration de serveurs Model Context Protocol (MCP) dans Copilot Studio. Voici un exemple concret d’implémentation d’un serveur MCP, interrogeant ici un endpoint public qui renvoie une blague Chuck Norris aléatoire sous forme de JSON, et que l’on peut déployer localement ou sur Azure.

Qu’est-ce que le MCP ?

Pour rappel, le Model Context Protocol (MCP) est un standard ouvert qui permet de connecter simplement des sources de données ou des API à des modèles d’IA.

J’ai déjà publié plusieurs articles à ce sujet sur mon blog ; vous pouvez les retrouver juste ici :

MCP vs API traditionnelles : quelles différences ?

Pour comprendre l’importance du MCP, comparons-le aux API REST traditionnelles :

CaractéristiqueMCPAPI REST traditionnelles
CommunicationBidirectionnelle et en temps réelGénéralement requête-réponse unidirectionnelle
Découverte d’outilsAutomatique et dynamiqueConfiguration manuelle nécessaire
Conscience du contexteIntégréeLimitée ou inexistante
ExtensibilitéPlug-and-playEffort d’intégration linéaire
StandardisationProtocole unifié pour tous les modèlesVariable selon les services
OrientationConçu spécifiquement pour les modèles d’IAUsage général

Cette standardisation représente un changement de paradigme pour quiconque souhaite développer des applications IA véritablement connectées.

Architecture et fonctionnement du MCP :

L’architecture du MCP repose sur trois composants principaux qui interagissent de façon coordonnée :

Les composants clés du MCP

  1. Hôtes MCP : Ce sont les applications qui intègrent l’IA et ont besoin d’accéder à des données externes. Par exemple, Claude Desktop, un IDE comme Cursor, ou toute application intégrant un LLM.
  2. Clients MCP : Ce sont des intermédiaires qui maintiennent les connexions sécurisées entre l’hôte et les serveurs. Chaque client est dédié à un serveur spécifique pour garantir l’isolation.
  3. Serveurs MCP : Ce sont des programmes externes qui fournissent des fonctionnalités spécifiques et se connectent à diverses sources comme Google Drive, Slack, GitHub, ou des bases de données.

Le flux de communication MCP se déroule typiquement en quatre étapes bien définies :

  1. Découverte : L’hôte (comme Claude Desktop) identifie les serveurs MCP disponibles dans son environnement
  2. Inventaire des capacités : Les serveurs MCP déclarent leurs fonctionnalités disponibles (outils, ressources, prompts)
  3. Sélection et utilisation : Quand l’utilisateur pose une question nécessitant des données externes, l’IA demande l’autorisation d’utiliser un outil spécifique
  4. Exécution et retour : Le serveur MCP exécute l’action demandée (recherche web, accès à un fichier, etc.) et renvoie les résultats à l’IA qui peut alors formuler une réponse complète

Ce processus standardisé permet une communication fluide entre l’IA et les sources de données externes, tout en maintenant un contrôle transparent pour l’utilisateur.

Que propose Microsoft dans ce lab ?

Cette page explique comment tester un serveur MCP en local ou hébergé sur Azure :

Ce guide constitue donc un point de départ idéal pour expérimenter la connexion et l’interaction entre un serveur MCP et Copilot.

L’exercice consiste à configurer un serveur MCP, d’abord sur Azure puis en local, afin de comprendre son fonctionnement et tester ses outils :

  • La première partie de l’exercice consiste à déployer sur Azure Container Apps pour valider le bon fonctionnement du serveur MCP hébergé.
  • La seconde partie de l’exercice consiste à le redéployer en local cette fois-ci.
  • Dans les deux cas, vous expérimentez les actions soit directement au travers de prompts.

Microsoft propose également une vidéo YouTube qui illustre pas à pas la mise en place de ce lab MCP et son intégration dans Copilot Studio. Idéale pour suivre visuellement chaque étape :

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

Etape 0 – Rappel des prérequis :

Pour réaliser l’exercice sur Azure ou en local, il vous faudra dans tous les cas disposer de :

Puis, pour un déploiement sur Azure, il vous faudra disposer en plus de :

  • Un tenant Microsoft
  • Un abonnement Azure valide

Enfin, pour un déploiement en Local, il vous faudra disposer en plus de :

Commençons par déployer notre serveur MCP de test sur Azure.

Etape I – Test de déploiement sur Azure :

Cliquez sur le bouton suivant pour créer un nouveau repository sur votre compte GitHub :

Nommez le repository, choisissez sa visibilité, puis cliquez sur Créer :

Dans une fenêtre Powershell, lancez la commande suivante pour installer le module Azure Developer CLI (azd) :

winget install microsoft.azd

Exécutez la commande suivante pour télécharger les fichiers du repository en adaptant la variable de votre compte :

git clone https://github.com/{account}/mcsmcp.git

Ouvrez Visual Studio Code et chargez le dossier correspondant à l’archive téléchargée :

Lancez la commande suivante pour vous connecter à votre compte Azure :

azd auth login

Complétez l’authentification via le navigateur Internet de votre choix :

Lancez la commande pour déployer les ressources sur Azure :

azd up

Donnez un nom à votre environnement Azure :

Sélectionnez la souscription Azure à utiliser :

Choisissez la région Azure appropriée :

Patientez quelques minutes pendant le déploiement :

Constatez l’apparition des ressources dans le portail Azure :

Attendez la confirmation de fin de déploiement avec succès :

Rafraîchissez la page des ressources Azure et cliquez sur le Container App déployé :

Vérifiez dans les réplicas que le conteneur de l’application est bien en statut Running :

Retournez sur la page principale pour récupérer l’URL de votre déploiement :

Collez cette URL dans un navigateur en ajoutant /mcp pour vérifier le message d’erreur attendu (preuve que le service tourne) :

Notre environnement Azure est maintenant en place, nous pouvons passer directement à l’étape III afin de déployer notre connecteur MCP dans un nouvel agent sur Copilot Studio.

Etape II – Test de déploiement en local :

Lancez la commande npm install pour installer les dépendances nécessaires du projet :

npm install

Exécutez la commande suivante pour compiler et démarrer le serveur MCP en local :

pm run build && npm run start

Copiez l’URL affichée par le serveur et ouvrez-la dans un navigateur pour vérifier le message d’erreur attendu (preuve que le serveur fonctionne) :

localhost:3000/mcp

Lancez la commande ngrok suivante pour exposer votre serveur MCP local sur Internet :

ngrok http http://localhost:3000

Copiez l’URL publique générée par ngrok :

Ouvrez-la dans un navigateur (en ajoutant /mcp) pour tester le bon fonctionnement du serveur :

Lancez la commande suivante pour démarrer l’outil MCP Inspector :

npx @modelcontextprotocol/inspector

Dans l’interface web de MCP Inspector, collez l’URL publique (ngrok) de votre serveur MCP puis cliquez sur Connecter :

Cliquez sur Lister les outils pour afficher les outils disponibles sur le serveur MCP :

Sélectionnez l’un des outils listés puis lancez-le pour exécuter une action :

Constatez l’apparition d’une blague Chuck Norris renvoyée par le serveur MCP, signe que tout fonctionne correctement :

Notre environnement Local est maintenant en place, nous pouvons passer directement à l’étape III afin de déployer notre connecteur MCP dans un nouvel agent sur Copilot Studio.

Etape III – Création de l’agent dans Copilot Studio :

Rendez-vous dans Copilot Studio pour créer un nouvel agent :

Donnez un nom à votre agent :

Jokester

Ajoutez une description à votre agent :

A humor-focused agent that delivers concise, engaging jokes only upon user request, adapting its style to match the user's tone and preferences. It remains in character, avoids repetition, and filters out offensive content to ensure a consistently appropriate and witty experience.

Définissez les instructions de l’agent :

You are a joke-telling assistant. Your sole purpose is to deliver appropriate, clever, and engaging jokes upon request. Follow these rules:
- Respond only when the user asks for a joke or something related (e.g., "Tell me something funny").
- Match the tone and humor preference of the user based on their input—clean, dark, dry, pun-based, dad jokes, etc.
- Never break character or provide information unrelated to humor.
- Keep jokes concise and clearly formatted.
- Avoid offensive, discriminatory, or NSFW content.
- When unsure about humor preference, default to a clever and universally appropriate joke.
- Do not repeat jokes within the same session.
- Avoid explaining the joke unless explicitly asked.
- Be responsive, witty, and quick.

Ajoutez des prompts suggérés pour guider l’usage :

Cliquez sur Créer pour finaliser la création de l’agent :

Attendez quelques secondes :

Allez dans l’onglet Outils et cliquez sur Ajouter un outil :

Sélectionnez le type Model Context Protocol, puis ajoutez un nouvel outil :

Sélectionnez le type Model Context Protocol pour ajouter un outil MCP :

Renseignez un nom, une description et l’URL publique terminant par /mcp, puis créez sans authentification :

Créez une nouvelle connexion pour ce serveur MCP :

Cliquez sur Créer pour valider la connexion

Cliquez sur Ajouter et configurer pour intégrer l’outil à l’agent :

Constatez l’apparition des outils MCP dans votre connecteur MCP :

Cliquez sur Tester et envoyez un prompt demandant une blague :

Tell me a Chuck Norris joke

Vérifiez la réponse renvoyée par le serveur MCP :

Cliquez sur Publier pour mettre votre agent à disposition :

Confirmez la publication en cliquant à nouveau sur Publier :

Patientez quelques secondes le temps que la publication se termine :

Ouvrez l’onglet Canaux pour activer la mise à disposition sur Teams et Microsoft 365 Copilot :

Cliquez sur Publier à nouveau pour confirmer l’activation :

Cliquez sur Publier à nouveau pour confirmer l’activation :

Patientez quelques secondes le temps que la publication se termine :

Rouvrez Teams / Microsoft 365 Copilot puis cliquez sur le lien suivant :

Dans Microsoft 365 Copilot Chat, cliquez sur Ajouter votre agent :

Testez les prompts suggérés mis à disposition :

Si un message d’erreur concernant du filtrage apparaît :

Retournez dans la configuration pour ajuster la modération de l’agent :

Cliquez de nouveau sur Publier après avoir modifié la modération :

Revenez sur Microsoft 365 Copilot Chat et retestez un prompt :

Vérifiez que la réponse s’affiche correctement :

Testez à nouveau avec d’autres prompts suggérés :

En voyant certaines blagues, je comprends que Copilot ai pu vouloir en filtrer 😂 :

Conclusion

Le Model Context Protocol (MCP) n’est plus une simple curiosité technique : il s’impose comme un standard ouvert pour connecter intelligemment nos IA aux sources de données et services externes.

Avec ce lab proposé par Microsoft, on peut expérimenter très concrètement l’intégration d’un serveur MCP dans Copilot Studio, que ce soit sur Azure ou en local.

Ce qui m’a particulièrement plu, c’est la simplicité du déploiement : quelques commandes suffisent pour tester un serveur, valider son fonctionnement, puis l’exposer directement à un agent Copilot.

Cela ouvre la voie à des scénarios bien plus avancés : connecter des bases de données internes, des outils métiers, ou encore enrichir vos assistants IA avec des fonctionnalités maison.

Testez un Custom MCP sur Copilot

Le protocole MCP continue toujours de gagner en popularité. Au travers de Copilot Studio, Microsoft propose, jour après jour, de plus en plus de connecteurs MCP, disponibles directement sur étagère. Mais qu’en est-il, lorsque le connecteur MCP vers la solution souhaitée n’existe pas encore ? Rassurez-vous, la mise en place d’un serveur MCP personnalisé est tout à fait possible dans Copilot Studio.

Il s’agit du 3ème article parlant du Model Context Protocol (MCP) écrit sur ce blog, dont voici un rappel des deux premiers :

Enfin, un autre article détaille le principe des instructions personnalisées et la mémoire disponibles sur Microsoft 365 Copilot et accessibles juste ici.

Mais qu’est-ce que MCP ?

Le Model Context Protocol (MCP) est un protocole qui permet à des assistants IA de se connecter de façon sécurisée à des sources de données et outils externes… bla bla … 🤣

Mais, si cette notion est nouvelle pour vous, je ne peux vous conseiller que de commencer par regarder cette excellente vidéo :

Comment tester un serveur MCP sur Copilot ?

Il est très simple et très rapide de tester un serveur MCP depuis l’application Desktop de Claude.

Les démonstrations mixant un serveur Custom MCP et Copilot sont encore un peu rares pour le moment, mais elles vont vite devenir légion. Mais, durant mes recherches, je suis tombé sur cet exercice, disponible sur un Bootcamp Copilot créé par Microsoft :

Cette petite démonstration MCP n’est pas révolutionnaire en soi, mais je la trouve bien pensée, car elle est très simple à mettre en place, et elle permet de comprendre comment Copilot va pouvoir se connecter avec les données de test via le serveur MCP.

Que contient cette démonstration ?

Nous allons commencer par déployer un serveur MCP de test servant à la gestion fictive de candidats RH. Le serveur est basé sur du .NET, et s’appuie sur le SDK MCP pour C#. Le serveur fournit des outils permettant de gérer la liste de candidats HR :

  • Lister les candidats
  • Rechercher un candidat
  • Ajouter un candidat
  • Mettre à jour un candidat
  • Supprimer un candidat

Une fois le serveur MCP en place, on va à l’intégrer à Microsoft 365 Copilot, via Copilot Studio, afin de gérer la liste de candidats RH via des prompts appelant ces outils MCP.

Aussi je vous propose donc de faire cet exercice ensemble 😎

Etape 0 – Rappel des prérequis :

Pour réaliser cet exercice, il vous faudra disposer des outils suivants sur votre poste :

Une fois ces prérequis installés sur votre poste. Nous allons pouvoir continuer en commençant par installer et configurer notre serveur MCP.

Etape I – Mise en place du serveur MCP :

Commencez par téléchargez l’archive du serveur MCP via ce lien GitHub :

Une fois l’archive ZIP sur votre poste, pensez à débloquer celle-ci via ses propriétés :

Décompressez-la dans un dossier local de votre choix :

Ouvrez Visual Studio Code, puis cliquez sur “Ouvrir un dossier” afin de sélectionner le dossier que vous venez de décompresser :

Prenez un moment pour parcourir la structure du projet.
Vous y trouverez :

  • un dossier Configuration avec le fichier HRMCPServerConfiguration.cs,
  • un dossier Data contenant candidates.json,
  • un dossier Services avec l’interface et l’implémentation CandidateService.cs,
  • un dossier Tools avec les définitions des outils et modèles (HRTools.cs, Models.cs),
  • et le fichier Program.cs, point d’entrée du projet.

Ouvrez une fenêtre de terminal intégrée dans Visual Studio Code, puis exécutez la commande suivante :

dotnet run

Copiez l’URL locale qui s’affiche dans le terminal :

http://localhost:47002/

Ouvrez le navigateur internet de votre choix, puis collez l’URL. Vous devriez voir apparaître un message d’erreur au format JSON : c’est le comportement attendu et cela confirme que le serveur est bien démarré.

Ngrok est un outil de tunnellisation qui permet d’exposer de manière sécurisée un serveur local à Internet via une URL publique, sans avoir à configurer manuellement votre réseau ou à ouvrir des ports dans votre pare-feu.

Pour cela, rendez-vous sur le site de Ngrok, puis inscrivez-vous chez eux afin d’avoir un compte gratuit :

Sur leur site, téléchargez l’installateur de Ngrok selon votre OS :

Copiez la commande suivante affichée sous l’installateur pour finaliser la configuration de votre Ngrok :

Depuis votre ordinateur, ouvrez Windows PowerShell, puis lancez la commande précédemment copiée afin de terminer la configuration Ngrok :

Créez un tunnel ngrok sécurisé depuis Internet vers votre serveur local qui écoute sur le port 47002, en générant une URL publique accessible depuis n’importe quel navigateur :

ngrok http http://localhost:47002

Copiez le nom de domaine commençant par https et finissant par ngrok-fre.app. Ne fermez pas cette fenêtre tant que le processus d’enrôlement API n’est pas entièrement fini :

Cliquez sur le lien public affiché par votre tunnel (ngrok / Dev Tunnel) afin de vérifier que l’URL redirige bien vers votre service local.

Constatez l’affichage de la même réponse JSON “d’erreur” que sur localhost : cela confirme que la liaison via le tunnel fonctionne correctement.

Ouvrez une fenêtre PowerShell, lancez la commande suivante afin de télécharger et exécuter le binaire MCP Inspector sans installation globale

npx @modelcontextprotocol/inspector

Patientez quelques secondes : MCP Inspector génère son URL locale et un token d’accès.

MCP ouvre automatiquement le navigateur web, collez l’URL publique de votre serveur MCP ngrok, puis cliquez sur Connecter :

Une fois connecté, cliquez sur le bouton pour lister les outils disponibles exposés par ce serveur MCP.

Sélectionnez un des outils proposés (par exemple list_candidates), puis cliquez ici pour l’exécuter :

Constatez l’apparition des résultats liés aux candidats RH retournés par le serveur MCP.

Le serveur MCP est opérationnel ; poursuivez dans Copilot Studio afin de créer votre agent et consommer les outils exposés par ce serveur.

Etape II – Création de l’agent Copilot :

Ouvrez le portail Microsoft Copilot Studio, puis cliquez ici pour créer un nouvel agent :

Cliquez sur Configurer, renseignez les informations de base, puis cliquez sur Créer :

  • Nom :
HR Candidate Management
  • Description :
An AI assistant that helps manage HR candidates using MCP server integration for comprehensive candidate management
  • Instructions :
You are a helpful HR assistant that specializes in candidate management. You can help users search for candidates, check their availability, get detailed candidate information, and add new 
candidates to the system. 
Always provide clear and helpful information about candidates, including their skills, experience, contact details, and availability status.

Attendez environ 1 minute que la création se termine, sans fermer la page.

Descendez en bas de la page, ajoutez des “Prompts suggérés” en lien avec la gestion des candidats RH , puis sauvegardez :

  • List all candidates
List all the candidates
  • Search candidates
Search for candidates with name [NAME_TO_SEARCH]
  • Add new candidate
Add a candidate with firstname [FIRSTNAME], lastname [LASTNAME], e-mail [EMAIL], role [ROLE], spoken languages [LANGUAGES], and skills [SKILLS]

Votre agent de base est prêt ; vous allez maintenant lui ajouter de la puissance en intégrant le serveur MCP.

Etape III – Connexion entre l’agent et le serveur MCP :

Toujours sur votre agent dans Copilot Studio, ouvrez l’onglet Outils, puis cliquez ici pour ajouter un nouvel outil :

Cliquez ici afin de créer un outil personnalisé :


Sélectionnez Model Context Protocol pour ajouter un serveur MCP :

Nommez le serveur MCP, ajoutez une description, collez l’URL publique générée par votre tunnel ngrok, laissez Authentication de base, puis cliquez sur Créer :

À la création, lancez l’établissement d’une connexion entre votre agent et l’outil MCP :

Cliquez sur Créer pour créer la connexion :

Cliquez ici pour ajouter et configurer l’outil dans l’agent :

Revenez sur la liste des outils, entrez dans l’outil MCP que vous venez d’ajouter en cliquant dessus :

Vérifiez la bonne connexion via la liste des outils exposés par le serveur MCP qui doit se récupérer correctement :

La connexion au serveur MCP est en place, il ne nous reste plus qu’à publier l’agent sur des canaux comme Teams.

Etape IV – Publication de l’agent :

Cliquez sur le bouton de test afin d’envoyer un prompt simple pour vérification :

Constatez l’apparition des résultats retournés par le serveur MCP dans le panneau de test :

Cliquez sur Publier pour publier votre agent :

Confirmez votre choix dans la boîte de dialogue :

Attendez la fin du processus de publication.

Ouvrez l’onglet des Canaux, cliquez sur Teams and Microsoft 365 Copilot, cochez l’option pour rendre l’agent disponible dans Microsoft 365 Copilot, puis cliquez sur Ajouter des canaux :

Patientez pendant l’enregistrement des paramètres du canal :

Revenez à l’agent et cliquez à nouveau sur republier en tenant compte du nouveau canal :

Confirmez votre choix dans la boîte de dialogue :

Votre agent est en ligne, il ne nous reste plus qu’à le tester dans Teams et Microsoft 365 Copilot.

Etape V – Tests dans Teams et Microsoft 365 Copilot :

Toujours sur la page de l’agent créé sur le portail de Copilot Studio, cliquez ici pour ajouter cet agent dans Microsoft 365 :

Cliquez sur Ajouter afin d’ajouter l’agent à votre portail Microsoft 365 Copilot :

Retrouvez l’agent dans la liste de gauche des agents disponibles :

Revenez sur Microsoft Copilot Studio pour ajouter le canal Teams :

Sur Teams, puis cliquez sur ici afin d’ajouter cet agent :

Dans Teams ou Microsoft 365 Copilot, lancez un prompt parmi les prompts suggérés :

Constatez l’apparition du résultat MCP lié au prompt exécuté.

Demandez à l’agent de retrouver un seul candidat via des critères précis, puis validez le résultat MCP affiché :

Demandez la suppression de ce candidat, vérifiez la confirmation :

Ouvrez MCP Inspector pour constater sa disparition de la liste :

Demandez l’ajout d’une caractéristique (par ex. une langue parlée) à un candidat, puis validez la mise à jour retournée par l’agent :

Revenez dans MCP Inspector, puis confirmez que la nouvelle caractéristique apparaît bien pour ce candidat :

Demandez l’ajout d’un nouveau candidat, puis constatez la confirmation :

Vérifiez dans MCP Inspector que l’enregistrement du nouveau candidat a bien été créé :

Demandez l’ajout d’un candidat en joignant un PDF de CV en exemple, puis validez le résultat fourni par l’agent :

Dans MCP Inspector, confirmez l’apparition du candidat associé au fichier PDF précédemment téléversé :

Conclusion

Vous avez mis en place un serveur MCP en local, l’avez exposé en URL publique via un tunnel, l’avez inspecté avec MCP Inspector, puis intégré dans Copilot Studio avant de le publier et de le tester dans Teams / Microsoft 365 Copilot.

À vous maintenant de créer un véritable agent opérationnel capable d’appeler des outils MCP pour gérer vos données directement depuis l’interface Copilot.

Pour aller plus loin, je vous recommande ce tutoriel pratique de Shervin Shaffie, qui montre comment créer un agent prêt pour la production sans écrire une seule ligne de code. Il vous montre comment connecter DocuSign, de la connexion à la publication, étape par étape :

Boostez la mémoire de Copilot

Depuis quelque temps, Microsoft pousse 2 nouveaux concepts de personnalisation de Copilot, qui paraissent similaires quand on les découvre : les Instructions personnalisées et la Mémoire Copilot. Les deux visent à rendre Copilot plus personnel et plus adapté au contexte affin d’apporter des réponses toujours plus pertinentes, et évitent certaines répétitions dans les prompts.

Juste avant cela, je pense qu’il est intéressant de refaire un point rapide sur le RAG qui est aussi employé dans beaucoup d’architectures IA.

Qu’est-ce que le RAG ?

Depuis 2024, je me suis plongé dans ce concept qu’on appelle RAG (Retrieval-Augmented Generation). Grosso modo, c’est comme donner une paire de jumelles à votre LLM : il va chercher des infos actualisées, dans votre propre base de connaissances, avant de générer une réponse.

En pratique, vous envoyez une question, le modèle commence par interroger une base documentaire (vectorielle ou non), puis compile les extraits les plus pertinents pour enrichir sa réponse.

Résultat : une réponse plus fiable, plus contextualisée, et à jour.

Pour mettre cela en place sur votre Copilot, plusieurs chemins sont possibles :

Mais quand on parle de personnalisation dans Copilot, il faut bien distinguer deux concepts qui n’ont pas la même finalité : les Instructions personnalisées et la Mémoire Copilot. On les confond facilement, mais ce sont deux choses bien distinctes.

Qu’est-ce que les instructions personnalisées ?

Quelle que soit l’IA utilisée, ce schéma rappelle les grands principes pour un prompt réussi :

Avec Copilot, les attentes liées à la forme des réponses sont généralement constantes : c’est l’utilisateur qui définit à l’avance la manière dont Copilot doit se comporter.

Grâce aux instructions personnalisées, on peut donc gagner du temps en adaptant le ton et la forme des réponses de Copilot, de manière générale et permanente.

Par exemple :

  • Réponds toujours de manière concise et en français
  • Donne-moi systématiquement des exemples techniques liés à Azure
  • Réponds toujours comme Maître Yoda, dans Star Wars

Comment marchent les instructions personnalisées ?

Voici une comparaison simple, montrant l’impact des instructions personnalisées, quand celui-ci est configuré pour toujours répondre comme Maître Yoda dans Star Wars :

Sans configuration d’instructions personnalisées :

Avec configuration d’instructions personnalisées :

Les instructions personnalisées changent radicalement la façon dont Copilot formule ses réponses. La même question peut donc donner deux réponses très différentes – l’une orientée divertissement, l’autre orientée expertise professionnelle.

Qu’est-ce que la mémoire Copilot ?

Jusqu’ici, Copilot répondait aux questions, mais oubliait cette interaction dans le temps dès que l’on fermait la fenêtre ou que l’on passait à une nouvelle conversation.

Avec la mémoire en plus, Copilot peut maintenant retenir des informations clés sur vous et votre travail et les réutiliser automatiquement dans vos prochaines interactions.

Mais depuis quelque temps, Microsoft a ajouté une nouvelle brique que Microsoft a ajoutée à son écosystème Copilot. En clair, c’est la capacité de Copilot à se souvenir d’éléments importants sur nous ou notre travail, et à les réutiliser automatiquement dans nos futures interactions.

Avec la mémoire, c’est comme un carnet personnel que Copilot garde toujours sous le coude. Grâce à lui, Copilot sait déjà que l’on préfère les listes à puces et que l’on travailles sur ce projet Suisse. En combinant les deux, Copilot devient à la fois plus précis et plus personnel.

Comment marche la mémoire Copilot ?

Voici une comparaison simple, montrant l’impact de la fonction Copilot Memory, quand celui-ci est configuré pour toujours répondre comme Maître Yoda dans Star Wars :

Sans configuration de mémoire Copilot

Avec une configuration de mémoire Copilot :

Comment puis-je configurer la mémoire et les instructions personnalisées dans Copilot ?

L’utilisateur a le contrôle total : tu peux consulter, modifier ou supprimer ce que Copilot retient, et activer ou désactiver ces options à tout moment, tout cela depuis la page d’accueil de Copilot

L’accès aux instructions et à la mémoire Copilot est possible depuis les menus suivants :

Les deux menus sont bien distingués :

Copilot utilisera ces informations dans toutes tes prochaines conversations. Il est même possible de désactiver temporairement la prise en compte des instructions personnalisées :

Du côté de la mémoire Copilot, vous retrouvez ici les deux sections d’information :

  • Le profil professionnel est une source officielle d’informations issues de votre tenant Microsoft. Ce n’est pas un profil crée dans Copilot, mais plutôt un contexte auquel il a accès via Microsoft Graph, lié à votre identité professionnelle (par exemple via Entra ID).
  • La mémoire Copilot est construite au fil des échanges pour enrichir le contexte et personnaliser les réponses :

Un bouton pour couper la mémoire à tout moment : Copilot redevient alors sans mémoire persistante :

Chaque entrée dans la mémoire Copilot doit se faire depuis la fenêtre de prompt :

Une liste de la mémoire Copilot est aussi disponible via un prompt :

La mémoire Copilot peut être ajustée : il est possible de l’éditer, de la supprimer ou même de demander à Copilot d’ignorer ce point à l’avenir :

Et voici le résultat d’un prompt après le changement de mémoire :

En plus des instructions globales de Copilot, il est aussi possible de configurer des instructions de rédaction spécifiques dans Outlook.

Lors de chaque demande à Copilot, ce dernier aidera à rédiger un mail (réponse, brouillon, résumé) en respectant ces consignes pour rester cohérent.

En résumé, ces différents paramétrages d’instructions suivent l’approche suivante :

AspectInstructions personnalisées (Copilot)Instructions de rédaction (Outlook)
PortéeGlobales – s’appliquent à toutes les apps où Copilot est présent (Word, Excel, Teams, Edge…).Spécifiques à Outlook et uniquement pour la rédaction d’e-mails.
ContenuQui vous êtes (rôle, secteur, contexte) et comment Copilot doit répondre (style, niveau de détail).Ton de rédaction (formel/informel), longueur (bref/détaillé), style de communication pour les mails.
ObjectifPersonnaliser le comportement général de Copilot dans toutes vos conversations.Harmoniser le style des e-mails générés ou suggérés par Copilot.
ConfigurationVia les paramètres Copilot (⚙️) > Instructions personnalisées.Via Outlook > Copilot > ⚙️ > Instructions de rédaction.
Exemple d’impactCopilot ajoute des exemples Azure dans ses réponses techniques.Copilot propose un mail concis et poli, adapté à une réponse client.

Conclusion

En conclusion, donner de la mémoire et des règles claires à Copilot, c’est comme passer d’un stagiaire à un collaborateur expérimenté : il comprend ton style, ton métier et peut t’aider plus vite et plus efficacement.

Les instructions personnalisées permettent de fixer le ton et la forme des réponses, une bonne fois pour toutes, tandis que la mémoire Copilot apprend et s’adapte au fil du temps, en intégrant ton contexte métier et tes préférences.

Pour tirer le meilleur parti de cette personnalisation, je vous conseille de :

  • Configurer des instructions personnalisées dès maintenant, avec un style adapté à votre usage (technique, concis, fun…).
  • Activer la mémoire Copilot et de l’ajuster au fil de l’eau pour qu’elle reflète au mieux le contexte.

Testez la fonction COPILOT() dans Excel

Excel a longtemps souffert d’un retard dans l’avancement du développement de Copilot au sein de la suite d’outils Microsoft 365 Copilot, surtout si on le compare à Word et PowerPoint. Pourquoi cela ? Car les tableaux Excel ne sont pas des phrases ou des textes comme aime avoir les LLMs. Ce qui a rendu l’intégration de Copilot plus complexe que celle dans Word (texte linéaire) ou PowerPoint (contenu visuel structuré).

Qui est en charge du développement de Copilot dans Excel, Word, PowerPoint, … ?

Microsoft a mis en place une équipe centrale dédiée à Copilot, appelée Microsoft 365 Copilot Product Group, qui pilote la vision, les modèles d’IA, et les interfaces transversales.

Cette équipe travaille en étroite collaboration avec les équipes produit de chaque application Office, qui adaptent Copilot à leurs spécificités fonctionnelles. sein de Microsoft 365 Apps. Par exemple, l’équipe Excel se concentre sur l’interprétation des tableaux et des formules, tandis que l’équipe PowerPoint travaille sur la génération de slides et de visuels.

L’intégration de Microsoft 365 Copilot dans Excel est donc dépendante de la division Excel au

Pourquoi ce retard de Copilot sur Excel ?

Les modèles de langage (LLMs) comme GPT sont conçus pour comprendre et générer du texte linéaire. Word et PowerPoint s’appuient sur des blocs de texte ou des structures visuelles faciles à interpréter. En revanche, Excel manipule :

  • Des tableaux
  • Des formules
  • Des relations entre cellules
  • Des modèles financiers ou statistiques

Cette complexité a rendu l’intégration de Copilot plus délicate, nécessitant des avancées spécifiques en compréhension tabulaire et en raisonnement mathématique.

Ce n’est que récemment que Microsoft a commencé à combler ce retard, en introduisant des fonctionnalités plus avancées dans Excel, comme les assistants contextuels via un clic droit, ou tout récemment la fameuse fonction COPILOT() que nous verrons plus loin dans cet article.

Que peut-on faire déjà avec Microsoft 365 Copilot dans Excel ?

Depuis plusieurs mois déjà, Copilot permet d’interroger les données en langage naturel, de générer des formules, de créer des graphiques, et même de détecter des tendances ou des anomalies. 

De nombreuses vidéos détaillant différents exemples fleurissent déjà et depuis un peu plus d’un an sur Internet :

Ou encore :

Petit Copilot vs Grand Copilot ?

Dans Excel, comme dans la majorité des outils Microsoft 365, Copilot se manifeste sous plusieurs formes complémentaires qui répondent à des usages distincts :

  • Le premier, situé dans le bandeau en haut de l’interface, agit comme un assistant global. Il permet de poser des questions en langage naturel sur l’ensemble du fichier, d’analyser des tendances, de générer des formules ou des graphiques, et d’interagir avec les données de manière transversale.
  • Le second Copilot, accessible via le clic droit sur une cellule ou une sélection, est plus contextuel. Il propose des actions ciblées comme expliquer une formule, reformater une plage de données, ou suggérer des opérations spécifiques sur les valeurs sélectionnées.

Passons maintenant à quelques exemples de prompts simples sur une feuille Excel contenant des données fictives.

Que peut-on prompter avec le Copilot d’Excel ?

A peu près ce que l’on veut ! Mais rien ne dit que Copilot va satisfaire toutes vos demandes…

  • Analyse de données
    • Quels sont les produits les plus vendus ce trimestre ?
    • Y a-t-il des anomalies dans les ventes mensuelles ?
    • Fais-moi un résumé des performances par région
  • Création de visualisations
    • Crée un graphique comparant les ventes de janvier à mars
    • Montre l’évolution des coûts fixes sur les 12 derniers mois
    • Génère un tableau croisé dynamique des ventes par catégorie
  • Formules et calculs
    • Écris une formule pour calculer la marge bénéficiaire
      • Explique cette formule : =SI(ET(A2>100;B2<50);\OK\;\NOK)
      • Calcule la moyenne des ventes par trimestre

Voici d’ailleurs quelques exemples de petits prompts réalisés sur une feuille Excel fictive afin de vous donner quelques idées.

  • Changez le format des nombres de la colonne F en format monétaire (€)
  • Ajoutez une colonne « Date de Fin » qui calcule automatiquement la date de fin en fonction de la colonne B sur laquelle on ajoute 15 mois
  • Supprimez la colonne K du tableau
  • Créez une nouvelle colonne appelée « Marge Directe » et calcule-lui une marge de 5% sur la colonne G.
  • Appliquez une mise en forme conditionnelle à la colonne « Marge Directe » pour afficher en rouge les valeurs entre 0 et 20 et en orange les valeurs entre 21 et 49
  • Triez la colonne de marge en ordre décroissant
  • Ajoutez une colonne avec une fonction RECHERCHEV pour récupérer la région depuis l’onglet Beta
  • Filtrez la colonne « Statut Vente » pour afficher uniquement les Echoué et En attente
  • Appliquez une mise en forme conditionnelle pour mettre en gras les clients dont le nom contient le chiffre 1
  • Cachez toutes les lignes dont le code postal est un nombre impair
  • Générez un graphique pertinent sur les tendances via l’outil Analyse de données
  • Créez un tableau croisé dynamique avec en colonne « Ville » et en ligne les « Produit » en filtrant sur les lignes dont la vente est sur le mois d’octobre pour afficher le total des ventes

Intéressons-nous maintenant aux dernières avancées proposées par Microsoft, dont la toute nouvelle fonction COPILOT().

Qu’est-ce que la fonction COPILOT() ?

La fonction COPILOT() fonctionne comme une formule Excel classique. Elle permet d’envoyer un prompt en langage naturel à Copilot, tout en lui fournissant des données contextuelles depuis la feuille Excel. Elle retourne en résultat une réponse générée par l’IA, sans passer par des macros ou scripts externe.

Voici la syntaxe à adopter :

=COPILOT(prompt, [contexte1], [contexte2], ...)

Voici un exemple de cette syntaxe :

=COPILOT("Classifie ces commentaires par sentiment",A2:A20)

Deux remarques intéressantes :

  • Il est actuellement possible de la combiner avec d’autres fonctions Excel (IF, SWITCH, LAMBDA, etc.)
  • Actualisation automatique : Le résultat se met à jour si les données référencées changent, comme une formule classique d’Excel.

Comment avoir la commande COPILOT() ?

Certaines limitations sont actuellement en place sur la fonction COPILOT(), encore en préversion :

  • Elle est disponible uniquement pour les clients commerciaux avec une licence Microsoft 365 Copilot
  • Elle ne fonctionne donc pas avec les abonnements Personnel ou Famille
  • Elle est limitée à 100 appels toutes les 10 minutes
  • Elle ne peut pas accéder à des données externes (web, autres fichiers)

Comment peut-on activer la fonction COPILOT() ?

A l’heure où ces lignes sont écrites, j’ai pu tester la fonction COPILOT() sur l’application Desktop d’Excel, simplement en changeant le canal de mise à jour de mes applications Microsoft 365.

Pour connaître le canal de mise à jour actuellement en place sur votre poste, ouvrez Excel, puis cliquez sur le menu suivant :

L’information du canal de mise à jour de vos applications Microsoft 365 doit s’afficher ici :

Pour basculer sur le canal de mise à jour Beta, ouvrez le Terminal Windows en mode administrateur :

Exécutez la commande suivante afin de forcer Office à passer sur le canal de mise à jour Beta, aussi appelé Insider Fast. C’est le canal le plus avancé, destiné aux tests des fonctionnalités expérimentales avant leur déploiement public :

reg add HKLM\Software\Policies\Microsoft\office\16.0\common\officeupdate /v updatebranch /t REG_SZ /d BetaChannel

Rouvrez l’application Excel sur votre poste, puis cliquez sur le menu suivant :

Constatez l’absence de changement de votre canal de mise à jour :

Lancez une mise à jour immédiate de vos applications Microsoft 365 :

La fenêtre suivante doit alors apparaître, et vous indique que de nouvelles mises à jour sont en cours d’installation :

Attendez quelques minutes, puis fermez cette fenêtre une fois les mises à jour terminées :

Retournez sur votre application Excel afin de constater un changement du canal de mise à jour :

Enfin la commande ci-dessous permet de forcer Excel (et les autres applications Office) à réutiliser le canal de mise à jour Current Channel :

reg add HKLM\Software\Policies\Microsoft\office\16.0\common\officeupdate /v updatebranch /t REG_SZ /d CurrentChannel

Que peut-on en faire actuellement ?

J’ai pris l’exemple classique d’une liste de codes postaux pour laquelle je souhaite retrouver le nom de la ville. J’utilise donc le prompt suivant :

=COPILOT("retrouve la ville en se basant sur le code postal français", A2)

Le système marche bien, mais montre rapidement une limite :

Je décide donc de tester la commande COPILOT() afin d’harmoniser mes valeurs :

=COPILOT("si valeur fait seulement 4 chiffres de long, rajoute un zéro devant, sinon laisse la valeur ", A2)

Cela semble très prometteur :

Enfin, je combine le tout pour retrouver le nom des villes quelle que soit la longueur du code postal :

=COPILOT("retrouve la ville en se basant sur le code postal francais", COPILOT("si valeur fait seulement 4 chiffres de long, rajoute un zéro devant, sinon laisse la valeur ",A2))

Malheureusement, plusieurs limites de la fonction COPILOT(), toujours en préversion, finissent par être atteintes :

  • Copilot effectue plusieurs erreurs sur le traitement de la donnée
  • Copilot a exécuté trop de requêtes, et me demande d’attendre pour continuer :

Mais, dans d’autres cas de création de contenu, les choses se passent un peu mieux :

Toujours envie de voir d’autres tests ?

J’ai trouvé cette excellente vidéo, réalisée par Elliott Pierret et disponible sur sa chaîne, qui nous montre justement, au moyen de petits exemples, comment bien comprendre le mécanisme de COPILOT(), mais aussi de pouvoir combiner toujours plus de prompts !

Conclusion

Avec la fonction =COPILOT(), Excel franchit enfin une étape décisive dans l’intégration de l’IA au cœur des feuilles de calcul. Là où auparavant Copilot n’était qu’un assistant “au-dessus” d’Excel, il devient désormais une fonction native, au même titre que RECHERCHEV ou SOMME.

Si vous travaillez déjà avec Microsoft 365 Copilot et que vous êtes prêts à basculer sur le canal Beta, je vous encourage à tester =COPILOT() dès maintenant. Vous verrez par vous-même comment il change la manière d’analyser et d’exploiter vos données.

Et comme toujours, n’hésitez pas à partager vos propres retours, astuces et scénarios d’usage dans les commentaires !

Copilot + données on-premise

Le cloud est devenu le quotidien pour un grand nombre d’entreprises, mais les sites on-premise gardent encore une belle part des infrastructures et du stockage de données. Les principales IA ont compris cela, et elles proposent différents moyens de connecter ces données stockées on-premise à elles, afin ces informations soient elles-aussi indexées dans les mêmes outils pour une meilleure expérience utilisateur.

Le connecteur Partage de fichiers Microsoft Graph permet aux utilisateurs de votre organization de rechercher des partages de fichiers Windows locaux.

Microsoft Learn

Avant d’attaquer le sujet central de cet article, voici un rappel des articles écrits autour des solutions Copilot de Microsoft :

Pour notre démonstration, Microsoft a mis à disposition 3 documentations relatives à la mise en place de l’agent on-premise pour un serveur de fichiers local :

Quels sont les formats de fichiers pris en charge par l’agent de connecteur ?

Microsoft rappelle ici les formats supportant l’indexation au travers de l’agent on-premise pour un partage de fichier :

DOC, DOCM, DOCX, DOT, DOTX, EML, GIF, HTML, JPEG, JPG, MHT, MHTML, MSG, NWS, OBD, OBT, ODP, ODS, ODS, ODT, ONE, PDF, PNG, POT, PPS, PPT, PPTM, PPTX, TXT, XLB, XLC, XLSB, XLSB, XLSX, XLT, XLXM, XML, XPS et ZIP

Rappel : Seul le contenu texte sera indexé et les fichiers supérieurs à 100 Mo seront ignorés.

Existe-t-il une configuration recommandée pour installer l’agent on-premise ?

Microsoft recommande d’installer l’agent on-premise sur une machine ou un poste ayant les caractéristiques suivantes :

  • Windows 10, Windows Server 2016 R2 et versions ultérieures
  • 8 cœurs, 3 GHz
  • 16 Go de RAM, 2 Go d’espace disque
  • Accès réseau à la source de données et à Internet via 443

Afin de bien comprendre le fonctionnement de l’agent on-premise sur un serveur partage de fichiers local vers Copilot pour Microsoft 365, je vous propose de réaliser ce petit exercice :

Etape 0 – Rappel des prérequis :

Pour réaliser cet exercice sur Copilot, il vous faudra disposer de :

  • Un tenant Microsoft
  • Une souscription Azure valide
  • Une licence Copilot pour Microsoft 365
  • Une des licences 365 suivantes :
    • Microsoft 365 E5
    • Microsoft 365 E3
    • Office 365 E3
    • Office 365 E5
    • Microsoft 365 A5
    • Microsoft 365 A3
    • Office 365 A5
    • Office 365 A3
    • Microsoft 365 Business Standard
    • Microsoft 365 Business Premium

Avant d’installation le connecteur sur le serveur on-premise, faisons un premier de test de prompt à Copilot pour évaluer les réponses obtenues.

Etape I – Premier test Copilot sans connecteur :

Pour cela, ouvrez votre navigateur internet sur la page web de Copilot en mode Work :

Saisissez le prompt suivant :

cherche un document parlant de associez fslogix avec azure ad

Copilot vous informe qu’il trouve bien des documents sur SharePoint ou Teams, mais aucun document stocké depuis un serveur de fichiers local.

Afin de pouvoir tester ce connecteur, il m’est nécessaire de créer une machine virtuelle.

Etape II – Préparation du serveur de fichiers local :

Afin de faciliter la démonstration, j’ai donc créé la machine virtuelle suivante sur Azure :

Cette machine virtuelle fonctionne sous Windows Server et est jointe à un domaine Active Directory. De plus, elle se trouve sur le même réseau que le Cloud PC Windows 365 contenant les outils 365 et la licence Copilot pour Microsoft 365.

Important : La liaison réseau directe sera nécessaire pour ouvrir le document indexé et proposé dans les résultats de Copilot.

J’ai également déployé le service Azure Bastion pour m’y connecter plus facilement en RDP :

Commençons par la préparation de notre tenant à gérer les authentification de notre connecteur à Microsoft 365 à l’API Microsoft Graph.

Etape III – Création d’une Inscription d’application Entra :

Rendez-vous sur la page du portail Azure disponible juste ici, puis ouvrez le service Microsoft Entra ID :

Dans le menu Inscriptions d’applications, cliquez-ici pour créer une nouvelle Inscription :

Nommez votre application, puis cliquez sur Inscrire :

Cliquez sur le menu Certificats et secrets, puis ajoutez un nouveau secret client comme ceci :

Donnez-lui une description, puis cliquez sur Ajouter :

Copiez la valeur de votre secret. Ce dernier sera utilisé par votre connecteur on-premise afin qu’il s’authentifie automatiquement :

Dans le menu des Permissions API, cliquez-ici pour ajouter des permissions supplémentaires :

Choisissez l’API Microsoft Graph :

Cliquez sur Permissions d’application :

Recherchez et cochez les 3 permissions suivantes en utilisant la barre de recherche, puis cliquez sur Ajouter les permissions :

  • ExternalConnection
    • ExternalConnection.ReadWrite.OwnedBy
  • ExternalItem
    • ExternalItem.ReadWrite.OwnedBy
  • Directory
    • Directory.Read.All

Enfin, cliquez sur le bouton suivant afin d’appliquer ces permissions au niveau du tenant :

Confirmez votre choix en cliquant sur Oui :

Copiez également l’ID de votre application pour la configuration de l’agent on-premise :

La configuration du côté du tenant est en partie terminée. Nous allons maintenant nous intéresser l’installation de l’Agent on-premise.

Etape IV – Installation de l’agent on-premise :

Avant de de configurer l’agent on-premise installé sur votre serveur de fichiers local, il est nécessaire de dispose d’un rôle RBAC spécifique sur Entra ID :

Sur votre serveur de fichiers, ouvrez une session à distance avec un compte administrateur via le service Azure Bastion :

Sur votre serveur de fichiers, préparez une arborescence partagée sur le réseau et contenant des fichiers de données à indexer :

Avant d’installer l’agent on-premise, il est nécessaire de disposer au minimum de .NET Core Desktop Runtime en version 7.0.

Pour cela, téléchargez-le depuis cette page :

Lancez l’installation de .NET 7.0 :

Continuez en téléchargeant l’agent on-premise depuis cette page :

Cliquez-ici pour commencer le téléchargement, puis lancez l’installation :

Cliquez sur Suivant :

Acceptez les conditions, puis cliquez sur Suivant :

Cliquez sur Installer :

Validez en cliquant sur Oui sur les différents messages d’avertissement Windows :

L’installation est finie, cliquez sur Terminer :

Le configurateur de l’agent on-premise s’ouvre automatiquement, cliquez-ici pour associez ce dernier à votre tenant Microsoft :

Nommez cet agent on-premise, reprenez les informations récupérées de l’inscription d’application créée précédemment, puis cliquez sur Enregistrer :

Attendez quelques minutes la finalisation de la configuration de l’agent on-premise :

Une fois la configuration terminée, cliquez sur Fermer :

La configuration sur le serveur de fichiers local est maintenant terminée, nous allons mettre en place la liaison avec 365 depuis la console d’administration 365 dédiée : Recherche et intelligence.

Etape V – Configuration de la source de données 365 :

Pour cela, retournez sur cette page d’administration du tenant Microsoft 365 afin de finaliser la configuration de l’agent on-premise en tant que nouvelle source de données :

Sélectionnez le Partage de fichiers, puis cliquez sur Suivant :

Nommez votre connexion ainsi que les informations visibles pour l’utilisateur Copilot, puis cliquez ici :

Reprenez les informations liées au partage de fichier en y incluant l’agent on-premise ainsi que les identifiants Windows de votre domaine, testez la bonne connexion, puis cliquez-ici :

Regardez les choix possibles, puis cliquez-ici :

Regardez les choix possibles, puis cliquez-ici :

Regardez les choix possibles, puis cliquez-ici :

Déterminez les droits d’exploitation des fichiers stockées sur votre partage local, puis cliquez-ici :

Regardez les choix possibles, puis cliquez-ici :

Regardez les choix possibles, puis cliquez-ici :

Définissez le fuseau horaire adéquat et la fréquence de synchronisation, puis cliquez-ici :

Enfin cliquez sur Publier :

Cliquez sur Fermez :

Attendez quelques minutes afin que le connecteur soit entièrement publié, que la première synchronisation soit finie et que des premiers documents soient indexés :

Votre configuration est enfin terminée. Passez à la suite pour constater d’éventuels changements.

Etape VI – Second test Copilot avec connecteur :

Sur votre utilisateur ayant la licence Copilot pour Microsoft 365, retournez sur la page de Copilot en mode Work en ayant toujours aucun plugin d’actif :

Saisissez à nouveau le prompt suivant :

cherche un document parlant de associez fslogix avec azure ad

Constatez l’apparition d’un résultat avec une ou plusieurs références de provenant de notre connecteur en relation avec l’agent installé sur le serveur de fichiers local :

De mon côté, je n’ai pas été en mesure de cliquer directement sur la source et d’obtenir automatiquement le fichiers attendu directement depuis la console Copilot.

Pourtant, en copiant l’URL de la source Copilot, le fichier est bien accessible et est téléchargeable :

Je cherche toujours pourquoi…

Edit au 28/01/25 :

Le clic depuis la source affichée par Copilot marche maintenant !

Choisissez par exemple d’ouvrir votre fichier via Office :

Confirmez votre choix :

Word s’ouvre bien :

Etape VII – Test depuis Microsoft Search :

Malgré cela, j’ai souhaité refaire le même test depuis la barre de recherche Microsoft Search située sur la page d’Office :

Saisissez les mots clefs suivants :

associez fslogix avec azure ad

Le même résultat apparaît alors, cliquez sur le nom du fichier proposé par Microsoft Search :

Acceptez le risque en cliquant sur Oui :

Constatez la bonne ouverture du fichier depuis la source locale en lecture seule :

Conclusion

La mise en place de l’agent on-premise dédié au partage de fichiers pour Copilot pour Microsoft 365 est assez facile à mettre en place et fonctionne plutôt bien.

Grâce à Microsoft Graph, Microsoft propose à tous un très grand nombre de possibilités pour créer les liaisons vers Copilot selon vos exigences et vos besoins :

Importez dans Copilot via un connecteur 🔌

J’ai reçu un mail il y a quelques jours de la part de Microsoft (oui oui, seulement un 🤣) m’invitant tester par moi-même un premier connecteur Copilot pour Microsoft 365, en suivant simplement un pas à pas technique. N’ayant pas d’expérience en .NET, je me suis dit … pourquoi pas ! Je vous propose de le réaliser ensemble pour que vous puissiez vous-même reproduire cet exercice sur votre tenant Copilot.

Dans cet article, nous reprendrons brièvement quelques concepts et nous testerons nous-même de créer un connecteur Microsoft Graph personnalisé afin d’enrichir les résultats Copilot dans Microsoft 365.

Voici encore un rappel des articles écrits autour des solutions Copilot de Microsoft :

Qu’est-ce qu’un connecteur Microsoft Graph ?

Les connecteurs Microsoft Graph vous permettent d’ingérer vos données métier non structurées dans Microsoft Graph, afin que Copilot pour Microsoft 365 puissent raisonner sur l’intégralité du contenu de votre entreprise. Le contenu ingéré via les connecteurs Graph est ajouté à Microsoft Graph ; cela déverrouille la compréhension sémantique des invites de vos utilisateurs dans Copilot pour Microsoft 365.

Microsoft Learn

Quel est l’impact d’un connecteur dans Copilot pour 365 ?

L’impact de connecteur dans les résultats Copilot peut changer la donne dans les résultats de recherche documentaire car il va fouiner en dehors de Microsoft 365.

Voici un exemple montrant des résultats avec des références externes à Microsoft 365, améliorant donc l’expérience de recherche de l’utilisateur Copilot :

Voici également une courte vidéo montrant un peu plus à ce sujet :

Peut-on gérer les droits d’accès aux données remontées via un connecteur ?

Oui, ce qui est stocké en dehors de Microsoft 365 reste accessible selon une configuration ACL de votre choix. Les documents pourraient alors être visibles par :

  • Tous les membres de votre organisation
  • Un ou des groupes 365
  • Un ou des utilisateurs 365

Important : Les autorisations d’accès au contenu externe sont directement stockées dans le système externe.

Existe-t-il des connecteurs déjà disponibles sur étagères ?

Oui, Microsoft propose déjà un site web référençant des connecteurs de plusieurs grands éditeurs :

Quelles sont les sources de données possibles via un Connecteur ?

Microsoft a déjà créé plusieurs connecteurs dont voici certains exemples de source de données :

Azure Data Lake Storage Gen2, Azure DevOps Work Items, Azure DevOps Wiki, Azure SQL and Microsoft SQL Server, Confluence Cloud, Confluence On-premises, CSV, Custom connector, Enterprise websites, Jira Cloud, MediaWiki, File share, Oracle SQL, Salesforce, ServiceNow Knowledge, ServiceNow Catalog, ServiceNow Tickets

Peut-on créer un connecteur personnalisé ?

La réponse est encore oui. Dans l’objectif de vous aider à tester Copilot avec un connecteur Microsoft Graph personnalisé, Microsoft a mis à disposition la documentation suivante.

Grâce à celle-ci, vous pouvez facilement tester intégration du contenu externe à Copilot for Microsoft 365 à l’aide de connecteurs Microsoft Graph construits avec .NET.

Dans cet exercice Microsoft, les tâches que nous allons réaliser seront donc les suivantes :

Commençons par un bref rappel des prérequis.

Etape 0 – Rappel des prérequis :

Pour réaliser cet exercice sur un connecteur Microsoft Graph, il vous faudra disposer des éléments suivants :

  • Un tenant Microsoft
  • Une licence Copilot pour Microsoft 365
  • Une des licences 365 suivantes :
    • Microsoft 365 E5
    • Microsoft 365 E3
    • Office 365 E3
    • Office 365 E5
    • Microsoft 365 A5
    • Microsoft 365 A3
    • Office 365 A5
    • Office 365 A3
    • Microsoft 365 Business Standard
    • Microsoft 365 Business Premium

Avant de créer le connecteur Microsoft Graph personnalisé, faisons un premier de test de prompt à Copilot pour évaluer les réponses obtenues.

Etape I – Premier test Copilot sans connecteur :

Pour cela, ouvrez votre navigateur internet sur la page web de Copilot en mode Work :

Saisissez le prompt suivant :

please find a doc how to install a Microsoft Graph SDK

Copilot vous informe qu’il ne trouve aucun document stocké dans les données d’entreprise, ou qu’aucun document ne vous est accessible.

Notez que le Plugin Web n’est pas activé, ce qui aurait pu donner un résultat également différent :

Nous allons maintenant mettre en place un connecteur Microsoft Graph personnalisé afin d’en mesurer le changement des réponses de Copilot.

Etape II – Préparation du poste local :

Pour plus de facilité, commencez par télécharger Visual Studio Code via la page officielle de téléchargement :

Une fois l’installeur téléchargé, exécutez celui-ci

Acceptez les conditions d’utilisation, puis cliquez sur Suivant :

Définissez le répertoire d’installation, puis cliquez sur Suivant :

Cliquez sur Suivant :

Cliquez sur Suivant :

Cliquez sur Installer :

Attendez 1 minute que l’installation de Visual Studio Code se termine :

Cliquez sur Terminer :

Une fois dans Visual Studio Code, allez dans le menu Extensions, puis installez l’extension simplement nommée C# :

Retournez sur votre navigateur internet afin de télécharger la version 8.0.1 du SDK .NET :

Une fois l’installation téléchargée, exécutez celle-ci :

Cliquez sur Installer :

Confirmez l’action de sécurité Windows en cliquant sur Oui :

Attendez 1 minute que l’installation de .NET se termine :

Cliquez sur Fermer :

Redémarrer votre poste Windows afin de prendre en compte la nouvelle version .NET :

Notre poste est maintenant prêt pour la création d’un connecteur Microsoft Graph personnalisé.

Nous allons commencer par la préparation de notre tenant à gérer les authentification de notre connecteur à Microsoft 365 à l’API de Microsoft Graph.

Etape III – Création d’une Inscription d’application Entra :

Rendez-vous sur la page du portail Azure disponible juste ici, puis ouvrez le service Microsoft Entra ID :

Dans le menu Inscriptions d’applications, cliquez-ici pour créer une nouvelle Inscription :

Nommez votre application, puis cliquez sur Inscrire :

Attendez quelques secondes la notification suivante :

Cliquez sur le menu Certificats et secrets, puis ajoutez un nouveau secret client comme ceci :

Nommez-le, puis cliquez sur Ajouter :

Copiez la valeur de votre secret. Ce dernier sera utilisé par votre connecteur Microsoft Graph afin qu’il s’authentifie automatiquement :

Dans le menu des Permissions API, cliquez-ici pour ajouter des permissions supplémentaires :

Choisissez l’API Microsoft Graph :

Cliquez sur Permissions d’application :

Recherchez et cochez les 2 permissions suivantes en utilisant la barre de recherche, puis cliquez sur Ajouter les permissions :

  • ExternalConnection 
    • ExternalConnection.ReadWrite.OwnedBy
  • ExternalItem 
    • ExternalItem.ReadWrite.OwnedBy

Enfin, cliquez sur le bouton suivant afin d’appliquer ces permissions au niveau du tenant :

Confirmez votre choix en cliquant sur Oui :

Leur statut s’en retrouve alors changé comme ceci :

La configuration du côté du tenant est en partie terminée. Nous allons maintenant nous intéresser l’écriture du code en .NET de notre connecteur Microsoft Graph.

Etape IV – Création du connecteur Microsoft Graph personnalisé :

Dans l’explorateur Windows, créez un dossier pour y stocker le codes et les données de votre futur connecteur Microsoft Graph :

Retournez dans Visual Studio Code, puis cliquez ici pour vous positionnez sur ce nouveau répertoire :

Cliquez sur Oui :

Dans la console située en bas de votre écran, vérifiez le bon positionnement de votre dossier, puis lancez la commande suivante pour créer une nouvelle console dédiée à votre application .NET :

dotnet new console

Notez l’apparition de fichiers suivants dans l’explorateur Windows :

Ajoutez la bibliothèque suivante pour s’authentifier auprès des services Microsoft 365 :

dotnet add package Azure.Identity

Ajoutez la bibliothèque cliente suivante pour communiquer à l’API Microsoft Graph :

dotnet add package Microsoft.Graph

Ajoutez la bibliothèque suivante pour gérer les secrets :

dotnet add package Microsoft.Extensions.Configuration.UserSecrets

Ajoutez la bibliothèque suivante pour intégrer des commandes dans l’application :

dotnet add package System.CommandLine --prerelease

Afin de stocker les secrets de notre application, lancez la commande suivante :

dotnet user-secrets init

Conservez les 3 informations de votre Inscription d’application pour vous authentifier automatiquement auprès de Microsoft 365 :

  • ID de l’application
  • Valeur du secret
  • ID du tenant

Saisissez les commandes suivantes pour les stocker de manière sécurisée en remplaçant les 3 valeurs en gras par celles récupérées juste avant :

dotnet user-secrets set "EntraId:ClientId" "[application id]"
dotnet user-secrets set "EntraId:ClientSecret" "[secret value]"
dotnet user-secrets set "EntraId:TenantId" "[tenant id]"

Continuons la configuration par la connexion entre le connecteur personnalisé et l’API Microsoft API.

Etape V – Configuration de la connexion avec l’API Microsoft Graph :

Le premier fichier va être utile à gérer les informations de la connexion entre le connecteur personnalisé et l’API Microsoft Graph.

Dans Visual Studio Code, créez un premier fichier texte en cliquant juste ici :

Choisissez le type de fichier texte :

Collez le code suivant dans votre fichier, puis sauvegardez-le via la commande clavier Ctrl Shift+S avec le nom GraphService.cs :

using Azure.Identity;
using Microsoft.Graph;
using Microsoft.Extensions.Configuration;

class GraphService
{
  static GraphServiceClient? _client;

  public static GraphServiceClient Client
  {
    get
    {
      if (_client is null)
      {
        var builder = new ConfigurationBuilder().   AddUserSecrets<GraphService>();
        var config = builder.Build();

        var clientId = config["EntraId:ClientId"];
        var clientSecret = config["EntraId:ClientSecret"];
        var tenantId = config["EntraId:TenantId"];

        var credential = new ClientSecretCredential(tenantId, clientId,    clientSecret);
        _client = new GraphServiceClient(credential);
      }

      return _client;
    }
  }
}

Le second fichier contient la connexion externe elle-même avec Microsoft 365 et les schémas de données envoyées à Microsoft 365.

Créer à nouveau un fichier texte, collez le code suivant dans votre fichier, puis sauvegardez-le via la commande clavier Ctrl Shift+S avec le nom ConnectionConfiguration.cs :

using Microsoft.Graph.Models.ExternalConnectors;
static class ConnectionConfiguration
{
  public static ExternalConnection ExternalConnection
  {
    get
    {
      return new ExternalConnection
      {
        Id = "msgraphdocs",
        Name = "Microsoft Graph documentation",
        Description = "Documentation for Microsoft Graph API which    explains what Microsoft Graph is and how to use it."
      };
    }
  }
  public static Schema Schema
  {
    get
    {
      return new Schema
      {
        BaseType = "microsoft.graph.externalItem",
        Properties = new()
        {
          new Property
          {
            Name = "title",
            Type = PropertyType.String,
            IsQueryable = true,
            IsSearchable = true,
            IsRetrievable = true,
            Labels = new() { Label.Title }
          },
          new Property
          {
            Name = "description",
            Type = PropertyType.String,
            IsQueryable = true,
            IsSearchable = true,
            IsRetrievable = true
          },
          new Property
          {
            Name = "iconUrl",
            Type = PropertyType.String,
            IsRetrievable = true,
            Labels = new() { Label.IconUrl }
          },
          new Property
          {
            Name = "url",
            Type = PropertyType.String,
            IsRetrievable = true,
            Labels = new() { Label.Url }
          }
        }
      };
    }
  }
}

Créer un troisième fichier texte contant les demandes d’établissement de connexion entre le connecteur personnalisé et l’API de Microsoft Graph.

Collez le code suivant dans votre fichier, puis sauvegardez-le via la commande clavier Ctrl Shift+S avec le nom ConnectionService.cs :

using Microsoft.Graph.Models.ExternalConnectors;

static class ConnectionService
{
  async static Task CreateConnection()
  {
    Console.Write("Creating connection...");

    await GraphService.Client.External.Connections
      .PostAsync(ConnectionConfiguration.ExternalConnection);

    Console.WriteLine("DONE");
  }

  async static Task CreateSchema()
  {
    Console.WriteLine("Creating schema...");

    await GraphService.Client.External
      .Connections[ConnectionConfiguration.ExternalConnection.Id]
      .Schema
      .PatchAsync(ConnectionConfiguration.Schema);

    do
    {
      var externalConnection = await GraphService.Client.External
        .Connections[ConnectionConfiguration.ExternalConnection.Id]
        .GetAsync();

      Console.Write($"State: {externalConnection?.State.ToString()}");

      if (externalConnection?.State != ConnectionState.Draft)
      {
        Console.WriteLine();
        break;
      }

      Console.WriteLine($". Waiting 60s...");

      await Task.Delay(60_000);
    }
    while (true);

    Console.WriteLine("DONE");
  }

  public static async Task ProvisionConnection()
  {
    try
    {
      await CreateConnection();
      await CreateSchema();
    }
    catch (Exception ex)
    {
      Console.WriteLine(ex.Message);
    }
  }
}

Enfin, ouvrez le fichier Program.cs créé automatiquement dans votre dossier afin de signaler à notre l’application .NET de créer la connexion et son schéma.

Pour ce faire, remplacez le code de départ par celui-ci, puis sauvegardez-le via la commande clavier Ctrl Shift+S :

using System.CommandLine;

var provisionConnectionCommand = new Command("provision-connection",    "Provisions external connection");
provisionConnectionCommand.SetHandler(ConnectionService.   ProvisionConnection);

var rootCommand = new RootCommand();
rootCommand.AddCommand(provisionConnectionCommand);
Environment.Exit(await rootCommand.InvokeAsync(args));

Un premier test de création de connexion vers Microsoft 365 via l’API Microsoft Graph depuis notre connecteur personnalisé est déjà possible.

Etape VI – Test de connection :

Pour cela, utilisez la commande .NET suivante pour construire votre projet :

dotnet build

Démarrez l’application en exécutant la commande suivante, puis attendez :

dotnet run -- provision-connection

Ouvrez la page Search & intelligence suivante dédiée aux connecteurs de sources de données :

Continuez d’attendre la construction complète de la connexion :

Retournez sur cette même page afin de constater le changement du status de la connexion :

Nous venons de créer une connexion externe afin d’indexer nos futurs documents à venir dans Microsoft 365.

La prochaine étape consiste justement à importer de la donnée afin d’alimenter les index de Microsoft 365.

Etape VII – Configuration de l’import de contenu externe :

Un connecteur Microsoft Graph se connecte à un système externe, exporte son contenu et l’importe dans Microsoft 365. Au cours de ce processus, un connecteur graphique transforme le contenu exporté en éléments externes mettant en correspondance le contenu avec le schéma configuré sur la connexion externe.

Le contenu définit l’essentiel de l’élément qui est indexé pour la recherche en texte intégral. Pour un document ou une page wiki, il s’agit du corps du document. Pour un produit, il peut s’agir de sa description. Les connecteurs graphiques vous permettent d’importer du contenu au format texte ou HTML. Si vous importez du contenu binaire, comme des vidéos ou des images, vous devez obtenir leur représentation textuelle avant de les importer dans Microsoft 365.

Microsoft Learn

Afin de simuler facilement du contenu, Microsoft met à disposition sur GitHub des fichiers de contenu pour notre connecteur Microsoft Graph personnalisé.

Téléchargez ce contenu via ce lien GitHub, puis débloquez la protection sur l’archive ZIP :

Décompressez le contenu de l’archive dans l’arborescence de votre projet comme ceci :

Depuis l’explorateur Windows, vérifiez que le contenu de votre projet se présente sous cette forme :

Vérifiez la présence de cette nouvelle arborescence dans Visual Studio Code :

Dans Visual Studio Code, ouvrez le seul fichier .csproj présent dans votre projet :

Ajoutez le code suivant dans le fichier .csproj avant la balise </Project> pour copier le contenu, puis sauvegardez-le via la commande clavier Ctrl Shift+S :

<ItemGroup>
  <ContentFiles Include="content\**"    CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>

<Target Name="CopyContentFolder" AfterTargets="Build">
  <Copy SourceFiles="@(ContentFiles)" DestinationFiles="@   (ContentFiles->'$(OutputPath)\content\%(RecursiveDir)%(Filename)%   (Extension)')" />
</Target>

Afin d’importer les fichiers de contenu au format Markdown vers Microsoft 365, nous devons extraire les métadonnées et convertir les contenus au format texte :

Pour y arriver, nous avons besoin d’autres bibliothèques :

dotnet add package Markdig
dotnet add package YamlDotNet

Créez un quatrième fichier texte consacré à la gestion du contenu à importer. Celui-ci va réaliser les actions suivantes :

  • Configuration du traitement du format markdown
  • Extraction des contenus markdown et YAML
  • Transformation du contenu en éléments externes
  • Chargement des éléments externes dans Microsoft 365

Collez le code suivant dans votre fichier, puis sauvegardez-le via la commande clavier Ctrl Shift+S avec le nom ContentService.cs :

using YamlDotNet.Serialization;
using Microsoft.Graph.Models.ExternalConnectors;
using Markdig;
public interface IMarkdown
{
  string? Markdown { get; set; }
}

class DocsArticle : IMarkdown
{
  [YamlMember(Alias = "title")]
  public string? Title { get; set; }
  [YamlMember(Alias = "description")]
  public string? Description { get; set; }
  public string? Markdown { get; set; }
  public string? Content { get; set; }
  public string? RelativePath { get; set; }
}

static class ContentService
{
static IEnumerable<DocsArticle> Extract()
{
  var docs = new List<DocsArticle>();

  var contentFolder = "content";
  var contentFolderPath = Path.Combine(Directory.GetCurrentDirectory(),    contentFolder);
  var files = Directory.GetFiles(contentFolder, "*.md", SearchOption.   AllDirectories);

  foreach (var file in files)
  {
    try
    {
      var contents = File.ReadAllText(file);
      var doc = contents.GetContents<DocsArticle>();
      doc.Content = Markdown.ToHtml(doc.Markdown ?? "");
      doc.RelativePath = Path.GetRelativePath(contentFolderPath, file);
      docs.Add(doc);
    }
    catch (Exception ex)
    {
      Console.WriteLine(ex.Message);
    }
  }

  return docs;
}

  static IEnumerable<ExternalItem> Transform(IEnumerable<DocsArticle> content)
{
  var baseUrl = new Uri("https://learn.microsoft.com/graph/");

  return content.Select(a =>
  {
    var docId = GetDocId(a.RelativePath ?? "");
    return new ExternalItem
    {
      Id = docId,
      Properties = new()
      {
        AdditionalData = new Dictionary<string, object> {
            { "title", a.Title ?? "" },
            { "description", a.Description ?? "" },
            { "url", new Uri(baseUrl, a.RelativePath!.Replace(".md",    "")).ToString() }
        }
      },
      Content = new()
      {
        Value = a.Content ?? "",
        Type = ExternalItemContentType.Html
      },
      Acl = new()
      {
          new()
          {
            Type = AclType.Everyone,
            Value = "everyone",
            AccessType = AccessType.Grant
          }
      }
    };
  });
}

static async Task Load(IEnumerable<ExternalItem> items)
{
  foreach (var item in items)
  {
    Console.Write(string.Format("Loading item {0}...", item.Id));

    try
    {
      await GraphService.Client.External
        .Connections[Uri.EscapeDataString(ConnectionConfiguration.   ExternalConnection.Id!)]
        .Items[item.Id]
        .PutAsync(item);

      Console.WriteLine("DONE");
    }
    catch (Exception ex)
    {
      Console.WriteLine("ERROR");
      Console.WriteLine(ex.Message);
    }
  }
}

  public static async Task LoadContent()
  {
    var content = Extract();
    var transformed = Transform(content);
    await Load(transformed);
  }

  static string GetDocId(string relativePath)
{
  var id = relativePath.Replace(Path.DirectorySeparatorChar.ToString(),    "__").Replace(".md", "");
  return id;
}
}

Créez un cinquième fichier texte consacré à l’extraction de contenu fichiers de contenu.

Collez le code suivant dans votre fichier, puis sauvegardez-le via la commande clavier Ctrl Shift+S avec le nom MarkdownExtensions.cs :

// from: https://khalidabuhakmeh.com/parse-markdown-front-matter-with-csharp
using Markdig;
using Markdig.Extensions.Yaml;
using Markdig.Syntax;
using YamlDotNet.Serialization;

public static class MarkdownExtensions
{
  private static readonly IDeserializer YamlDeserializer =
      new DeserializerBuilder()
      .IgnoreUnmatchedProperties()
      .Build();

  private static readonly MarkdownPipeline Pipeline
      = new MarkdownPipelineBuilder()
      .UseYamlFrontMatter()
      .Build();
      public static T GetContents<T>(this string markdown) where T :    IMarkdown, new()
{
  var document = Markdown.Parse(markdown, Pipeline);
  var block = document
      .Descendants<YamlFrontMatterBlock>()
      .FirstOrDefault();

  if (block == null)
    return new T { Markdown = markdown };

  var yaml =
      block
      // this is not a mistake
      // we have to call .Lines 2x
      .Lines // StringLineGroup[]
      .Lines // StringLine[]
      .OrderByDescending(x => x.Line)
      .Select(x => $"{x}\n")
      .ToList()
      .Select(x => x.Replace("---", string.Empty))
      .Where(x => !string.IsNullOrWhiteSpace(x))
      .Aggregate((s, agg) => agg + s);

  var t = YamlDeserializer.Deserialize<T>(yaml);
  t.Markdown = markdown.Substring(block.Span.End + 1);
  return t;
}
}

Enfin, rouvrez à nouveau le fichier Program.cs modifié précédemment pour y ajouter la commande de chargement du contenu, puis sauvegardez-le via la commande clavier Ctrl Shift+S :

var loadContentCommand = new Command("load-content", "Loads content   into the external connection");
loadContentCommand.SetHandler(ContentService.LoadContent);
rootCommand.AddCommand(loadContentCommand);

Etape VIII – Test d’importation :

Pour cela, utilisez la commande .NET suivante pour reconstruire à nouveau votre projet :

dotnet build

Commencez à charger le contenu vers Microsoft 365 en exécutant la commande suivante :

dotnet run -- load-content

Retournez sur la page Search & intelligence afin de constater l’ajout d’objets indexés en haut à droite :

Notre environnement 365 contient maintenant l’accès à ces nouveaux documents. Il nous faut maintenant activer cette source dans 365 pour que Copilot puisse les ressortir en résultat.

Etape IX – Activation de la connexion externe dans Copilot :

Toujours sur cette même page d’administration 365, rendez-vous sur l’onglet Personnalisations, puis cliquez-ici pour activer votre connecteur dans les résultats :

Cochez les cases suivantes pour activer votre connecteur dans les résultats Copilot :

Etape X – Second test Copilot avec connecteur :

Sur votre utilisateur ayant la licence Copilot pour Microsoft 365, retournez sur la page de Copilot en mode Work en ayant toujours aucun plugin d’actif :

Saisissez à nouveau le prompt suivant :

please find a doc how to install a Microsoft Graph SDK

Constatez l’apparition d’un résultat avec une ou plusieurs références de type Externe :

Refaite la même opération en promptant sur le même sujet, puis cliquez sur la source externe :

Constatez l’ouverture d’un nouvel onglet pointant vers la documentation Microsoft Learn car le document dispose d’une URL pointant vers celle-ci :

Conclusion

Par les extensions, Microsoft nous montre que l’IA n’en est qu’à ses débuts dans les différents systèmes de données. Les entreprises ont tout y gagner à connecter une IA sur un ensemble de plusieurs systèmes d’informations.

Savoir que je peux interroger mes stocks de marchandises, et les modifier au besoin dans mes autres systèmes au moyen d’une IA connectée me fait espérer beaucoup d’innovations pour les années à venir :

Je souhaite donc continuer à écrire d’autres articles sur l’IA. Par exemple, en testant les Quickstarts proposés par Microsoft, comme Build your first custom Microsoft Graph connector.

Votre Copilot a faim ! 🍔

Copilot pour Microsoft 365 fait maintenant partie de votre quotidien depuis plusieurs semaines ? Vous êtes donc un utilisateur régulier de Copilot dans plusieurs applications 365 ? En ressentez-vous déjà les premiers impacts sur votre productivité ?

Copilot pourrait-il en faire plus ?

Il est possible que vous soyez prêts à élargir le périmètre de votre Copilot ! Pour cela, prenez le temps de savoir comment Copilot pourrait exploiter d’autres données, et surtout comment il s’y prendrait.

Voici déjà quelques articles écrits sur ce blog autour des solutions Copilot de Microsoft :

Comme le rappelle Microsoft, Copilot est en soit l’IA générative actuellement la plus adaptée aux applications et données présentes dans Microsoft 365 :

En soi, Copilot pour Microsoft 365 est un outil de productivité puissant pour maintenir les utilisateurs dans le flux de leur travail dans les applications Microsoft 365. Il fournit aux utilisateurs des compétences générales telles que la compréhension, la synthèse, la prédiction, le rappel, la traduction et la génération de contenu.

Il s’appuie sur une base de référence de vos connaissances organisationnelles en indexant du contenu dans Microsoft Graph, tel que les e-mails, les conversations et les documents auxquels les utilisateurs ont l’autorisation d’accéder.

Microsoft Learn

Copilot pour Microsoft 365 a été annoncé il y a longtemps, mais les choses évoluant très rapidement, prenez-le temps de regarder cette vidéo en français pour comprendre un peu mieux Copilot pour Microsoft 365 :

Je pense que ce schéma a déjà dû passer sous vos yeux à plusieurs reprises, mais il est facile à comprendre car il montre les avantages natifs d’un Copilot déjà connecté aux données de votre tenant.

De ce fait, et sans rien faire d’autres qu’acheter des licences Copilot pour Microsoft 365, le schéma technique de votre IA Copilot ressemble déjà à ça :

Alors, pourquoi en faire plus ?

Car l’IT d’une entreprise a de nombreuses vies et ne se limite pas aux outils 365 et aux données stockées dans SharePoint, OneDrive et autres.

Bien souvent, d’autres outils proviennent d’éditeurs tiers ou sont créés en internes pour des besoins métiers. La donnée peut donc se trouver en dehors de l’environnement 365 et possiblement sous des formats spécifiques.

Techniquement, Copilot pour Microsoft 365 ne peut donc pas s’inspirer de cette donnée inconnue ou même la proposer si un utilisateur lui en fait la demande via un prompt.

Mais une fois en place, votre Copilot pour Microsoft 365 dispose de plusieurs possibilités pour étendre son périmètre pour coller toujours plus aux besoins :

Pour vous faire une meilleure idée, voici un exemple assez parlant donné par Microsoft :

  • Suivi des problèmes pour l’équipe d’ingénierie : Supposons que votre équipe d’ingénierie s’appuie sur un logiciel de gestion de projet. Vous pouvez créer un outil personnalisé qui permet aux utilisateurs de surveiller les tickets ouverts. Un utilisateur peut demander des informations sur tous les problèmes qui lui sont attribués, et Copilot pour Microsoft 365 peut récupérer et présenter ces données en toute transparence à partir de votre plugin.

Imaginez alors d’autres données relatives aux ressources humaines, à la comptabilité, aux outils de productions industrielles ou encore à la finance ? Tout cela à la portée d’un simple prompt à Copilot ?

Oui mais, comment s’y prend-on ?

Rien n’est automatique, mais Microsoft vous propose déjà 2 approches pour y parvenir :

  • Plugin : Ideal pour les données structurées. Développez des plugins qui utilisent le schéma OpenAI pour ajouter des fonctionnalités personnalisées aux expériences Microsoft Copilot, en connectant les données de votre propre application à Microsoft Copilot. Les plugins permettent à une expérience Copilot d’interagir avec vos propres API, améliorant ainsi l’expérience pour effectuer un plus grand nombre d’actions. (Source : Microsoft)
  • Connecteur : Ideal pour les données non structurées. Le connecteur vous permet d’ingérer vos données métier non structurées dans Microsoft Graph, afin que Copilot pour Microsoft 365 puissent raisonner sur l’intégralité du contenu de votre entreprise. Le contenu ingéré via les connecteurs Graph est ajouté à Microsoft Graph ; cela déverrouille la compréhension sémantique des invites de vos utilisateurs dans Copilot pour Microsoft 365. (Source : Microsoft)

Mais alors, lequel choisir ?

Pour vous aider au mieux à comprendre, cette vidéo de Microsoft vous montre justement les impacts en situation réelle :

Pour vous aider à faire votre choix, Microsoft a également mis à disposition cet arbre de décision :

Attention, la structure de la donnée pourrait avoir elle aussi un impact sur votre choix :

ConnecteursPlugins
StructureDonnées non structurées ou aplatisDonnées structurées
Volume de donnéesJusqu’à 5 millions d’éléments par connexionConvient pour les données à volume élevé (plus de 5 M)
Activité des donnéesJusqu’à 20 demandes par secondeAdapté à une activité élevée (plus de 20 req/s.)
Lecture/ÉcritureLecture seuleInscriptible

Enfin, Microsoft liste ici les avantages techniques des 2 solutions :

ConnecteursPlugins
AvantagesPertinence basée sur les activités de l’utilisateur. Détection sémantique du contenu sans activation d’un plugin. Activités (telles que l’affichage, la modification et le partage) avec aide sur le classement et la pertinence des résultats de recherche. Les données restent dans les limites de conformitéDétectabilité dans le Windows Store. Activation de l’expérience de marque. Meilleure expérience utilisateur avec les cartes adaptatives
Fonctionnalités de l’expérience développeurConnexion rapide, schéma d’inscription et éléments d’indexKit de ressources Teams pour Visual Studio & VS Code. Chargement de version test pour le développement & test
Fonctionnez également avecIQ de contexte, Viva Topics, Recherche d’entreprise dans M365.com, SharePoint et Bing @ work. Recommandations de contenu dans les applications M365Conversation Teams, Outlook

Existe-t-il des limitations techniques ?

En effet, les 2 options présentent des limitations techniques qui peuvent influer sur votre choix :

ConnecteursPlugins
Limites30 connecteurs maximum dans le locataire.

Volume de données et activité relativement faibles.

Visibilité de l’application pour les utilisateurs.
Maximum d’un million de plugins activés par utilisateur. Les plugins doivent être activés manuellement. Les données peuvent quitter la limite de conformité. Orchestrator ne peut raisonner qu’avec 10 plugins par invite. Les performances dépendent des développeurs & l’hébergement.
Limitations de l’expérience des développeursAucun outil pour Visual Studio & VS Code. Aucun chargement indépendant. Vous devez rester synchronisé avec la liste de contrôle d’accès (ACL) manuellement si vous êtes dans des groupes externes en dehors du groupe Id Entra (Azure AD)Courbe d’apprentissage abrupte.
Plus de temps pour développer.
Vous devez gérer les invites à paramètres multiples.
Plus d’informationsLimites de l’API connecteurs GraphConditions techniques requises pour les plugins d’extension de message

Important : il n’est pour l’instant pas possible d’acheter et de provisionner des licences acheter Copilot for Microsoft 365 sur un tenant créé à partir du Microsoft 365 Developer Program.

Et Copilot Studio dans tout ça ?

Pas de secret, Microsoft Copilot Studio s’appuie déjà sur du connu et reconnu ! 😎🙏

Un grand merci à Elliott Pierret pour cette vidéo très explicative sur comment jouer avec Copilot Studio pour créer son propre Copilot ou enrichir un Copilot existant grâce aux outils suivants :

  • Copilot Builder
  • Plugin Builder
  • Prompt Builder

Conclusion

Quelle que soit votre stratégie Copilot, l’objectif de cette IA générative est avant tout de simplifier la vie à vos utilisateurs. Beaucoup de tâches sans grande valeur ajoutée peuvent et ont également intérêt à être traitées par l’intelligence artificielle.

Je vous invite à regarder cette interview très intéressante de Jean-François Bérenguer faite par Seyfallah Tagrerout sur le potentiel de Copilot et les services IT possibles avec une valeur ajoutée pour les entreprises dans leur transition vers l’IA :

  • Accompagnement au prompt
  • Mise en place du gouvernance de la donnée (protection)
  • Personnalisation de Copilot (Connecteurs, plugins)

Attendez-vous très prochainement à voir plusieurs articles sur des essais pratiques de Copilot 😎