Aller au contenu principal

AWS Bedrock

Mistral sur Amazon Bedrock

Amazon Bedrock est le service managé d’AWS pour accéder à des modèles de fondation via une API unifiée. Mistral AI y propose une gamme complète de modèles, du léger Mistral 7B au puissant Mistral Large 3. L’intégration utilise le SDK AWS standard (boto3), ce qui facilite l’adoption pour les équipes déjà présentes sur AWS.

Modèles disponibles

Bedrock propose l’une des sélections les plus larges de modèles Mistral :

  • Mistral Large 3 — raisonnement avancé, multimodal
  • Ministral 3B / 8B / 14B — gamme de modèles légers
  • Mistral Large 24.07 / 24.02 — versions antérieures
  • Mistral Small — rapide et économique
  • Mixtral 8x7B — architecture Mixture-of-Experts
  • Mistral 7B — le modèle open-weight fondateur
  • Pixtral Large — vision et multimodal

Prérequis

Compte et permissions AWS

  1. Un compte AWS avec une région supportant Bedrock
  2. Un IAM principal (utilisateur ou rôle) avec les permissions Bedrock :
    • bedrock:InvokeModel
    • bedrock:InvokeModelWithResponseStream
  3. Les modèles Mistral activés dans la console Bedrock de votre région

Installation

pip install boto3>=1.34.131

Configuration AWS CLI

aws configure
# AWS Access Key ID: votre-access-key
# AWS Secret Access Key: votre-secret-key
# Default region name: us-west-2
# Default output format: json

Appel via l’API Converse

Bedrock utilise l’API Converse pour uniformiser l’accès aux différents modèles :

import boto3

client = boto3.client("bedrock-runtime", region_name="us-west-2")

response = client.converse(
    modelId="mistral.mistral-large-2407-v1:0",
    messages=[
        {
            "role": "user",
            "content": [{"text": "Explique le concept de VPC en AWS en 5 points."}]
        }
    ],
    inferenceConfig={
        "temperature": 0.3,
        "maxTokens": 1024
    }
)

# Extraire la réponse
output = response["output"]["message"]["content"][0]["text"]
print(output)

Identifiants de modèles Bedrock

Les modèles suivent le format mistral.<nom-modèle>-<version>:0 :

# Modèles courants
MODELS = {
    "large_3":     "mistral.mistral-large-2407-v1:0",
    "small":       "mistral.mistral-small-2402-v1:0",
    "mixtral":     "mistral.mixtral-8x7b-instruct-v0:1",
    "mistral_7b":  "mistral.mistral-7b-instruct-v0:2",
}

Streaming

Pour les réponses longues, utilisez converse_stream :

response = client.converse_stream(
    modelId="mistral.mistral-large-2407-v1:0",
    messages=[
        {
            "role": "user",
            "content": [{"text": "Génère un guide complet sur les Lambda functions."}]
        }
    ],
    inferenceConfig={"maxTokens": 2048}
)

for event in response["stream"]:
    if "contentBlockDelta" in event:
        text = event["contentBlockDelta"]["delta"].get("text", "")
        print(text, end="", flush=True)

Appel avec le SDK Mistral natif

Si vous préférez utiliser le client Mistral standard plutôt que boto3, c’est possible via un adapter :

import os
from mistralai import Mistral

# Configuration pour Bedrock
client = Mistral(
    api_key=os.environ.get("AWS_SECRET_ACCESS_KEY", ""),
    server_url=f"https://bedrock-runtime.us-west-2.amazonaws.com"
)

Cependant, l’approche boto3 est recommandée sur AWS car elle s’intègre nativement avec IAM, CloudWatch et les autres services AWS.

Intégration avec l’écosystème AWS

CloudWatch Metrics

Bedrock envoie automatiquement des métriques à CloudWatch :

  • Invocations — nombre d’appels
  • InvocationLatency — latence par requête
  • InputTokenCount / OutputTokenCount — consommation de tokens
# Consulter les métriques via AWS CLI
aws cloudwatch get-metric-statistics \
    --namespace "AWS/Bedrock" \
    --metric-name "Invocations" \
    --start-time 2026-04-01T00:00:00Z \
    --end-time 2026-04-03T23:59:59Z \
    --period 3600 \
    --statistics Sum

Guardrails Bedrock

AWS Bedrock propose ses propres guardrails en plus de ceux de Mistral :

response = client.converse(
    modelId="mistral.mistral-large-2407-v1:0",
    messages=[{"role": "user", "content": [{"text": "..."}]}],
    guardrailConfig={
        "guardrailIdentifier": "mon-guardrail-id",
        "guardrailVersion": "1"
    }
)

Différences avec l’API Mistral directe

AspectAPI MistralAWS Bedrock
SDKmistralaiboto3
AuthClé APIIAM (SigV4)
APIchat.complete()converse()
Streamingchat.stream()converse_stream()
MonitoringManuelCloudWatch natif
FacturationMistralAWS

Points clés à retenir

  • Bedrock utilise boto3 et l’API converse() — pas le client Mistral standard
  • L’authentification passe par IAM, pas par une clé API Mistral
  • Les métriques CloudWatch sont envoyées automatiquement (latence, tokens, invocations)
  • Activez les modèles dans la console Bedrock avant de les utiliser
  • Le streaming se fait via converse_stream() avec des events