Skip to content
Learni
Voir tous les tutoriels
Azure

Comment utiliser Azure Cognitive Services en 2026

Read in English

Introduction

Azure Cognitive Services est une suite de services IA pré-entraînés de Microsoft Azure, permettant d'ajouter des capacités comme la reconnaissance d'images, l'analyse de texte ou la synthèse vocale sans expertise en machine learning. En 2026, ces services, renommés Azure AI Services, sont essentiels pour les développeurs cherchant à booster leurs applications avec de l'IA scalable et sécurisée.

Pourquoi c'est crucial ? Imaginez analyser automatiquement le contenu d'une photo uploadée par un utilisateur ou détecter le sentiment d'un commentaire client en temps réel. Cela accélère le développement, réduit les coûts (pay-as-you-go) et respecte les normes RGPD via Azure. Ce tutoriel beginner vous guide pas à pas pour créer une ressource, obtenir vos clés et appeler deux APIs phares via REST en Node.js : Computer Vision pour décrire une image et Text Analytics pour l'analyse de sentiment. À la fin, vous aurez un script fonctionnel, prêt à déployer. Pas de SDK complexes, juste du HTTP pur pour bien comprendre les bases.

Prérequis

  • Un compte Azure gratuit (crédit de 200$ offert).
  • Node.js 20+ installé (téléchargez ici).
  • Un éditeur de code comme VS Code.
  • Connaissances basiques en JavaScript et HTTP (fetch).
  • 10 minutes pour la création de ressource Azure.

Initialiser le projet Node.js

terminal
mkdir azure-cognitive-demo
cd azure-cognitive-demo
npm init -y
npm install dotenv

Cette commande crée un dossier projet, initialise package.json et installe dotenv pour gérer les secrets comme les clés API. Évitez d'installer des SDK lourds pour ce tutoriel REST pur. Exécutez dans un terminal pour un setup instantané.

Créer votre ressource Azure Cognitive Services

  1. Allez sur portal.azure.com et connectez-vous.
  2. Cliquez Créer une ressource > Recherchez Azure AI Services (ex Cognitive Services multi-service).
  3. Choisissez votre région (ex: France Central), un nom unique (ex: moncogserv2026), le niveau gratuit F0.
  4. Une fois déployée (2 min), notez l'Endpoint (ex: https://francecentral.api.cognitive.microsoft.com/) et les Clés (Key 1/Key 2) dans Clés et point de terminaison.
Astuce : Utilisez Key 1 pour les tests. Remplacez-la régulièrement pour la sécurité.

Configurer les variables d'environnement

.env
ENDPOINT=https://votre-region.api.cognitive.microsoft.com/
KEY=votre-cle-api-ici

Créez ce fichier .env à la racine du projet avec votre endpoint et clé réels (sans guillemets). Dotenv le charge automatiquement. Piège : Ne commitez jamais .env sur Git ; ajoutez-le à .gitignore pour éviter les fuites de clés.

Script d'analyse d'image avec Computer Vision

vision.js
require('dotenv').config();

const endpoint = process.env.ENDPOINT;
const key = process.env.KEY;
const imageUrl = 'https://upload.wikimedia.org/wikipedia/commons/thumb/1/14/Seattle_-_Pike_Place_Market.jpg/320px-Seattle_-_Pike_Place_Market.jpg';

async function analyzeImage() {
  try {
    const response = await fetch(`${endpoint}/vision/v3.2/analyze?visualFeatures=Description,Objects&details=Landmarks&language=fr`, {
      method: 'POST',
      headers: {
        'Ocp-Apim-Subscription-Key': key,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        url: imageUrl
      })
    });

    if (!response.ok) {
      throw new Error(`Erreur: ${response.status} ${response.statusText}`);
    }

    const data = await response.json();
    console.log('Description de l\'image:');
    console.log(data.description.captions[0].text);
    console.log('\nObjets détectés:');
    data.description.objects?.forEach(obj => console.log(`- ${obj.object}`));
  } catch (error) {
    console.error('Erreur:', error.message);
  }
}

analyzeImage();

Ce script envoie une image URL publique à Computer Vision pour générer une description en français et lister les objets. Les headers Ocp-Apim-Subscription-Key sont obligatoires pour l'auth. Piège : Vérifiez l'endpoint exact ; une faute = 401 Unauthorized.

Tester l'analyse d'image

Exécutez node vision.js. Sortie attendue :

Description : Un marché en plein air avec des étals de fruits et légumes frais, des gens et le marché Pike Place à Seattle.
Objets : pomme, banane, personne...

Si erreur 429 : quota dépassé (F0 limité). Passez à S0 payant si besoin. Cette API v3.2 est stable pour les débutants.

Script d'analyse de sentiment avec Text Analytics

sentiment.js
require('dotenv').config();

const endpoint = process.env.ENDPOINT;
const key = process.env.KEY;
const documents = [
  {
    id: '1',
    language: 'fr',
    text: 'Ce produit est génial ! Je l\'adore et le recommande.'
  },
  {
    id: '2',
    language: 'fr',
    text: 'Service nul, déçu et en colère.'
  }
];

async function analyzeSentiment() {
  try {
    const response = await fetch(`${endpoint}/text/analytics/v3.1/sentiment`, {
      method: 'POST',
      headers: {
        'Ocp-Apim-Subscription-Key': key,
        'Content-Type': 'application/json',
        'Apim-Request-Id': 'unique-id-' + Date.now()
      },
      body: JSON.stringify({
        documents
      })
    });

    if (!response.ok) {
      throw new Error(`Erreur: ${response.status} ${response.statusText}`);
    }

    const data = await response.json();
    data.documents.forEach(doc => {
      console.log(`Document ${doc.id}: ${doc.confidenceScores.positive.toFixed(2)} positif, ${doc.confidenceScores.negative.toFixed(2)} négatif`);
    });
  } catch (error) {
    console.error('Erreur:', error.message);
  }
}

analyzeSentiment();

Ce code analyse le sentiment de deux textes français, renvoyant des scores positifs/négatifs. L'header Apim-Request-Id aide au debugging. Piège : Le champ 'language' est requis ; sans lui, erreur 400.

Exécuter et interpréter les résultats

  • node sentiment.jsDocument 1: 0.99 positif, Document 2: 0.98 négatif.
Ces services partagent la même clé multi-service. Échellez en ajoutant plus de documents ou features comme 'keyPhrases'.

Ajouter au package.json pour exécution facile

package.json
{
  "name": "azure-cognitive-demo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "vision": "node vision.js",
    "sentiment": "node sentiment.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "dotenv": "^16.4.5"
  }
}

Mettez à jour package.json avec des scripts npm pour lancer facilement : npm run vision. Cela rend le projet pro et reproductible. Piège : Vérifiez les versions ; dotenv >=16 pour Node 20+.

Script combiné pour les deux services

demo.js
require('dotenv').config();

const endpoint = process.env.ENDPOINT;
const key = process.env.KEY;

async function runDemo() {
  console.log('=== Azure Cognitive Services Demo ===');

  // Vision
  const imageUrl = 'https://upload.wikimedia.org/wikipedia/commons/thumb/1/14/Seattle_-_Pike_Place_Market.jpg/320px-Seattle_-_Pike_Place_Market.jpg';
  const visionRes = await fetch(`${endpoint}/vision/v3.2/analyze?visualFeatures=Description&language=fr`, {
    method: 'POST',
    headers: { 'Ocp-Apim-Subscription-Key': key, 'Content-Type': 'application/json' },
    body: JSON.stringify({ url: imageUrl })
  });
  const visionData = await visionRes.json();
  console.log('Vision:', visionData.description.captions[0].text);

  // Sentiment
  const docs = [{ id: '1', language: 'fr', text: 'Super tutoriel !' }];
  const sentRes = await fetch(`${endpoint}/text/analytics/v3.1/sentiment`, {
    method: 'POST',
    headers: { 'Ocp-Apim-Subscription-Key': key, 'Content-Type': 'application/json' },
    body: JSON.stringify({ documents: docs })
  });
  const sentData = await sentRes.json();
  console.log('Sentiment:', sentData.documents[0].sentiment);
}

runDemo().catch(console.error);

Ce script combine les deux APIs en une exécution async. Idéal pour demos. Utilisez .catch pour les erreurs globales. Piège : Les appels async parallèles ok, mais sérialisez si quotas serrés.

Bonnes pratiques

  • Sécurisez les clés : Utilisez Azure Key Vault en prod, jamais hardcodées.
  • Rate limiting : Implémentez retry avec exponential backoff pour 429.
  • Validation inputs : Vérifiez URLs/taille avant envoi.
  • Monitoring : Activez Azure Application Insights pour logs.
  • Langue : Spécifiez toujours 'language=fr' pour résultats localisés.

Erreurs courantes à éviter

  • 401 Unauthorized : Clé/endpoint faux ; recopie depuis portal.
  • 400 Bad Request : Corps JSON malformé ou 'language' manquant.
  • Fichier .env ignoré : Vérifiez require('dotenv').config() avant usage.
  • Quota F0 épuisé : Passez à S0 (0,001$/1000 transactions).

Pour aller plus loin