N Completions et Stop Sequences
Générer plusieurs réponses en une seule requête
Le paramètre N completions permet de demander au modèle de générer plusieurs réponses à partir d’un même prompt en un seul appel API. C’est un outil puissant pour comparer des alternatives, augmenter vos chances d’obtenir une réponse optimale ou alimenter un processus de sélection automatique.
Le paramètre n : comment ça marche
Lorsque vous définissez n=5, le modèle génère 5 réponses indépendantes pour votre prompt. Chaque réponse est un choix (choice) distinct dans l’objet de retour.
Point important pour la facturation : les tokens d’entrée (votre prompt) ne sont facturés qu’une seule fois, mais les tokens de sortie sont facturés pour chaque completion. Avec n=5, vous payez 5 fois les tokens de sortie.
from mistralai import Mistral
client = Mistral(api_key="votre-cle-api")
response = client.chat.complete(
model="mistral-large-latest",
messages=[
{"role": "user", "content": "Proposez un slogan pour une marque de café bio français."}
],
n=5,
temperature=0.8
)
for i, choice in enumerate(response.choices):
print(f"Option {i+1} : {choice.message.content}")
Ce code produira 5 slogans différents, vous permettant de choisir le meilleur.
Quand utiliser N completions
- Génération créative : obtenir plusieurs options pour un slogan, un titre, un nom de produit
- Classification avec vote : générer N classifications et prendre la réponse majoritaire
- Exploration : tester plusieurs approches d’un même problème
- Contrôle qualité : vérifier la cohérence du modèle en comparant ses réponses
Limites à connaître
- Tous les modèles Mistral ne supportent pas le paramètre
nsupérieur à 1. Vérifiez la documentation du modèle que vous utilisez. - La latence augmente avec
ncar le modèle génère plus de tokens au total - Combinez toujours
n > 1avec une température suffisante (0.5+), sinon les réponses seront quasi identiques
Les stop sequences : contrôler la fin de la génération
Les stop sequences sont des chaînes de caractères qui forcent le modèle à s’arrêter dès qu’il les génère. C’est un mécanisme essentiel pour contrôler la longueur et le format des réponses.
response = client.chat.complete(
model="mistral-large-latest",
messages=[
{"role": "user", "content": "Listez les jours de la semaine, un par ligne."}
],
stop=["Samedi"]
)
Dans cet exemple, le modèle s’arrêtera dès qu’il générera le mot « Samedi », produisant une liste tronquée. C’est un exemple simplifié — en pratique, les stop sequences sont plus utiles avec des délimiteurs structurels.
Cas d’usage pratiques des stop sequences
Extraire une seule section :
response = client.chat.complete(
model="mistral-large-latest",
messages=[
{"role": "user", "content": """Analysez ce produit :
## Points forts
(votre analyse ici)
## Points faibles
(votre analyse ici)
## Conclusion
(votre analyse ici)"""}
],
stop=["## Points faibles"]
)
# Le modèle s'arrête après les points forts
Limiter la génération à un bloc JSON :
response = client.chat.complete(
model="mistral-large-latest",
messages=[
{"role": "user", "content": "Retournez les métadonnées de cet article en JSON."},
{"role": "assistant", "content": "{"}
],
stop=["}"]
)
# Le modèle génère le contenu JSON et s'arrête à la fermeture
Empêcher le modèle de continuer après sa réponse :
response = client.chat.complete(
model="mistral-large-latest",
messages=[
{"role": "user", "content": "Répondez à la question suivante par OUI ou NON uniquement.\nLa Terre est-elle ronde ?"}
],
stop=["\n"]
)
# Le modèle s'arrête après la première ligne (OUI ou NON)
Le paramètre max_tokens
Complémentaire aux stop sequences, le paramètre max_tokens fixe une limite dure sur le nombre de tokens de sortie :
response = client.chat.complete(
model="mistral-large-latest",
messages=[
{"role": "user", "content": "Résumez l'histoire de France."}
],
max_tokens=200
)
Attention : max_tokens coupe la réponse brutalement, potentiellement au milieu d’une phrase. Il est préférable de l’utiliser comme filet de sécurité plutôt que comme moyen principal de contrôler la longueur. Préférez les instructions dans le prompt (« répondez en 3 phrases ») combinées à un max_tokens généreux.
Combiner les paramètres
Voici un exemple qui combine N completions, stop sequences et max_tokens :
response = client.chat.complete(
model="mistral-large-latest",
messages=[
{
"role": "system",
"content": "Vous générez des titres d'articles de blog. Un seul titre par réponse."
},
{
"role": "user",
"content": "Thème : productivité au travail en 2026"
}
],
n=5,
temperature=0.8,
max_tokens=50,
stop=["\n"]
)
titres = [choice.message.content.strip() for choice in response.choices]
for i, titre in enumerate(titres):
print(f"{i+1}. {titre}")
Ce code génère 5 titres différents, chacun limité à une seule ligne et 50 tokens maximum.
Points clés à retenir
- Le paramètre
ngénère plusieurs réponses en un seul appel (tokens d’entrée facturés une fois) - Combinez
n > 1avec une température suffisante pour obtenir de vraies variations - Les stop sequences arrêtent la génération à un délimiteur précis
max_tokensest un filet de sécurité, pas un contrôle de longueur principal- Combinez ces paramètres pour un contrôle fin de la génération