Skip to content
Learni
View all tutorials
Intelligence Artificielle

Comment intégrer l'API Mistral pour débutants en 2026

Introduction

L'API Mistral, développée par Mistral AI, permet d'accéder à des modèles de langage puissants comme Mistral Large ou Mistral Nemo, directement depuis vos applications. En 2026, elle est incontournable pour créer des chatbots, assistants virtuels ou outils d'automatisation IA sans infrastructure lourde.

Pourquoi l'utiliser ? Elle offre un excellent rapport qualité-prix, une latence faible et une compatibilité OpenAI-like, facilitant la migration. Ce tutoriel beginner vous guide pas à pas : obtention de clé API, premiers appels, streaming et functions. À la fin, vous aurez un chatbot fonctionnel, prêt à scaler.

Valeur concrète : économisez des heures de debug en copiant nos codes complets. Analogie : comme un moteur turbo pour vos apps, Mistral propulse l'IA sans surchauffe serveur.

Prérequis

  • Node.js 20+ installé
  • Compte gratuit sur console.mistral.ai avec clé API générée
  • Éditeur de code (VS Code recommandé)
  • Connaissances basiques en JavaScript/TypeScript

Initialiser le projet et installer le SDK

terminal
mkdir mistral-chatbot
cd mistral-chatbot
npm init -y
npm install @mistralai/mistralai dotenv
typescript --init
npm install -D @types/node ts-node

Cette commande crée un projet Node.js, installe le SDK officiel Mistral pour une intégration fluide et dotenv pour gérer les secrets. Évitez d'exposer votre clé API en dur : utilisez toujours des variables d'environnement pour la sécurité.

Configurer les variables d'environnement

Créez un fichier .env à la racine avec votre clé API obtenue sur console.mistral.ai. Ajoutez .env à .gitignore pour ne pas commiter les secrets.

Fichier de configuration .env

.env
MISTRAL_API_KEY=sk-proj-votre-cle-api-ici

Stockez uniquement la clé API ici. Remplacez 'sk-proj-votre-cle-api-ici' par votre vraie clé. Ce fichier n'est pas versionné, protégeant vos credentials en production.

Premier appel chat completion

chat-simple.ts
import 'dotenv/config';
import { Mistral } from '@mistralai/mistralai';

const client = new Mistral({ apiKey: process.env.MISTRAL_API_KEY! });

async function simpleChat() {
  const chatResponse = await client.chat.completions.create({
    model: 'mistral-tiny',
    messages: [
      {
        role: 'user',
        content: 'Explique-moi l\'IA en 3 phrases simples.'
      }
    ],
  });

  console.log(chatResponse.choices[0].message.content);
}

simpleChat().catch(console.error);

Ce code initialise le client Mistral et envoie un message user au modèle 'mistral-tiny' (rapide et gratuit). Il affiche la réponse. Piège : toujours await les promesses async pour éviter les erreurs silencieuses.

Exécuter le premier script

Lancez avec npx ts-node chat-simple.ts. Vous verrez une explication d'IA. Testez avec d'autres prompts pour valider.

Chat avec messages multiples et system prompt

chat-conversation.ts
import 'dotenv/config';
import { Mistral } from '@mistralai/mistralai';

const client = new Mistral({ apiKey: process.env.MISTRAL_API_KEY! });

async function conversation() {
  const chatResponse = await client.chat.completions.create({
    model: 'open-mistral-nemo',
    messages: [
      {
        role: 'system',
        content: 'Tu es un assistant expert en programmation.'
      },
      {
        role: 'user',
        content: 'Comment créer une boucle for en JS ?'
      },
      {
        role: 'assistant',
        content: 'Une boucle for basique est : for (let i=0; i<5; i++) { console.log(i); }'
      },
      {
        role: 'user',
        content: 'Explique le rôle de i++.'
      }
    ],
  });

  console.log(chatResponse.choices[0].message.content);
}

conversation().catch(console.error);

Ajoute un system prompt pour contextualiser et une conversation multi-turns. Modèle 'open-mistral-nemo' est plus avancé. Analogie : comme un fil de discussion, maintient le contexte pour réponses cohérentes.

Implémenter le streaming pour réponses en temps réel

chat-streaming.ts
import 'dotenv/config';
import { Mistral } from '@mistralai/mistralai';

const client = new Mistral({ apiKey: process.env.MISTRAL_API_KEY! });

async function streamingChat() {
  const stream = await client.chat.completions.create({
    model: 'mistral-small',
    messages: [{ role: 'user', content: 'Raconte une blague sur les devs.' }],
    stream: true,
  });

  for await (const chunk of stream) {
    process.stdout.write(chunk.choices[0]?.delta?.content || '');
  }
  console.log('\n');
}

streamingChat().catch(console.error);

Active stream: true pour recevoir la réponse token par token, idéal pour UX fluide comme ChatGPT. Utilisez for await pour itérer. Piège : gérez les chunks vides pour éviter logs sales.

Gérer les tools (functions calling)

Avancé pour beginners : Mistral supporte les tools comme OpenAI.

Appel avec tools pour extraction de données

chat-tools.ts
import 'dotenv/config';
import { Mistral } from '@mistralai/mistralai';

const client = new Mistral({ apiKey: process.env.MISTRAL_API_KEY! });

const tools = [{
  type: 'function',
  function: {
    name: 'get_weather',
    description: 'Obtient la météo pour une ville',
    parameters: {
      type: 'object',
      properties: {
        city: { type: 'string' }
      },
      required: ['city']
    }
  }
}];

async function toolsChat() {
  const chatResponse = await client.chat.completions.create({
    model: 'mistral-large-latest',
    messages: [{ role: 'user', content: 'Quelle est la météo à Paris ?' }],
    tools,
    tool_choice: 'auto',
  });

  console.log('Tool calls:', chatResponse.choices[0].message.tool_calls);
}

toolsChat().catch(console.error);

Définit une tool 'get_weather' ; le modèle décide d'appeler. En prod, implémentez la fonction réelle. Utile pour agents IA. Note : 'mistral-large-latest' nécessite crédits payants.

Serveur Express pour chatbot web

server.ts
import 'dotenv/config';
import express from 'express';
import cors from 'cors';
import { Mistral } from '@mistralai/mistralai';

const app = express();
app.use(cors());
app.use(express.json());

const client = new Mistral({ apiKey: process.env.MISTRAL_API_KEY! });

app.post('/chat', async (req, res) => {
  try {
    const { message } = req.body;
    const response = await client.chat.completions.create({
      model: 'mistral-tiny',
      messages: [{ role: 'user', content: message }],
    });
    res.json({ reply: response.choices[0].message.content });
  } catch (error) {
    res.status(500).json({ error: 'Erreur IA' });
  }
});

app.listen(3000, () => console.log('Serveur sur port 3000'));

Installez npm i express cors avant. Crée un endpoint POST /chat pour API web. Ajoute try/catch pour robustesse. Testez avec curl ou Postman.

Bonnes pratiques

  • Rate limiting : Respectez les quotas Mistral (ex: 100 req/min) avec p-limit.
  • Sécurité : Validez inputs avec Zod pour éviter injections.
  • Caching : Stockez réponses récurrentes en Redis.
  • Monitoring : Loggez tokens utilisés (usage dans response) pour optimiser coûts.
  • Modèles : tiny pour tests, large pour prod.

Erreurs courantes à éviter

  • Oublier await : provoque undefined responses.
  • Clé API invalide : Vérifiez format 'sk-proj-...' et crédits.
  • Pas de stream: true géré : UI bloquée en temps réel.
  • Ignorer max_tokens : Factures surprises (définissez à 1024).

Pour aller plus loin

  • Docs officielles : Mistral API Docs
  • SDK avancé : Fine-tuning et embeddings
  • Intégrez avec Next.js ou LangChain
Découvrez nos formations IA Learni pour maîtriser les agents autonomes.