Photo de Elnur sur Shutterstock
Introduction
L'IA bouleverse aujourd'hui la façon dont les applications sont conçues et dont les entreprises opèrent. Dans la course à l'exploitation des capacités de l'IA, Microsoft Azure s'impose comme une plateforme puissante qui démocratise l'accès aux services d'IA avancés. Avec Azure AI Services (anciennement Cognitive Services), les développeurs peuvent désormais intégrer des fonctionnalités d'IA sophistiquées — compréhension du langage naturel, reconnaissance d'images, etc. — sans expertise pointue en machine learning ni ressources de calcul colossales.
Azure AI Services propose de nombreuses capacités d'IA. Cet article illustre une manière d'intégrer l'IA aux applications pour extraire de l'information, classifier du texte, comprendre le langage conversationnel ou répondre à des questions, en s'appuyant sur le Azure AI Language Service.
Prérequis
- Un compte Azure, disponible gratuitement pendant 30 jours si vous n'en possédez pas.
- Des notions de base sur Azure et la navigation dans le portail Azure.
- Pour exécuter les exemples de code Python, des notions de Python et de pip sont recommandées, ainsi qu'un accès à GitHub pour télécharger l'exemple de code.
- Une certaine connaissance de Docker et de la conteneurisation d'applications est également un atout.
Étapes générales
- Vérifier les permissions et l'accès à Azure AI Services.
- Créer un endpoint d'API managé pour le Language Service.
- Tester l'API avec les exemples de code Python.
- En option, tester l'API hébergée localement dans Docker.
- Nettoyer les ressources.
Procédure pas à pas
Étape 1 : configuration initiale pour valider l'accès aux AI Services
Ouvrez le portail Azure à l'adresse https://portal.azure.com, accédez à Microsoft Entra ID (anciennement Azure Active Directory), recherchez votre compte utilisateur et sélectionnez-le, puis cliquez sur Azure role assignment. L'option la plus simple pour cet exercice consiste à attribuer le rôle Owner ou Contributor au niveau de la Subscription ou du Resource Group, afin de garantir un accès correct aux ressources Azure à créer. Pour ma part, j'ai créé un Resource Group et attribué à mon utilisateur le rôle Owner sur ce Resource Group.
Les attributions de rôles Azure sont expliquées ici et, si vous n'avez pas encore de Resource Group, son utilisation est détaillée ici.

Attributions de rôles Azure pour un utilisateur donné
Dans le portail Azure, accédez à Subscriptions puis sélectionnez Resource Providers. Recherchez Microsoft.CognitiveServices et cliquez sur Register si la ressource n'est pas encore enregistrée.
La marche à suivre est détaillée ici dans la documentation d'Azure Resource Manager.

Resource Providers
Étape 2 : créer un endpoint d'API managé pour le Language Service
Azure AI Services sont des services managés qui exposent une API facile à consommer. Une option appelée Azure AI service multi-service account permet d'accéder à plusieurs services d'IA via un seul endpoint, mais elle nécessite un déploiement de conteneur pour exposer l'API. Pour cet exemple, nous utilisons donc le Language Service managé : c'est une ressource dédiée aux fonctionnalités liées au langage et plus simple à mettre en place.
Dans le portail Azure, accédez à Azure AI Services et sélectionnez Language Service, puis cliquez sur Create Language.
Le service Azure AI for Language embarque plusieurs capacités prêtes à l'emploi — analyse de sentiment, extraction de phrases-clés, et bien d'autres — qui suffisent largement pour cet exercice. Cliquez sur Continue to create your resource.

Création de la ressource Language Service
Parcourez les pages de l'assistant et renseignez les champs suivants :
- Subscription : votre Subscription actuelle par défaut.
- Resource Group : utilisez un groupe existant ou créez-en un pour cet exercice.
- Region : East US par défaut.
- Name : choisissez un nom unique pour le nom de domaine de votre Language Service.
- Pricing tier : choisissez le niveau gratuit s'il est proposé.
- Cochez la case relative à l'usage responsable de l'IA.
- Network : choisissez tous les réseaux, à moins que vous ne préfériez prendre le temps de restreindre l'accès à un réseau spécifique, à une plage d'adresses IP ou à un endpoint privé. Pour cet exemple, j'ai opté pour l'accès public par souci de simplicité, mais ce n'est pas recommandé sur le long terme.
J'ai rencontré quelques bugs du portail Azure, où des messages d'erreur ne reflétaient pas la réalité. Si cela vous arrive, vérifiez d'abord que vous avez bien suivi l'étape 1 ci-dessus pour confirmer l'accès aux AI Services, avant de conclure à un faux message d'erreur.


Sur la dernière page de l'assistant, vérifiez les paramètres et cliquez sur Create pour créer la ressource.

Écran de confirmation de création du Language Service
Le déploiement prend quelques minutes ; cliquez ensuite sur Go to resource pour afficher ses paramètres. Vous pouvez explorer plus en détail les capacités du Language Service et sa configuration. Sélectionnez Keys and Endpoint pour révéler les deux informations nécessaires à l'accès à l'API à l'étape 3 ci-dessous.
Notez que deux clés sont disponibles : c'est pratique pour faire tourner les clés en cas de besoin, mais l'une comme l'autre fonctionne pour accéder à l'API. Les bonnes pratiques de gestion des secrets sur Azure sont décrites ici.

Clé et endpoint pour le Language Service
Étape 3 : tester l'API avec les exemples de code Python
En partant du principe que Python et pip sont installés localement et que vous avez accès à GitHub, comme indiqué dans la section Prérequis, vous pouvez utiliser l'exemple de code de ce dépôt, soit en téléchargeant un fichier zip, soit en clonant le dépôt.
git clone https://github.com/doitintl/azure-ai-services-demo.git
Une fois le code disponible localement, modifiez le fichier .env pour y indiquer la clé d'API et l'endpoint obtenus à l'étape 3 ci-dessus. La version 3.1 de text analytics était la version en vigueur au moment de la rédaction de cet article ; en cas de souci avec cette version, reportez-vous à la référence de l'API REST Language.
COGNITIVE_SERVICES_ENDPOINT=<your endpoint>
COGNITIVE_SERVICES_KEY=<your api key>
SENTIMENT_ANALYSIS_PATH=/text/analytics/v3.1/sentiment?
KEY_PHRASE_EXTRACTION_PATH=/text/analytics/v3.1/keyPhrases
LANGUAGE_DETECTION_PATH=/text/analytics/v3.1/languages?
Une dépendance doit être installée avant de pouvoir exécuter le code. Si vous rencontrez des problèmes pour installer cette bibliothèque ou exécuter le code Python, vous pouvez utiliser un environnement virtuel Python pour exécuter les exemples sur une base saine. Les environnements virtuels sont expliqués ici ; quelques étapes suffisent pour les configurer et les utiliser avec Python.
pip install python-dotenv
Trois fichiers Python permettent de tester quelques capacités du Language Service : l'analyse de sentiment, l'extraction de phrases-clés et la détection de langue. Utilisez l'une de ces commandes pour exécuter le fichier correspondant.
python sentiment_analysis.py
python key_phrase_extraction.py
python language_detection.py
Dans la ligne de commande, saisissez du texte à analyser, comme ci-dessous pour l'extraction de phrases-clés.
david@Mac azure-ai-services-demo % python key_phrase_extraction.py
Enter some text to extract its key phrases. Enter q to quit.
Language detection is one of the features offered by Azure AI Language,
a collection of machine learning and AI algorithms in the cloud for
developing intelligent applications that involve written language.
Language detection is able to detect more than 100 languages in their
primary script.
Request:
{
"documents": [\
{\
"id": 1,\
"text": "Language detection is one of the features offered by\
Azure AI Language, a collection of machine learning and AI algorithms\
in the cloud for developing intelligent applications that involve written\
language. Language detection is able to detect more than 100 languages\
in their primary script."\
}\
]
}
Response:
{
"documents": [\
{\
"id": "1",\
"keyPhrases": [\
"Azure AI Language",\
"AI algorithms",\
"Language detection",\
"written language",\
"machine learning",\
"intelligent applications",\
"primary script",\
"features",\
"collection",\
"cloud",\
"100 languages"\
],\
"warnings": []\
}\
],
"errors": [],
"modelVersion": "2022-10-01"
}
Key Phrases:
- Azure AI Language
- AI algorithms
- Language detection
- written language
- machine learning
- intelligent applications
- primary script
- features
- collection
- cloud
- 100 languages
Pour tester l'API avec une commande CURL, voici un exemple d'analyse de sentiment. Il vous suffit de remplacer my-endpoint et my-key dans la commande.
curl -X POST "https://my-endpoint/text/analytics/v3.1/sentiment" \
-H "Content-Type: application/json" \
-H "Ocp-Apim-Subscription-Key: my-key" \
-d "{\"documents\":[{\"id\":\"1\",\"text\":\"The performance was amazing! The sound could have been clearer.\"},{\"id\":\"2\",\"text\":\"The food and service were unacceptable. While the host was nice, the waiter was rude and food was cold.\"}]}"
{
"documents": [\
{\
"id": "1",\
"sentiment": "mixed",\
"confidenceScores": {\
"positive": 0.5,\
"neutral": 0.09,\
"negative": 0.41\
},\
"sentences": [\
{\
"sentiment": "positive",\
"confidenceScores": {\
"positive": 1.0,\
"neutral": 0.0,\
"negative": 0.0\
},\
"offset": 0,\
"length": 29,\
"text": "The performance was amazing! "\
},\
{\
"sentiment": "negative",\
"confidenceScores": {\
"positive": 0.0,\
"neutral": 0.17,\
"negative": 0.82\
},\
"offset": 29,\
"length": 34,\
"text": "The sound could have been clearer."\
}\
],\
"warnings": []\
},\
{\
"id": "2",\
"sentiment": "negative",\
"confidenceScores": {\
"positive": 0.0,\
"neutral": 0.0,\
"negative": 1.0\
},\
"sentences": [\
{\
"sentiment": "negative",\
"confidenceScores": {\
"positive": 0.0,\
"neutral": 0.0,\
"negative": 1.0\
},\
"offset": 0,\
"length": 40,\
"text": "The food and service were unacceptable. "\
},\
{\
"sentiment": "negative",\
"confidenceScores": {\
"positive": 0.0,\
"neutral": 0.0,\
"negative": 1.0\
},\
"offset": 40,\
"length": 63,\
"text": "While the host was nice, the waiter was rude and food was cold."\
}\
],\
"warnings": []\
}\
],
"errors": [],
"modelVersion": "2024-03-01"
}
Étape 4 : héberger l'API dans Docker
En guise d'exercice optionnel, si vous êtes à l'aise avec Docker et souhaitez héberger l'API du Language Service dans un conteneur Docker, la mise en place est simple. Dans ce scénario, des images sont disponibles pour des fonctionnalités spécifiques du Language Service, comme l'analyse de sentiment.
Déployez le conteneur Docker localement. Remplacez simplement my-endpoint et my-key dans la commande. Les détails de configuration et d'exécution du conteneur d'analyse de sentiment sont disponibles ici.
docker run --rm -it -p 5000:5000 --memory 4g --cpus 1 mcr.microsoft.com/azure-cognitive-services/textanalytics/sentiment:latest Eula=accept Billing=https://my-endpoint ApiKey=my-key
Si vous rencontrez des problèmes avec le port 5000, optez pour un autre port. Sous macOS, le récepteur AirPlay peut occuper le port 5000 ; vous pouvez le désactiver dans Réglages Système > Général > AirDrop et Handoff > Récepteur AirPlay.
Une fois l'image téléchargée et le conteneur construit, vous pouvez vérifier qu'il tourne en accédant à http://localhost:5000/

Conteneur Docker local en cours d'exécution
Une page de statut est également disponible à l'adresse http://localhost:5000/status, et la documentation complète des endpoints à l'adresse http://localhost:5000/swagger

Page de statut du conteneur Docker local
Testez maintenant le conteneur avec une commande CURL, similaire à celle utilisée pour tester le service managé hébergé dans Azure AI Services, à ceci près que le port est précisé et que la clé d'API n'est pas requise dans l'en-tête.
curl -X POST "http://localhost:5000/text/analytics/v3.1/sentiment" -H "Content-Type: application/json" --data-ascii "{'documents':[{'id':1,'text':'The performance was amazing! The sound could have been clearer.'},{'id':2,'text':'The food and service were unacceptable. While the host was nice, the waiter was rude and food was cold.'}]}"
{
"documents": [\
{\
"id": "1",\
"sentiment": "positive",\
"confidenceScores": {\
"positive": 0.99,\
"neutral": 0.0,\
"negative": 0.0\
},\
"sentences": [\
{\
"sentiment": "positive",\
"confidenceScores": {\
"positive": 0.99,\
"neutral": 0.0,\
"negative": 0.0\
},\
"offset": 0,\
"length": 29,\
"text": "The performance was amazing! "\
},\
{\
"sentiment": "neutral",\
"confidenceScores": {\
"positive": 0.19,\
"neutral": 0.47,\
"negative": 0.34\
},\
"offset": 29,\
"length": 34,\
"text": "The sound could have been clearer."\
}\
],\
"warnings": []\
},\
{\
"id": "2",\
"sentiment": "negative",\
"confidenceScores": {\
"positive": 0.0,\
"neutral": 0.01,\
"negative": 0.98\
},\
"sentences": [\
{\
"sentiment": "negative",\
"confidenceScores": {\
"positive": 0.0,\
"neutral": 0.01,\
"negative": 0.99\
},\
"offset": 0,\
"length": 40,\
"text": "The food and service were unacceptable. "\
},\
{\
"sentiment": "negative",\
"confidenceScores": {\
"positive": 0.0,\
"neutral": 0.02,\
"negative": 0.98\
},\
"offset": 40,\
"length": 63,\
"text": "While the host was nice, the waiter was rude and food was cold."\
}\
],\
"warnings": []\
}\
],
"errors": [],
"modelVersion": "2022-11-01"
}
Déployer le conteneur sur Azure
Cela sort du cadre de cet article, mais puisque l'hébergement Docker a été abordé, il est utile de rappeler qu'Azure offre de nombreuses options pour bâtir et déployer des applications cloud-native et conteneurisées. Selon vos besoins en matière de scalabilité, de coût, de haute disponibilité, de préférences de gestion (par exemple, ne pas recourir au service managé d'Azure AI) et autres considérations, plusieurs pistes méritent d'être étudiées : Azure Container Instances, Azure Container Apps, ou Azure Kubernetes Service. Ces options et d'autres sont détaillées ici.
Étape 5 : nettoyer les ressources Azure
Le nettoyage des ressources Azure utilisées dans cet exercice est rapide, puisque seul le Language Service a été créé. Si vous avez créé un Resource Group spécifiquement pour cet exercice, vous pouvez aussi le supprimer si vous le souhaitez ; il n'engendre aucun coût, puisqu'il s'agit simplement d'un moyen de regrouper les ressources Azure.
Accédez à Azure AI Services, sélectionnez Language Service, cochez la case du service que vous avez créé, puis cliquez sur Delete et confirmez la suppression.

Suppression du Language Service
Azure AI Language Service permet aux entreprises de tirer des insights pertinents du texte grâce à l'analyse de sentiment, l'extraction de phrases-clés et la détection de langue. Nous avons montré combien il est simple d'intégrer ces capacités à des applications via un endpoint managé Azure AI Services, ou en auto-hébergeant un conteneur dans Docker — voire partout où une application conteneurisée peut être déployée.
Points clés à retenir
Pourquoi choisir Azure AI Language Service ?
- Simplicité d'usage : avec ses modèles préconçus et ses API simples, les entreprises intègrent rapidement des capacités avancées de traitement du langage naturel à leurs applications, sans expertise pointue en machine learning.
- Intégration fluide : Azure AI Language Service s'intègre naturellement avec les autres outils Azure tels qu'Azure Machine Learning, Power BI et Azure Synapse Analytics, pour une analyse et une visualisation de données de bout en bout.
- Maîtrise des coûts : la tarification à l'usage et l'infrastructure scalable garantissent que les entreprises ne paient que ce qu'elles consomment, rendant le service accessible aux organisations de toutes tailles.
- Flexibilité et scalabilité : que vous optiez pour des endpoints managés afin d'aller vite, ou pour des services exécutés en conteneurs pour un contrôle accru, Azure AI Language Service offre la flexibilité nécessaire à des besoins variés. Sa scalabilité lui permet d'absorber des workloads de toute taille, des petites startups aux grandes entreprises.
- Sécurité de niveau entreprise : les fonctionnalités robustes de sécurité et de conformité d'Azure protègent vos données à chaque étape.
Exemples de cas d'usage
- Analyse de sentiment : en décodant le sentiment derrière les retours clients, les avis ou les publications sur les réseaux sociaux, les entreprises identifient les axes d'amélioration, mesurent la satisfaction client et ajustent leurs stratégies pour enrichir l'expérience client.
- Extraction de phrases-clés : extraire les phrases-clés de documents, d'e-mails ou de tickets de support aide à repérer rapidement les sujets principaux, les tendances et les points de friction. À la clé : des temps de réponse plus courts, une meilleure allocation des ressources et des décisions plus éclairées.
- Détection de langue : détecter automatiquement la langue d'un texte permet de fluidifier les workflows multilingues, d'améliorer la communication avec les audiences internationales et d'assurer une localisation appropriée des contenus.
Pour commencer
De l'optimisation des coûts à l'automatisation de l'infrastructure, en passant par le renforcement de la sécurité et la conception d'architectures cloud, DoiT International couvre une expertise étendue sur de multiples domaines du cloud. Pour découvrir comment DoiT peut vous aider à mettre en œuvre l'IA et à moderniser d'autres pans de votre infrastructure cloud, contactez-nous ici et explorez nos solutions d'ingénierie cloud.