Aller au contenu principal

Cas d'Usage Concrets des Predicted Outputs

Trois familles de cas d’usage

Les Predicted Outputs brillent dans trois grandes catégories de tâches en production : l’édition de code, la modification de texte, et le remplissage de templates. Dans cette leçon, vous découvrirez des exemples concrets pour chaque catégorie, avec les patterns à reproduire dans vos propres applications.

Cas 1 : Édition de code

C’est le cas d’usage le plus naturel. Vous avez un fichier source existant et vous voulez y apporter une modification ciblée. Le modèle n’a besoin de régénérer que les lignes modifiées.

Renommer une variable

code_existant = """
def calculate_total(items):
    tax_rate = 0.20
    subtotal = sum(item.price for item in items)
    tax = subtotal * tax_rate
    total = subtotal + tax
    return total
"""

prompt = (
    "Renommez la variable 'tax_rate' en 'vat_rate' partout dans ce code. "
    "Répondez uniquement avec le code modifié."
)

response = client.chat.complete(
    model="codestral-latest",
    messages=[
        {"role": "user", "content": prompt},
        {"role": "user", "content": code_existant}
    ],
    prediction={"type": "content", "content": code_existant}
)

Le modèle sait que la structure du code reste identique. Il ne recalcule que les tokens affectés par le renommage.

Changer un import ou une dépendance

code_existant = """
from flask import Flask, request, jsonify
from flask_cors import CORS

app = Flask(__name__)
CORS(app)

@app.route('/api/predict', methods=['POST'])
def predict():
    data = request.get_json()
    result = model.predict(data['input'])
    return jsonify({'prediction': result})
"""

prompt = (
    "Migrez ce code de Flask vers FastAPI. "
    "Conservez la même logique métier. "
    "Répondez uniquement avec le code."
)

response = client.chat.complete(
    model="codestral-latest",
    messages=[
        {"role": "user", "content": prompt},
        {"role": "user", "content": code_existant}
    ],
    prediction={"type": "content", "content": code_existant}
)

Cas 2 : Modification de texte

Les documents longs avec des modifications ponctuelles sont un terrain idéal pour les Predicted Outputs.

Mise à jour d’une section dans un rapport

rapport = """
# Rapport trimestriel Q4 2025

## Résumé exécutif
Le chiffre d'affaires a atteint 2,3M EUR au Q4 2025, en hausse de 15 %
par rapport au Q3. La marge opérationnelle s'établit à 22 %.

## Performances commerciales
L'équipe commerciale a signé 47 nouveaux contrats, dont 12 grands comptes.
Le panier moyen progresse de 8 % à 49 000 EUR.

## Perspectives Q1 2026
Nous anticipons une croissance de 10 % portée par le lancement du
produit Enterprise et l'expansion sur le marché allemand.
"""

prompt = (
    "Mettez à jour ce rapport pour le Q1 2026 avec les données suivantes : "
    "CA = 2,7M EUR (+17 %), marge = 24 %, 53 nouveaux contrats, "
    "panier moyen = 51 000 EUR (+4 %). "
    "Pour les perspectives Q2, mentionnez l'expansion au Benelux. "
    "Gardez exactement la même structure."
)

response = client.chat.complete(
    model="mistral-large-latest",
    messages=[
        {"role": "user", "content": prompt},
        {"role": "user", "content": rapport}
    ],
    prediction={"type": "content", "content": rapport}
)

Cas 3 : Remplissage de templates

Quand vous avez un template fixe où seules quelques valeurs changent, la prédiction est quasi parfaite :

template_email = """
Bonjour {nom},

Suite à notre échange du {date}, je vous confirme les points suivants :

1. Le projet {projet} démarrera le {date_debut}
2. L'équipe sera composée de {nb_personnes} personnes
3. Le budget prévisionnel s'élève à {budget} EUR HT

Je reste à votre disposition pour toute question.

Cordialement,
{signataire}
"""

# Remplir partiellement le template pour la prédiction
prediction = template_email.replace("{nom}", "M. Dupont")
prediction = prediction.replace("{signataire}", "Marie Martin")

prompt = (
    "Complétez cet email avec les informations suivantes : "
    "date = 28 mars 2026, projet = Migration Cloud, "
    "date_debut = 15 avril 2026, nb_personnes = 5, "
    "budget = 85 000."
)

response = client.chat.complete(
    model="mistral-large-latest",
    messages=[
        {"role": "user", "content": prompt},
        {"role": "user", "content": prediction}
    ],
    prediction={"type": "content", "content": prediction}
)

Mesurer le gain réel

Pour évaluer l’efficacité des Predicted Outputs dans votre cas d’usage, comparez systématiquement avec et sans prédiction :

import time

# Sans prédiction
start = time.time()
resp_normal = client.chat.complete(
    model="mistral-large-latest",
    messages=messages
)
time_normal = time.time() - start

# Avec prédiction
start = time.time()
resp_predicted = client.chat.complete(
    model="mistral-large-latest",
    messages=messages,
    prediction={"type": "content", "content": contenu_predit}
)
time_predicted = time.time() - start

gain = (1 - time_predicted / time_normal) * 100
print(f"Sans prédiction : {time_normal:.2f}s")
print(f"Avec prédiction : {time_predicted:.2f}s")
print(f"Gain de latence  : {gain:.1f} %")

Le gain varie selon le pourcentage de contenu correctement prédit. Pour une modification de 5 % d’un fichier de 500 lignes, attendez-vous à un gain de 60 à 80 % sur la latence.

Points clés à retenir

  • L’édition de code (renommage, migration, refactoring léger) est le cas d’usage principal
  • La modification de texte (rapports, documents) profite de la structure stable
  • Les templates avec quelques valeurs dynamiques offrent le meilleur ratio gain/effort
  • Mesurez toujours le gain réel dans votre contexte avant de déployer en production