AWS Bedrock
Mis à jour le 29 juillet 2026
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, du léger Mistral 7B au puissant Mistral Large 3. L’intégration s’appuie sur le SDK AWS standard, boto3, et c’est précisément ce qui la rend intéressante pour une équipe déjà installée sur AWS : aucune clé fournisseur supplémentaire à faire circuler, aucun nouveau contrat à faire valider, et un modèle d’authentification que vos administrateurs maîtrisent déjà.
Le catalogue Bedrock est l’un des plus larges pour Mistral. Vous y trouvez Mistral Large 3 pour le raisonnement avancé et le multimodal, la gamme légère Ministral 3B / 8B / 14B, les versions antérieures Mistral Large 24.07 et 24.02 que l’on conserve souvent pour ne pas casser des prompts déjà calibrés, Mistral Small pour les traitements rapides et économiques, Mixtral 8x7B et son architecture Mixture-of-Experts, le modèle open-weight fondateur Mistral 7B, et Pixtral Large pour la vision et le multimodal. Cette profondeur permet de faire cohabiter dans une même application un modèle bon marché pour de la classification en masse et un modèle haut de gamme pour les synthèses délicates.
Prérequis
Trois conditions doivent être réunies avant le premier appel. Il vous faut d’abord un compte AWS dans une région supportant Bedrock, puis un IAM principal — utilisateur ou rôle — auquel sont accordées les deux permissions Bedrock nécessaires :
bedrock:InvokeModelbedrock:InvokeModelWithResponseStream
Enfin, les modèles Mistral doivent être activés dans la console Bedrock de votre région. Cette dernière condition surprend beaucoup d’équipes : les permissions IAM peuvent être parfaites, si le modèle n’a pas été activé dans la région où vous appelez, il reste hors de portée. L’activation se fait région par région, ce qui explique les échecs après une bascule de us-west-2 vers une autre zone.
Côté poste de travail, l’installation se limite au SDK AWS :
pip install boto3>=1.34.131
Puis à la configuration classique des identifiants :
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 uniformise l’accès aux différents fournisseurs derrière une seule méthode, converse(). Concrètement, le même code appelle un modèle Mistral ou un autre modèle du catalogue : seul l’identifiant change. Le contenu du message n’est pas une simple chaîne mais une liste de blocs, et les réglages de génération sont regroupés dans inferenceConfig plutôt qu’à plat.
import boto3
client = boto3.client("bedrock-runtime", region_name="us-west-2")
response = client.converse(
modelId="mistral.mistral-large-2512-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)
Les identifiants suivent le format mistral.<nom-modèle>-<version>:0. Comme ils sont versionnés, il vaut mieux les centraliser dans une constante plutôt que de les recopier à chaque appel :
# Modèles courants (identifiants versionnés — vérifiez la console Bedrock pour la liste à jour)
MODELS = {
"large_3": "mistral.mistral-large-2512-v1:0",
"small": "mistral.mistral-small-2402-v1:0",
"mixtral": "mistral.mixtral-8x7b-instruct-v0:1",
"mistral_7b": "mistral.mistral-7b-instruct-v0:2",
}
Pour les réponses longues, converse_stream renvoie un flux d’événements que vous parcourez au fur et à mesure. C’est ce qui permet à une interface d’afficher le texte pendant sa génération au lieu d’attendre plusieurs secondes devant un écran figé.
response = client.converse_stream(
modelId="mistral.mistral-large-2512-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)
Le SDK Mistral natif, et pourquoi l’éviter ici
Si vous tenez au client Mistral standard, un adapter permet de pointer vers l’endpoint Bedrock :
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. En pratique, choisir boto3 vous fait gagner la rotation automatique des credentials par rôle et l’observabilité sans une ligne de code supplémentaire.
Intégration avec l’écosystème AWS
Bedrock envoie automatiquement ses métriques à CloudWatch : Invocations pour le nombre d’appels, InvocationLatency pour la latence par requête, InputTokenCount et OutputTokenCount pour la consommation de tokens. Vous disposez donc d’un tableau de bord de coût et de performance sans instrumenter votre application. Un contrôle rapide depuis la ligne de commande suffit à vérifier la volumétrie d’une période donnée :
# 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
AWS propose par ailleurs ses propres guardrails, qui s’ajoutent à ceux de Mistral. Ils se branchent au niveau de l’appel, ce qui permet d’appliquer une politique de filtrage identique à tous les modèles du catalogue, quel que soit leur fournisseur :
response = client.converse(
modelId="mistral.mistral-large-2512-v1:0",
messages=[{"role": "user", "content": [{"text": "..."}]}],
guardrailConfig={
"guardrailIdentifier": "mon-guardrail-id",
"guardrailVersion": "1"
}
)
Différences avec l’API Mistral directe
| Aspect | API Mistral | AWS Bedrock |
|---|---|---|
| SDK | mistralai | boto3 |
| Auth | Clé API | IAM (SigV4) |
| API | chat.complete() | converse() |
| Streaming | chat.stream() | converse_stream() |
| Monitoring | Manuel | CloudWatch natif |
| Facturation | Mistral | AWS |
Ce tableau explique pourquoi un portage depuis l’API Mistral n’est jamais un simple changement d’URL : la forme des messages, la méthode appelée et le mécanisme d’authentification changent tous en même temps. Prévoyez une couche d’abstraction dans votre code si vous envisagez de servir les deux.
Points clés à retenir
- Bedrock utilise
boto3et l’APIconverse()— 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
- Les identifiants Bedrock sont versionnés (
mistral.mistral-large-2512-v1:0) et évoluent à chaque génération : vérifiez la valeur exacte dans la console Bedrock avant tout déploiement - Le streaming se fait via
converse_stream()avec des events